黑马程序员技术交流社区

标题: 为什么判断字符串不能用==呢? [打印本页]

作者: 搁浅灬石头    时间: 2014-10-13 23:37
标题: 为什么判断字符串不能用==呢?
本帖最后由 搁浅灬石头 于 2014-10-16 12:18 编辑

为甚判断字符串的时候不能用==呢?
其他的都可以啊,int,double ,char都可以

作者: 20140829    时间: 2014-10-13 23:40
因为字符串有自己的判断方法,equals就是判断字符串是否相同的,建议楼主去看一下API文档String类中的equals方法,看了你就知道了。
作者: 搁浅灬石头    时间: 2014-10-13 23:42
20140829 发表于 2014-10-13 23:40
因为字符串有自己的判断方法,equals就是判断字符串是否相同的,建议楼主去看一下API文档String类中的equal ...

额,是吗,还没学到呢,回头我去学习一下下。
作者: javaAndroid    时间: 2014-10-14 14:01
写了一个小例子,楼主可以理解一下
  1. String str="aaaaa";
  2. String str1=new String("aaaaa");
  3. String str2=new String(str);
  4. System.out.println(str==str1);        // false
  5. System.out.println(str.equals(str1));//true
  6. System.out.println(str==str2);        // false
  7. System.out.println(str.equals(str2));//true
复制代码




作者: EDDY_Liang    时间: 2014-10-14 15:23
因为字符串是引用数据类型。。是类。。。其他都是基本数据类型。。不是类。。
类的比较如果用== 比的就是这个类对象的内存地址是否相等。。。要想比较内容。。就要使用equals方法比较
作者: 搁浅灬石头    时间: 2014-10-14 23:32
EDDY_Liang 发表于 2014-10-14 15:23
因为字符串是引用数据类型。。是类。。。其他都是基本数据类型。。不是类。。
类的比较如果用== 比的就是这 ...

哦,是这个原因啊,不过我没学到这个,看样子,得尽快的往后学习了,!!
作者: 搁浅灬石头    时间: 2014-10-14 23:36
javaAndroid 发表于 2014-10-14 14:01
写了一个小例子,楼主可以理解一下

嗯,这个不错,谢谢。
作者: 戏言丶    时间: 2014-10-15 00:33
String是引用数据类型,创建对象的时候是在堆内存中的,而int等是基本数据类型,在栈内存中。引用数据类型如果用==比较的是他们的引用地址值,equals覆写了Object中的方法,比较的是他们的内容
作者: qq8921310    时间: 2014-10-15 08:00
字符串可以看成一个对象。有地址值的。所以可以用引用数据类型,
==只是比较基本数据类型的值是否相同。
作者: tiancairc    时间: 2014-10-15 08:21
比较字符串时,==比较的是地址值
作者: 哈达洋    时间: 2014-10-15 09:29
首先字符串是对象,如果采用==判断,比较的是地址引用,也就是说判断的是是否是同一个对象,和我们想要的判断内容是否相等,就不是一回事了




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