Java中关于字符串的几种"空"的区别
首先需要明确字符串中,null和""这种空字符串之间的区别:
null表示的是一个对象的值为空,String str = null是指str变量的并没有对象的引用,也就是说str并没有指向任何的内存空间。所以它并不是一个字符串。
而String str1 = "",表示的是一个空字符串,只不过它的长度为零,但是它是有内存分配空间的。
明白了以上的概念,就可以通过String中的几个方法来进行判读了。
判断的方法可以采用str.isEmpty()、str.length()<=0、str.equals("")等方法来判断,但是在使用String对象中的方法时,首先要基于str!=null,否则会报java.lang.NullPointerException的异常。所以在判断str之前需要加上一个str!=null的判断。
除此之外,还可以通过org.apache.commons.lang包中的StringUtils中的静态方法StringUtils.isBlank(str),通过这个方法,既可以判断str为null,也可以判断str为空字符串。但是StringUtils.isBlank()中判断的是str经过trim()后的值,也就是说虽然str2 = " "此时的length = 3,所以不是空字符串,但是经过trim()后的结果却是""空字符串了。所以还是需要在实际中选择合适的方法。
String str = " ";
System.out.println(StringUtils.isBlank(str));
System.out.println(str.isEmpty());
System.out.println(str.length()==0);
System.out.println(str.equals(""));
结果是
true
false
false
false