为了账号安全,请及时绑定邮箱和手机立即绑定

字符串对象与字符串文字的区别

字符串对象与字符串文字的区别

ITMISS 2019-06-14 09:58:54
字符串对象与字符串文字的区别.之间的区别是什么?String str = new String("abc");和String str = "abc";
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

当您使用字符串文字时,字符串可以是实习生,但是当你使用new String("...")得到一个新的字符串对象。

在本例中,两个字符串文本引用相同的对象:

String a = "abc"; String b = "abc";System.out.println(a == b);  // true

在这里,创建了两个不同的对象,它们具有不同的引用:

String c = new String("abc");String d = new String("abc");System.out.println(c == d);  // false

通常,在可能的情况下,您应该使用字符串文字表示法。它更容易阅读,并使编译器有机会优化你的密码。


查看完整回答
反对 回复 2019-06-14
?
绝地无双

TA贡献1946条经验 获得超4个赞

字符串文字是Java语言的概念。这是一个字符串文本:

"a String literal"

字符串对象java.lang.String班级,等级。

String s1 = "abcde";String s2 = new String("abcde");String s3 = "abcde";

一切都是有效的,但略有不同。s1将指实习生字符串对象。这意味着,字符序列"abcde"将被存储在一个中心位置,而且无论何时相同的文字"abcde"如果再次使用,JVM将不会创建新的字符串对象,而是使用缓存绳子。

s2被认为是新字符串对象,在这个案例中,我们有:

s1 == s2 // is falses1 == s3 // is trues1.equals(s2) // is true


查看完整回答
反对 回复 2019-06-14
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

答案很长这里所以我给你一个简短的。

当你这样做:

String str = "abc";

你打电话给intern()方法上..这种方法引用内部池String物品。如果你调用的字符串intern()上已驻留在池中,然后是对此的引用。String分配给str..如果没有,那么新的String被放置在池中,然后将对它的引用分配给str.

鉴于以下代码:

String str = "abc";String str2 = "abc";boolean identity = str == str2;

当您通过以下操作检查对象标识时==(您实际上是在问:这两个引用是否指向同一个对象?)true.

但是,你不能需要intern() Strings..您可以强制创建一个新的Object在堆中这样做:

String str = new String("abc");String str2 = new String("abc");boolean identity = str == str2;

在这种情况下,strstr2指的是不同的Objects,两者都没有实习生,所以当你测试Object身份使用==,你会得到false.

在良好的编码实践方面:使用==若要检查字符串相等性,请使用.equals()相反。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 854 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号