== 与equals

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值是否相同

原文地址:https://www.cnblogs.com/xiatc/p/12559050.html