4

以下のオプションから文字列をブール値に変換するときに最高のパフォーマンスを発揮します。

  1. boolean value = new Boolean("true").booleanValue();
  2. boolean value = Boolean.valueOf("true");
  3. boolean value = Boolean.parseBoolean("true");
4

3 に答える 3

19
boolean value = new Boolean("true").booleanValue();

最悪の場合、Boolean常に新しいオブジェクトが作成されます。BTWbooleanValue()は必要ありません。開梱すると自動的に行われます。

boolean value = Boolean.valueOf("true");

はるかに優れています。キャッシュされたBooleanインスタンスを使用しますが、不要な (非常に安価ではありますが) ボックス化解除を実行します。

boolean value = Boolean.parseBoolean("true");

何も無駄にならず、プリミティブでほとんど動作せず、メモリ割り当ても必要ありません。ところで、それらはすべて(Sun / Oracle)に委任されます:

private static boolean toBoolean(String name) { 
  return ((name != null) && name.equalsIgnoreCase("true"));
}

あなたが偏執狂的である場合は、toBoolean(String name)ケースを無視しない独自のケースを作成できます-無視できるほど高速です:

boolean value = "true".equals(yourString);
于 2012-08-20T20:38:45.323 に答える
3

これがソースです。Tomaszが私を打ち負かして理由を答えたようです:

public static Boolean valueOf(String s) {
return toBoolean(s) ? TRUE : FALSE;
}
public static boolean parseBoolean(String s) {
    return toBoolean(s);
}
public Boolean(String s) {
this(toBoolean(s));
}
private static boolean toBoolean(String name) { 
return ((name != null) && name.equalsIgnoreCase("true"));
}
于 2012-08-20T20:40:26.680 に答える
2

2 番目と 3 番目のオプションは、静的ファクトリ メソッドであり、内部的に参照を再利用できるため、最適なオプションです。

と の実装を見るBoolean.valueOf("true")Boolean.parseBoolean("true")、どちらも同じことを行います (どちらも を呼び出します)が、Boxed 型toBoolean(s);を返すという違いがあります。valueOf

于 2012-08-20T20:39:14.050 に答える