1.==比较的是变量本身,对应引用变量来说,比较的是引用地址值,而非引用指向的对象;
2.字符串和基本类型包装类都是引用类型
3.两个字符串比较只能使用equals()方法
String s="s";
String ss="s";
String sss=new String("s");
System.out.println(s==ss);//true,s和ss是常量池中的同一个地址
System.out.println(s==sss);//sss不在常量池中
4.两个基本类型包装类比较、基本类型与包装类比较
Integer a = new Integer(1);
Integer aa = new Integer(1);
System.out.println(a==aa);//false ,包装类不应该使用==比较
int c=1;
System.out.println(a==c);//true,a在堆中,c在常量池中,a被自动拆箱为基本类型
Short b = new Short((short) 1);
System.out.println(a.equals(b));//false,不同类型的包装类使用equals比较不会报错
//System.out.println(a==b); 不同类型的包装类不能使用==比较,会报错
byte d=1;
System.out.println(c==d);//不同类型的基本类型可以比较,会自动转换类型
总结:字符串全都使用equals比较,基本类型和包装类之间使用==和equals都可以,两个包装类型使用equals比较。
mysql+mybatis查询数据库,如果某个字段在数据库中为null,则返回的数据中没有该字段
从mybatis返回的结果(实体类,或集合)中去取该字段,得到的是null;
如果想使用equals方法判断该字段是否为空字符串或其他,使用"".equals(目标字符串)会更安全,避免空指针异常。