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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[code=java]String a = "abc";
String b = "abc";
System.out.println("====>"+ a==b ); [/code]
结果是ture还是False呢,
这个题我编译了,你们猜一下再编译哦,太邪恶了,
这几天闲下来的时候就喜欢找点邪恶的代码,挺有意思的,算是业余活动了,你们也试试,?很开心的说,

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

25 个回复

正序浏览
邪恶的一道题
回复 使用道具 举报
{:soso_e103:}  是比较邪恶,惯性思维在作怪。

System.out.println("===>"+(a==b));   打印的结果是 ====>true
System.out.println("===>"+a==b);      打印的结果是 false  而不是====>false
回复 使用道具 举报
黑马网友  发表于 2011-9-30 20:29:20
23#
这道题太邪恶了,弄个运算符 搞成了 ====>a和b比较
回复 使用道具 举报
黑马网友  发表于 2011-9-30 12:47:43
22#
我新来的,我是来学习一下的.看上面的兄弟们都给出答案了.
回复 使用道具 举报
黑马网友  发表于 2011-9-28 18:39:27
21#
String a = "abc";  
String b = "abc";  
System.out.println("====>"+ a==b );

对于这个问题,答案是true
为什么?第一行代码创建了一个对象 (String pool)  String内部会把内容为"abc"放进String pool(String池)并且让a指向"abc"
对于第二行代码,String会去检查String Pool有没有"abc"的对象,发现有那么就不创建对象了,直接让b指向"abc"
所以a和b指向的是同一个内存地址,更加详细的信息可以查看String 的API

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-28 15:41:05
20#
其实很多人都把问题放在了 “==”
其实这道题考的是加了 “"=====>" +”这句话以后 运算优先级发生了变化!
看到后面有同学也讲出来了,自夸一下,我绝对没有看下面的介绍想到这个问题的!~谢谢!~~
回复 使用道具 举报
他们指向的不同对象 用== 就是false ,如果是equal 的话就true


----------------------------------------------------------------
上面我第一次的理解错了,看了上面的人我才弄明白,这里有个小陷阱吧 “====》”+a==b其实是(“====》”+a)== (b),答案就是fasle,单就a==b是true,就如上面仁兄所说,在字符串连接池先有“abc”指向a,当对b进行赋值的时候在连接池中有“abc”,就把这个“abc”复制给b,所以a,b指向的是同一对象,a==b就是true.用equals更是如此。不知道我还有没有理解错误,欢迎大家给我指出来:lol
[ 本帖最后由 郭运明 于 2011-09-28  17:19 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 新手加分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-27 23:23:52
18#
上面这题比较的是这两个字符串:"====>"+ a 和b
所以答案肯定是false
回复 使用道具 举报
黑马网友  发表于 2011-9-27 22:15:31
17#
结果 true,String类是final的,==比较的是对象
回复 使用道具 举报
黑马网友  发表于 2011-9-27 21:50:07
16#

回复 14 # 的帖子

实验结果与LS一样:victory:
回复 使用道具 举报
黑马网友  发表于 2011-9-27 21:49:54
15#
你们难道都没看到少了括号吗??
回复 使用道具 举报
黑马网友  发表于 2011-9-27 21:07:10
14#
"====>"+ a==b哈哈,确实有点好玩,如果没有前面的那一串,就是true了,或者后面两个比较用括号括起来也会有true,这道题相当于先算"====>"+ a,算出来应该是"====>abc",而b="abc",这时候应该可以看出来是false了。
回复 使用道具 举报
黑马网友  发表于 2011-9-27 21:06:11
13#
太邪恶了,太邪恶了
回复 使用道具 举报
黑马网友  发表于 2011-9-27 20:55:38
12#
看着回帖有点晕,谁来个稳点的
回复 使用道具 举报
黑马网友  发表于 2011-9-27 20:53:56
11#

回复 板凳 的帖子

板凳靠谱,这种题要弄成选择题或者判断题,真是冤枉好多人啦,两个知识点只知道一个,还不如一个都不知道呢

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 呵呵,详细解释一下更好!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-27 20:34:42
10#
我们平时在用等号用的最多的地方是什么??在没学java之前。
就是比较2个数值是否相等 而数值在java中是什么类型 应该是原始类型 也就说是int byte long。。。。
string是java中的系统类 二个类相等能用等号去差别吗?? 判断二个对象是否相等 就是判断对象在栈内存中的地址值是否相等  因为地址值在内存中是唯一的!
回复 使用道具 举报
黑马网友  发表于 2011-9-27 19:05:44
9#
唉~~~看着楼上一个个的回答,真是令人揪心啊~~~:L

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 的确很揪心啊!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-27 18:29:52
8#
false   比较的不是a,b所赋值的内容是他们的地址值
回复 使用道具 举报
黑马网友  发表于 2011-9-27 18:07:12
7#
是false ,这是必须 的: 因为“==”   是用来比较字符串常量的  而不是变量   变量用.equal()
回复 使用道具 举报
黑马网友  发表于 2011-9-27 17:29:47
地板
恩,其实还有个知识点,就是运算符优先级,这两个点看到哪一个都能说对,嘿嘿,
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马