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

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

.之间的区别是什么?

String str = new String("abc");

String str = "abc";


ITMISS
浏览 855回答 3
3回答

明月笑刀无情

当您使用字符串文字时,字符串可以是实习生,但是当你使用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通常,在可能的情况下,您应该使用字符串文字表示法。它更容易阅读,并使编译器有机会优化你的密码。

绝地无双

A 字符串文字是Java语言的概念。这是一个字符串文本:"a String literal"A 字符串对象是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

扬帆大鱼

答案很长这里所以我给你一个简短的。当你这样做: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;在这种情况下,str和str2指的是不同的Objects,两者都没有实习生,所以当你测试Object身份使用==,你会得到false.在良好的编码实践方面:不使用==若要检查字符串相等性,请使用.equals()相反。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java