java中隐式和显式字符串声明的区别是什么?
例如 字符串herName=新字符串(“克拉克”) 及 字符串hisName=“michal” 1) 第一段代码正好如此,它将创建新字符串 对象在堆内存中的引用 2) 第二行代码,它是一个字符串文字,用于创建 字符串常量池中的字符串对象,实际上不在堆内存中java中隐式和显式字符串声明的区别是什么?,java,string,heap,implicit,explicit,Java,String,Heap,Implicit,Explicit,例如 字符串herName=新字符串(“克拉克”) 及 字符串hisName=“michal” 1) 第一段代码正好如此,它将创建新字符串 对象在堆内存中的引用 2) 第二行代码,它是一个字符串文字,用于创建 字符串常量池中的字符串对象,实际上不在堆内存中 那么它的好处是什么?第二种情况很容易受到所谓的interning的影响-如果另一个字符串被初始化为相同的值,相同的对象将用于该值。好处是新字符串(字符串s)是字符串的复制构造函数,并按预期工作,提供给定字符串的副本 调用新字符串(“字面上”)
那么它的好处是什么?
第二种情况很容易受到所谓的interning的影响-如果另一个字符串被初始化为相同的值,相同的对象将用于该值。好处是新字符串(字符串s)
是字符串的复制构造函数,并按预期工作,提供给定字符串的副本
调用新字符串(“字面上”)
并不是为文本设计的特殊功能。事实上,相反的情况最不寻常,如果新字符串(String s)
在使用文本时没有按预期工作,那又有什么好处呢
最后,新对象完全在堆上的概念可能会产生误导,您确实有一个新对象,但由于字符串是不可变的,因此它由相同的char[]value
安全地支持,即使在Java 8源代码中,引用也只是传递:
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
它不是“易感的”,它总是被拘留的。好吧,它是高度易感的