String str1 = new String(); ----> 是一个空字符串
String str2 = "";
System.out.println(str1==""); ----> false 引用堆中的地址和引用栈中的地址不同
System.out.println(str2==""); ----> true 字符串常量池的引用相同
System.out.println(str1.equals("")); ----> true
System.out.println(str2.equals("")); ----> true
包装类的自动拆箱,装箱
Integer i = new Integer(1);
Long p = new Long(1);
System.out.println(i==1); ----> true
System.out.println(p==1); ----> true
int n = 2;
Long m = 2L;
System.out.println(n==m); ----> true 基本类型的自动隐士转换
byte-->short-->int-->long
注意:
有两个属性: int i; Integer m; 省略直接用工具生成的setter,getter方法,并且假设已经创建了该类对象a
a.setI(a.getM()); ---- 这个有可能报空指针异常,因为a.getM()可能为空,而包装类拆箱的时候,自动调用该对象的**Value()方法,从而有可能报空指针异常(如: Integer s = a.getM(); a.setI(s.intValue());)