2016-09-06 6 views
1

スペースを区切りとして文字列を分割すると、一意の文字列ごとに文字列定数プールに新しい文字列が作成されますか?javaのsplit()メソッドは、String constant poolの新しいStringを作成しますか?

String s = "This is a simple Java Program"; 
for (String val: s.split(" ")){ 
    System.out.println(val); 
} 

は、新しい文字列は "これ"、 "ある"、 "A"、 "シンプル"、 "ジャワ"、 "プログラム" のために作成されますか?

+0

リテラルを表していないので、いいえ – SomeJavaGuy

+0

いいえ、それはありません。しかし、ヒープに新しい文字列を作成します。 – TheLostMind

+0

いいえ、それはありません。 JavaDocもソースコードもそれを示唆していません。 – Tom

答えて

2

そうでない番号:s.split(" ")コンパイル時評価可能な定数式ではありません。返される文字列の配列は、実行時で計算されます。

これは、分離された文字列がプール内にあっても変わりません。

+0

ありがとうございます。 substrはString定数プールに新しいStringを作成しますか? – abhiagNitk

+1

いいえ、もう一度 'substr'は* compile-time *で評価されません。 – Bathsheba

+0

おそらく実行時に評価されていないことをどのように知っているかを言及します。 – RealSkeptic

1

ありがとうございました。 split(limit)は、この文字列を実行時に指定された正規表現にマッチさせることによって計算された文字列の配列を返します。 したがって、定数プールに新しい文字列を作成することはありません。

関連する問題