学习是最好的投资!
リーリー
あなたが電話していますa.intern()方法,但是你又没有将返回结果重新赋值,a还是原来那个a。
a.intern()
a
文字列の等しいかどうかを判断するには equals() を使用してください。Java でのこの質問は失敗しました。
equals()
a.intern(); は a 文字の参照を変更せず、戻り値を持ちます。 以下は同等になります
ここでの A と "abc" は 2 つのオブジェクトです。インターン メソッドが呼び出されるとき、文字定数プールにはすでにこのオブジェクトと等しい文字列が含まれているため、 b="abc" が続いても、インターン メソッドの呼び出しは役に立ちません。 b と a は同じオブジェクトではありません。
出力を同等にしたい場合は、最初の文は次のようになります:
または 2 番目の文は次のようになります:
最初に知っておく必要があるのは、== 演算は 2 つのオブジェクトまたは基本型 a と b が同じメモリ領域を指しているかどうかを決定するということです
String の基礎となる実装は private Final value[] です。String がインスタンス化されると、実際には連続メモリを分割して、System.arraycopy を通じて char 配列を保存します。
new String("abc") は、実際にはこの方法で String を初期化することはお勧めできません。実際の実装には、a = "abc" よりも 1 つ多くの手順が必要です。基本的な手順は次のとおりです。
[JAVAソースコード分析 - Java.lang] 文字列ソースコード分析
リーリー
あなたが電話しています
a.intern()
方法,但是你又没有将返回结果重新赋值,a
还是原来那个a
。文字列の等しいかどうかを判断するには
equals()
を使用してください。Java でのこの質問は失敗しました。a.intern(); は a 文字の参照を変更せず、戻り値を持ちます。
リーリー以下は同等になります
リーリー
ここでの A と "abc" は 2 つのオブジェクトです。インターン メソッドが呼び出されるとき、文字定数プールにはすでにこのオブジェクトと等しい文字列が含まれているため、 b="abc" が続いても、インターン メソッドの呼び出しは役に立ちません。 b と a は同じオブジェクトではありません。
出力を同等にしたい場合は、最初の文は次のようになります:
リーリーまたは 2 番目の文は次のようになります:
リーリー最初に知っておく必要があるのは、== 演算は 2 つのオブジェクトまたは基本型 a と b が同じメモリ領域を指しているかどうかを決定するということです
String の基礎となる実装は
private Final value[] です。
String がインスタンス化されると、実際には連続メモリを分割して、System.arraycopy を通じて char 配列を保存します。
new String("abc") は、実際にはこの方法で String を初期化することはお勧めできません。実際の実装には、a = "abc" よりも 1 つ多くの手順が必要です。基本的な手順は次のとおりです。
リーリー
実際、実行される操作は上記の 3 番目のステップ、つまり b = a;[JAVAソースコード分析 - Java.lang] 文字列ソースコード分析