[インタビューの質問] String.intern メソッドを理解していますか?

ブログの内容が変更される場合があり、最初のブログが最新であり、他のブログのアドレスが同期していない可能性がありますので、よく確認してください。https://blog.zysicyj.top

最初のブログアドレス

シリーズ記事アドレス


String.intern メソッドは Java のメソッドです。文字列オブジェクトを文字列定数プールに追加し、定数プール内の文字列への参照を返すために使用されます。文字列が定数プールにすでに存在する場合は、直接参照を返します。定数プール内

Java では、文字列定数プールは文字列定数を格納するために使用される特別なメモリ領域です。リテラルを使って文字列オブジェクトを作成すると、新たに文字列オブジェクトを作成せずに、「文字列定数プールに同じ内容の文字列がすでに存在する場合は、定数プール内の参照を直接返して文字列オブジェクトを追加します」これにより、「メモリ領域の節約」「文字列比較の効率の向上」が可能になります。

同じ内容の文字列が文字列定数プールにすでに存在する場合は、String.intern メソッドを使用して、定数プール内の参照を直接返すことにより、文字列オブジェクトを文字列定数プールに手動で追加します。同じ内容の文字列が文字列定数プールにすでに存在する場合は、定数プール内の参照が返され、同じ内容の文字列が文字列定数プールに存在しない場合は、その文字列が定数プールに追加され、定数が返されます。プール内の参照。

String.intern メソッドの使用方法を示すサンプル コードを次に示します。

String str1 = new String("hello");
String str2 = "hello";
String str3 = str1.intern();

System.out.println(str1 == str2);  // false
System.out.println(str2 == str3);  // true

上記のコードでは、str1 は new キーワードによって作成された文字列オブジェクトであり、ヒープ メモリに領域を割り当てます。str2 は、文字列定数プールにスペースを割り当てるリテラルを使用して作成された文字列オブジェクトです。str3 は、String.intern メソッドを通じて str1 を文字列定数プールに追加することによって取得される参照です。

参照を比較すると、str1 と str2 の参照は、それぞれヒープ メモリと文字列定数プール内の異なるオブジェクトを指しているため、同じではないことがわかります。str2 と str3 の参照は、どちらも文字列定数プール内の同じオブジェクトを指しているため、同じです。

需要注意的是,由于字符串常量池是在运行时创建的,因此在使用 String.intern 方法时需要谨慎使用,以避免过多的字符串对象被添加到常量池中,导致内存占用过大。

如果您喜欢我的内容,就点击关注吧

扫码长按关注交流群获取最新消息,免费的面试题手册即将在交流群内推出

alt

公众号

alt

个人微信

alt

本文由 mdnice 多平台发布

おすすめ

転載: blog.csdn.net/njpkhuan/article/details/132894339