黑马程序员技术交流社区

标题: 这个程序不解,求指教 [打印本页]

作者: 汪叶庭    时间: 2013-1-11 21:34
标题: 这个程序不解,求指教
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, 下载次数: 37)

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

作者: 田旭阳    时间: 2013-1-11 21:40
("====>"+ a==b把前面的("====>"+ 去掉就哦了。之前打印的是字符串加布尔型被强转成了布尔型
作者: 王溢君    时间: 2013-1-11 21:42
本帖最后由 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 ); 吧。。。
作者: 林嘉健    时间: 2013-1-11 21:47
老问题了 同学

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

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


作者: 王溢君    时间: 2013-1-11 21:47
System.out.println("===>"+ a==b);

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

运算符的执行顺序问题, "===>"+ a这个和b相等,肯定是false.
作者: 汪叶庭    时间: 2013-1-11 22:08
明白了,谢谢啊
作者: 汪平乐    时间: 2013-1-11 22:21
运算的执行顺序出错,可以这样写
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 22:27
这个应该是涉及到优先级的问题,==符号优先级小于+符号。
作者: 林嘉健    时间: 2013-1-11 23:05
林嘉健 发表于 2013-1-11 21:47
老问题了 同学

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

同学 基础不扎实哦

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

这题 我忽略了优先级问题- -
作者: 郭孟涛    时间: 2013-1-12 00:46
System.out.println("====>"+(a==b)); //注意+号的影响




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