char型の配列から文字列を作成しているのはなぜインターンしていませんか?

パンターヴィッキー:

なぜchar配列から作成された文字列が抑留されていませんか?

jshell> var a = "Hello"
a ==> "Hello"

jshell> var b = "Hello"
b ==> "Hello"

jshell> a == b
$67 ==> true

jshell> char[] c = {'H','e','l','l','o'}
c ==> char[5] { 'H', 'e', 'l', 'l', 'o' }

jshell> var d = String.copyValueOf(c)
d ==> "Hello"

jshell> a == d
$70 ==> false
michalk:

これは、あるStringiteralsのみデフォルトで抑留されています。

String::copyValueOf内部的に新返しますString

public static String copyValueOf(char[] var0) {
    return new String(var0);
}

あなたはコールする必要がありますので、internこのメソッドから返され、これは文字列のプールで、この文字列への参照を返します、あなたの文字列に。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=335574&siteId=1