I want to check for null or empty specifically in my code. Does empty and null are same for StringBuilder
in Java?
For example:
StringBuilde
In Java, null
is a reference literal. If a variable is null
then is not referring to anything.
So, if you have StringBuilder s = null
, that means that s
is of type StringBuilder
but it is not referring to a StringBuilder
instance.
If you have a non-null
reference then you are free to call methods on the referred object. In the StringBuilder
class, one such method is length()
. In fact if you were to call length()
using a null
reference then the Java runtime will throw a NullPointerException
.
Hence, this code is quite common:
If (s == null || s.length() == 0/*empty if the length is zero*/){
// do something
It relies on the fact that evaluation of ||
is from left to right and stops once it reaches the first true
condition.
Null mean, there are no object in the heap for that reference variable. This is common to all java object, not specific to StringBuilder
and Empty means, ""
.
In your code, you have created a StringBuilder object, so checking null is redundant. And, You can check empty by using isEmpty()
method in from java String api
if(state.tostring().isEmpty()) {
//
}
And checking null is correct. Find the corrected version here
if (state == null) {
// ...bla 1
} else if (state.tostring().isEmpty()) {
//... bla 2
}
Your second if
condition will throw NullPointerException
, if the state
is null. So if
should be nested with if else
No, null
and empty
are different for StringBuilder
.
StringBuilder nullBuilder = null;
if(nullBuilder == null) {
System.out.println("Builder is null");
}
&
StringBuilder emptyBuilder = new StringBuilder("");
if(emptyBuilder == null || emptyBuilder.toString().equals("")) {
System.out.println("Builder is empty");
}
No. empty
means, that there are no characters in the StringBuilder. null
means that there is no StringBuilder object at all.
A variable is only null
if it has a reference type (for example String, StringBuilder, Set, as a thumbrule: all capitalized types) and it is not initialised yet or has been set explicitly to null
.
You can try like this
StringBuilder state = new StringBuilder();
if(StringUtils.isNotBlank(state .toString())){
//this will check for null, " ", ""
}
The below code may help you,
StringBuffer sb = new StringBuffer();
String str = sb.toString();
if(!"".equals(str)) {
System.out.println("String : " + str);
} else {
System.out.println("Empty Builder");
}