{:3_47:}昨晚为了做那个抢分题,弄了半夜,结果论坛半夜居然上不去!{:3_55:}闲话不扯,来说说这个吧!
先看下面这个:
String str1 = "abc";
String str2 = "abc";
System.out.println(str1.equals(str2));
System.out.println(str1==str2);
System.out.println("-------------------------------------------------------");
String str3 = new String("abc");
String str4 = new String("abc");
System.out.println(str3.equals(str4));
System.out.println(str3==str4);
有兴趣可以自己运行一下,这个结果是
TRUE TRUE TRUE FALSE
{:3_51:}有没有很郁闷!哈哈哈
其实是因为==是判断的地址啦,equala是判断的变量内容 ,所以看上面的代码能清楚发现,str1 str2 地址是一样的,而str3 str4都是new 新建的地址,不一样的啦,这样说应该比较容易理解吧,至于内容,{:3_51:}同一个地址,能存同时存两个不同的内容吗?答案当然是不能啦!
然后说下昨晚那个陷阱题目
{:3_60:}Integer i1 = 122;
Integer i2 = 122;
System.out.println(i1.equals(i2));(输出1)
System.out.println(i1 == i2);(输出2)
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3.equals(i4));(输出3)
System.out.println(i3 == i4);(输出4)
陷阱在于 Integer有范围啊,-128到127,所以122是可以,128就是新建地址,类似于str3 str4{:3_55:}最讨厌陷阱神马的,明明很简单,不懂的时候就纠结要死。这个给我们新学的童鞋们来探讨啦,欢迎留贴心得!{:3_51:}{:3_51:}
|