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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪叶庭 中级黑马   /  2013-1-11 21:34  /  1911 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Dd
{
public static void main(String[] args)
{
  String a = "abc";
        String b = "abc";
        System.out.println("====>"+ a==b );
}
}
本来这个结果应该输出的是ture,但是调试机器调试的却是false,这是为什么呢?求大神指教。

QL6ZI(}KEWI3$5K8N%[PP(C.jpg (5.91 KB, 下载次数: 39)

QL6ZI(}KEWI3$5K8N%[PP(C.jpg

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 神马都是浮云

查看全部评分

9 个回复

倒序浏览
("====>"+ a==b把前面的("====>"+ 去掉就哦了。之前打印的是字符串加布尔型被强转成了布尔型

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 luck28 于 2013-1-11 21:48 编辑
  1. class Dd
  2. {
  3. public static void main(String[] args)
  4. {
  5.   String a = "abc";
  6.         String b = "abc";
  7.         System.out.println("====>"+ a==b );
  8. }
  9. }
复制代码
哥们把最后的 这个System.out.println( a==b ); 吧。。。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
老问题了 同学

基本数据类型比较用==是可以的,但引用数据类型比较用==的话,比较的是指向对象所在的内存地址,而不是对象本身!

所以要调用equals方法来进行比较

点评

问题是变量a,b都是基本数据类型,就a==也是基本boolean型,没有出现引用数据类型,所以不用equals方法,这样不知对还是错,请不吝赐教...  发表于 2013-1-11 22:27
回复 使用道具 举报
System.out.println("===>"+ a==b);

这个改成System.out.println(a==b);

运算符的执行顺序问题, "===>"+ a这个和b相等,肯定是false.
回复 使用道具 举报
明白了,谢谢啊
回复 使用道具 举报
运算的执行顺序出错,可以这样写
class Lianxi
{
        public static void main(String[] args)
        {
                String a = "abc";
                String b = "abc";
                System.out.println("====>"+(a==b)); //注意+号的影响
        }
}

输出是 ====>true  将a==b用括号括起来提高有限级
可以是System.out.println(a==b),但输出只是true,不知你是要那种结果
回复 使用道具 举报
这个应该是涉及到优先级的问题,==符号优先级小于+符号。
回复 使用道具 举报
林嘉健 发表于 2013-1-11 21:47
老问题了 同学

基本数据类型比较用==是可以的,但引用数据类型比较用==的话,比较的是指向对象所在的内存 ...

同学 基础不扎实哦

字符串就是一个引用类型,只是他比较特殊一点而已罢了 呵呵

这题 我忽略了优先级问题- -
回复 使用道具 举报
System.out.println("====>"+(a==b)); //注意+号的影响
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马