package mytest;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String aString=new String("");
String bString=new String("");
String cString=null;
String dString="";
String eString="";
System.out.println("1xxxxx"+String.valueOf(aString==""));
System.out.println("2xxxxx"+String.valueOf(aString==bString));
System.out.println("3xxxxx"+String.valueOf(aString==cString));
System.out.println("4xxxxx"+String.valueOf(aString.equals("")));
System.out.println("5xxxxx"+String.valueOf((aString.equals(cString))));
System.out.println("6xxxxx"+String.valueOf(aString.equals(bString)));
System.out.println("6xxxxx"+String.valueOf(dString==eString));
}
}
首先要知道java里面的空字符串如果是静态字符串的话,也就是使用String a=“”;那么这样指向的其实都是同一个对象。而==是用来判断对象的,equals用来判断值,所以上面的结果会返回:
1xxxxxfalse
2xxxxxfalse
3xxxxxfalse
4xxxxxtrue
5xxxxxfalse
6xxxxxtrue
6xxxxxtrue
现在回到题目了,判断mysql返回为空的字段怎么判断,开始的时候代码是这么写的:
String keywords="";
keywords=result_clusterRate.get(i)[3];
if(keywords==null||keywords==""){
keywords="其他";
//System.out.println(cluster+":"+keywords);
}
这里的resultRate.get函数在空字段的时候会返回空字符串(而不是null),但是他实际上相当于是new了一个空字符串,所以这么写是错的。
判断mysql返回的字段是否为空,还是应该使用equals方法,或者使用keywords.length()<=0的方式。