Java|internメソッドの仕組みをまとめる

internメソッドの仕組みをまとめるプログラミングの知識
プログラミングの知識

今回はStringクラスinternメソッドについて、その機能と役割をまとめます。

このメソッドはJavaSilverSE11の黒本でも出題されているメソッドです。

スポンサーリンク

internメソッドの機能と書式例

internメソッドはコンスタントプールの文字列を探し、同じ文字列が存在すればその文字列を返すメソッドです。同じ文字列が存在しない場合は新たに文字列を生成します。

文章だと分かりにくいので、下にあるサンプルコードで動きを理解しましょう。

メソッドの書式例は以下の通りです。

/*internメソッドの書式例*/
文字列.intern() //文字列がコンスタントプールにあるか検索

internメソッドの使用例

メソッドの使用例をサンプルコードで示します。

サンプルコード

public class InternTest {

	public static void main(String[] args) {
		String s1 = new String("123");
		String s2 = "123";
		String s3 = s1.intern();
		String s4 = s2.intern();
		
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);

		System.out.println("s1 == s2:" + (s1 == s2));
		System.out.println("s1 == s3:" + (s1 == s3));
		System.out.println("s2 == s3:" + (s2 == s3));
		System.out.println("s3 == s4:" + (s3 == s4));

	}

}

出力結果

サンプルコードの出力結果を以下に示します。

123
123
123
s1 == s2:false
s1 == s3:false
s2 == s3:true
s3 == s4:true

ここで文字列s1は「new演算子」によってインスタンス化されています。文字列s2とは参照先が違うため「s1 == s2」はfalseとなります。

文字列s3は「コンスタントプール内のs1と同じ文字列」を探しますが、s1はインスタンス化されているため見つけることが出来ず、新たに文字列を生成しています。よって参照先が異なるため「s1 == s3」はfalseとなります。

文字列s2とs3では、s3は「s1と同じ文字列」を探しています。s2に「s1と同じ文字列」が入っているため、s3に「s2と同じ参照先の文字列」を代入します。よって「s2 == s3」はtrueになります。

s3とs4に関してもそれぞれ同じ文字列がs2に入っているため、どちらも「s2と同じ参照先の文字列」を代入します。よって「s3 == s4」はtrueになります。

まとめ

今日やったことのまとめです。

ポイント
  • internメソッドはコンスタントプール内に同じ文字列が存在すればその文字列を返す
  • 同じ文字列が存在しなければ新しく文字列を生成する

文章だとどうしても理解しづらい部分があると思うので、実際にプログラムを組んでみると分かりやすいですね。

以上がinternメソッドの使い方の紹介になります。

スポンサーリンク
Dim雑記
タイトルとURLをコピーしました