Java ==

==

  • 对于基本数据类型,也称原始数据类型(byte,short,char,int,long,float,double,boolean)== 比较的是他们的值
  • 复合数据类型(类) ==比较的一定是他们是否是同一个Object

特殊情况

  • 对于基本类型,auto boxing会有缓存,缓存范围:true, false, a byte, a char in the range u0000 to u007f, or an int or short number between -128 and 127
  • 对于字符串常量,String类会有缓存

所以

Integer a = 10;
Integer b = 10;
System.out.println(a == b); // => true

Integer c = new Integer(10);
System.out.println(a == c); // => false

Integer d = 128;
Integer e = 128;
System.out.println(d == e); // => false;

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // => true

String s3 = new String("abc");
System.out.println(s1 == s3); // => false