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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 习嘻嘻 中级黑马   /  2013-11-13 22:47  /  1136 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 习嘻嘻 于 2013-11-13 23:33 编辑

System.out.println(“”.equals(null));
为甚么是false
System.out.println(“abc”==”ab”+”c”);
为什么是true

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 多看看毕老师的视频。一起加油吧!.

查看全部评分

8 个回复

倒序浏览
“”是空串。占用内存的。而null表示为空。不再占用内存,不同的概念。后面判断左右两侧都是字符串abc

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 下次回复可以再详细一点哦!

查看全部评分

回复 使用道具 举报
本帖最后由 qq379264347 于 2013-11-13 23:18 编辑

""表示空的String类型,而null表示空,什么类型都没有,所以这俩比较自然是false。

下面的那个其实就是这样子的:
  String tmp = "ab" + "c";
  System.out.println("abc" == tmp);
tmp是"abc",==左面也是"abc",在JVM中相同的字符串只保留一份,除非你用new创建。tmp已经组装成"abc"了,下面的"abc"就是上面的副本,其实都一样的东西。
若是new一个就不同了,System.out.println("abc" == new String("abc"));输出false

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
FFF 金牌黑马 2013-11-13 23:15:17
板凳
""表示指向一个空的字符串,null表示为空,没有,指向了null特殊的空值。所以两个不相等。
ab+c实际是创建了新的对象“abc”,而内存中已经有一个“abc”了所以,他不再重新创建,而是直接指向了前面的"abc"。所以两者相等。为true。
回复 使用道具 举报
“”这个也算是个字符串, “ab"+"c"两个字符串相加第二个字符串就添加到第一个的末尾了。
回复 使用道具 举报
gh112233 发表于 2013-11-13 22:59
“”是空串。占用内存的。而null表示为空。不再占用内存,不同的概念。后面判断左右两侧都是字符串abc ...

谢谢,大概知道了
回复 使用道具 举报
qq379264347 发表于 2013-11-13 23:12
""表示空的String类型,而null表示空,什么类型都没有,所以这俩比较自然是false。

下面的那个其实就是这 ...

谢谢你,我知道了
回复 使用道具 举报
FFF 发表于 2013-11-13 23:15
""表示指向一个空的字符串,null表示为空,没有,指向了null特殊的空值。所以两个不相等。
ab+c实际是创建了 ...

谢谢,我要好好学习了
回复 使用道具 举报
绕世界流浪丶 发表于 2013-11-13 23:18
“”这个也算是个字符串, “ab"+"c"两个字符串相加第二个字符串就添加到第一个的末尾了。 ...

谢谢你的回答,努力吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马