A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 搁浅灬石头 中级黑马   /  2014-10-13 23:37  /  2010 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 搁浅灬石头 于 2014-10-16 12:18 编辑

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

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

10 个回复

倒序浏览
因为字符串有自己的判断方法,equals就是判断字符串是否相同的,建议楼主去看一下API文档String类中的equals方法,看了你就知道了。
回复 使用道具 举报
20140829 发表于 2014-10-13 23:40
因为字符串有自己的判断方法,equals就是判断字符串是否相同的,建议楼主去看一下API文档String类中的equal ...

额,是吗,还没学到呢,回头我去学习一下下。
回复 使用道具 举报
写了一个小例子,楼主可以理解一下
  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
复制代码



回复 使用道具 举报
因为字符串是引用数据类型。。是类。。。其他都是基本数据类型。。不是类。。
类的比较如果用== 比的就是这个类对象的内存地址是否相等。。。要想比较内容。。就要使用equals方法比较
回复 使用道具 举报
EDDY_Liang 发表于 2014-10-14 15:23
因为字符串是引用数据类型。。是类。。。其他都是基本数据类型。。不是类。。
类的比较如果用== 比的就是这 ...

哦,是这个原因啊,不过我没学到这个,看样子,得尽快的往后学习了,!!
回复 使用道具 举报
javaAndroid 发表于 2014-10-14 14:01
写了一个小例子,楼主可以理解一下

嗯,这个不错,谢谢。
回复 使用道具 举报
String是引用数据类型,创建对象的时候是在堆内存中的,而int等是基本数据类型,在栈内存中。引用数据类型如果用==比较的是他们的引用地址值,equals覆写了Object中的方法,比较的是他们的内容
回复 使用道具 举报
字符串可以看成一个对象。有地址值的。所以可以用引用数据类型,
==只是比较基本数据类型的值是否相同。
回复 使用道具 举报
比较字符串时,==比较的是地址值
回复 使用道具 举报
首先字符串是对象,如果采用==判断,比较的是地址引用,也就是说判断的是是否是同一个对象,和我们想要的判断内容是否相等,就不是一回事了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马