Java为什么设计成`String`不能用`==`比较值?
关注者
114被浏览
148,151登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏
按理说Integer之间都不能用==比较值的大小,因为Integer和String一样是Reference类型。
什么叫Reference类型?就是它指向的是一个地址,String啊Integer啊只是一个引用,一个指向。两个String对象地址当然不同,就不能直接比较值的大小。当然,如果两个String指向一个地址例如
String s = new String();
String b = s;
他俩指向一个地址,所以就是相等的。
同等地,如果你创建了个ArrayList,并且让另一个ArrayList也指向这一个地址
ArrayList a = new ArrayList();
ArrayList b = a;
则你对b的值进行修改,a的值也会相应的发生改变,因为他们都是指向同一个地址。看起来好像是复制了一份,实际上是创建了一个“软链接”。
但是int之间就可以比较值的大小,因为int是Java的Primary Type,它是直接存储数值的,所以用=比较的时候就是比较数值。