0

ランタイムを使用するときにJavaで文字列を初期化することの違いを知る必要があります。

例:

String declare = null;

そうでなければ:

String declare = "";

2種類の文字列宣言を宣言しました。ランタイム宣言に最適なのはどれですか。

4

4 に答える 4

3

文字列はオブジェクトです。nullに初期化すると、初期化されていないことを認識していること、および最初に変数を使用しようとしたときに警告が表示されないことをコンパイラーに通知します。それとは別に、もちろん、nullへの参照を指しています。

ただし、文字列を空の文字列に初期化すると、次のようになります。

  • Stringオブジェクトが割り当てられました
  • コンパイラはその文字列リテラルを文字列プールに入れます
  • ""に初期化する他の文字列は、そのプールからの同じ不変の文字列を指します

したがって、問題は、コード内のnullまたは空の文字列をどのように処理するかということです。それがあなたの決定を導くべきものです

于 2012-06-28T11:31:26.663 に答える
0

最初のケースでは、オブジェクトへの「ポインタ」を作成しましたnull(objecは作成されません)。2番目の例では、値が ""(空の文字列)のオブジェクトへの'ポインタ'です。これらはまったく異なるものです-あなたは決定する必要があります、あなたはさらなる操作のためにどれが必要ですか?

于 2012-06-28T11:32:27.437 に答える
0

最初の例ではStringオブジェクトを作成せず、2番目の例では作成します。したがって、ステートメント:

declare.equals("some string");

最初の例ではNullPointerExceptionが生成されますが、2番目の例では生成されません。

于 2012-06-28T11:32:46.640 に答える
0

@AljoshaBreがコメントしたように、それはあなたがそれをどうするかによります。nullに初期化するのはやや冗長です。通常、初期値はそれです。空白の初期化( "")を使用すると、予期しないパスを通過した場合にnullポインター例外を受け取ることができなくなります(コードの論理エラーがマスクされる可能性があるため、これは良い場合も悪い場合もあります)。

通常、初期値を設定することをお勧めしますが、ランダムな初期値ではなく、文字列を使用するコードにとって意味のあるものにするようにしてください。

于 2012-06-28T11:32:54.723 に答える