黑马程序员技术交流社区

标题: String字符串a,b的比较用==和a.equals(b)有什么不同? [打印本页]

作者: gzp123    时间: 2015-5-6 21:35
标题: String字符串a,b的比较用==和a.equals(b)有什么不同?
String字符串a,b的比较用==和a.equals(b)有什么不同?
作者: 敢舍弃么    时间: 2015-5-6 21:47
如果需要数值和地址都相同则使用==,即两个必须是同一个对象才可以返回true
只需要确定数值相同可以使用equals,比较双方可以不是同一对象
作者: 唐泉银    时间: 2015-5-6 21:50
个人理解   equals比较的是字符串内容,如果内容相同就是true
作者: 唐泉银    时间: 2015-5-6 21:52
==比较的是不是同一对象,对于基本数据类型,如果内容相同,且没有出现new,此时==也是true
作者: zhang214214    时间: 2015-5-6 21:53
一个是对象,一个是变量,肯定不一样滴。
作者: 熊猫宝宝    时间: 2015-5-6 21:54
问题说完整点,同学
作者: 北京南瓜    时间: 2015-5-6 22:17
String s= "hello";
String s2 = "hello";
System.out.println(s == s2);//true
System.out.println(s.equals(s2));//false
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println(s3 == s4);//false
System.out.println(s3.equals(s4));//true
一般情况下,==比较的是引用地址值,而equals比较的是复写后的成员内容,s和s2都是直接赋值,就是在常量池中找"hello",s和s2的引用都是常量池中"hello"的地址值,所以s ==s2,其他几种情况就很好理解了。
作者: 吾爱SF    时间: 2015-5-6 22:18
==一般是比较数字,equals一般用来比较字符串
作者: lixunwen    时间: 2015-5-7 15:00
== 是用来比较基础数据类型  和内存地址
equals  java.lang默认也是比较内存地址,需要重写 才能比较String的内容




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2