##两种比较 ==和equals()方法 ##
Integer s = new Integer(9)
Integer t = new Integer(9)
Long u = new Long(9)
============================================
Integer a =1000 ,Integer b = 1000
Integer c = 100 ,Integer d = 100
============================================
String s = "hello"
Sring t ="hello"
String r = new String("hello");
***equals方法 ***
public boolean equals(Object obj){
if(obj instance Integer){
return value = ((Integer) obj).intValue();
}
return false;
}
-
Integer类型和Long类型,两种不同类型的引用不能进行**==**比较。
-
基本数据类型之间没有equals()方法。
int a =1 ,int b =1 。
a==b正确
a.equals(b)没有这种比较。
-
new Integer()和int比较,Integer会自动拆箱, ==和equals()均为true
s.equals(9),true
s==9,true
-
new Integr()和new Integr(),比较 ==为false,equals()为ture
s==t,false
s.equals(t),true 同理 s.equals(new Integer(9)),true
-
Integer和Integer比较,由于直接赋值会自动装箱。
(1)值在[-128,127]之间时,不会创建新的Integer对象,而是直接从缓存IntegerCache中获取创建好的Integer对象
c.equals(d)结果为true
(2)大于这个区间,则会new新的Integer
a.equals(b)比较结果为false
6.==比较两个内存地址是否相同,相同为true,不同为false。equals()比较字符串内容是否相同,相同为true。
(1)在字符缓冲池中,若已有字符串,则直接赋值不需要再创建一个字符串。
s == t,true
(2)若果new创建了一个新的字符串。
此时地址不同:s ==r,false。
字符串内容相同的话,s.equals( r ),true。