为何字符串比较的时候要用equals,而不用==
Ps:
等号是引用比较,而不是字符串内容的比较。js中可以用等号
首先明确==和equals的区别,==比较的是两个对象的地址,equals作为Object类的方法,如果没有被重写,那么也是比较的地址。对于字符串来说,在JVM内存中有一个字符串常量池,在创建字符串的时候会判断池中是否已经有了这个字符串,如果有则引用,如果没有则创建,并放入。
清除了这个以后,对于String a = new String("a");String b = new String("a"); a==b 输出false的原因自然就清除了。因为a==b比较的是内存地址,而a和b都是创建的不同的对象的引用,所以a==b输出false。这种方式不建议使用,建议使用String a = "a";可以大大节省创建对象,内存分配和回收带来的性能损耗。
通常情况下字符串用==就够了。
而其它类型反而不够,这要看JVM的实现原理。
默认语言是Java,String a = new String(“a”);String b = new String(“a”);a和b没记错的话==比较返回false
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。