##两种比较 ==和equals()方法 ##
Integer s = new Integer(9)
Integer t = new Integer(9)
Long u = new Long(9)
(一)
-
==
用来判断两个变量是否相等
(1)两个变量为基本数据类型,则比较值的大小;int a =1 ,int b=1
a == b ,true
(2)两个变量为引用数据类型,则比较地址是否相同
String str = new String("hello");
str == "hello",false
一个为常量池中的hello,str为堆内存中的。 -
Integer类型和Long类型,两种不同类型的引用不能进行**==**比较。
(二)
***equals方法 ***
public boolean equals(Object obj){
if(obj instance Integer){
return value = ((Integer) obj).intValue();
}
return false;
}
-
new String("hello").equals("hello"),true;
判断字符串内容是否相同。 -
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比较,由于直接赋值会自动装箱。
Integer a =1000 ,Integer b = 1000
Integer c = 100 ,Integer d = 100
(1)值在[-128,127]之间时,不会创建新的Integer对象,而是直接从缓存IntegerCache中获取创建好的Integer对象
c.equals(d)结果为true
(2)大于这个区间,则会new新的Integer
a.equals(b)比较结果为false
5.equlas()比较值内容,前提是,两个值内容是同一个类型(一个String,一个char不可比较内容)