包装类进行对比时 需要使用equals 因为==比较的时二者的地址
以下这些包装类都提供了256个缓冲对象,这些对象被放置在一个数组中,当该包装类数值在-128~127时会直接引用缓冲对象 而不创建新对象
Byte Integer Short Long Character(0~127) Boolean(所有的true是同一引用 所有的false是同一引用)
注意:缓冲区时valueOf方法提供的 所以只有在自动装箱时 才有该机制 而直接创建对象时没有
/*
Integer in1 = new Integer(10);
Integer in2 = new Integer(10);
System.out.println(in1==in2);
System.out.println(in1.equals(in2));
*/
Integer in1 = 128;//new Integer(128)
Integer in2 = 128;//new Integer(128)
Integer in3 = Integer.valueOf(10);//cache[138]
Integer in4 = Integer.valueOf(10);//cache[138]
/*
-128~127 256
0~255
cache[0]~~~数值为-128的Integer对象
cache[1]~~~数值为-127的Integer对象
...
cache[255]~~~数值为127的Integer对象
*/
System.out.println(in1==in2);
System.out.println(in1.equals(in2));