Object 中两者相同
equals重写的类 Integer 和String 比较的内容
Integer == 比较的是变量中的地址
1.new Integer()之间的比较是false 因为是对象地址不同
2.Integer i=1 之间的比较是相同的 因为拿的是integercache中的值(-127 ~128)的值 所以相等 在integercashe范围外的的比较是不相等的 因为就是对象了
3.int之间的比较是相同的 因为存在常量池中
4.new Integer 和 int的比较是相同的 因为自动拆箱
5.Integer i=1 与 int之间的比较 在(-127~128)之间时 是相同的 范围之外是不相同的
6.new Integer() 和 Integer i=1比较是不相同的 ,因为new Integer()不会自动拆箱。
Integer eqauls 比较的是内容
比较是相同的
String ==
1.new String()的比较是false 因为比较的是对象
2.String ss=""是true 因为存储的是常量池中的常量的地址 而常量池中的常量不会重复 所以相同的字符串常量的地址是相同的
3.new String ==String ss="" 是不相同的
String eqauls
true
字符串的拼接
1.常量之间的拼接 常量池直接在常量池创建新的常量或者指向已存在的常量
2.有字符串变量的拼接 先在堆中创建对象 然后再常量池中创建对象 或者拿已经存在的常量的地址 堆中 values[]指向这个地址
equals :是先判断类型是否是Integer类型 在判断intValue值是否相同