2016-05-24 3 views
1

私は、thisのアンドロイドでリマインダーを作成するためのチュートリアルに従っています。それが提供するソースコードでは、booleanメソッドに "1"という値を使用しました。ここでJavaのブール値に1の値を使用する

は私が話しているコードスニペットです:

public static boolean showRemainingTime(){ 
    return "1".equals(sp.getString(TIME_OPTION, "0")); 
} 

なぜ「1」は、Javaでboolean型の値がtrueまたはfalseのいずれかであることを考えれば、この例で使用されていますか?

ごめんなさい質問に申し訳ありません!

答えて

4

showRemainingTimeメソッドは、String "1"を返していません。 Stringsp.getString(TIME_OPTION, "0")で返された場合はString "1"、それ以外の場合はfalseと等しい場合はtrueを返します。

+0

私はこれについて間違って考えていました...あなたの答えをありがとう! – pablo

3

文字列リテラルは本物のStringオブジェクトです。これはあなたに多くの意味を成すことがあります。

String str = "1"; 
return str.equals(sp.getString(TIME_OPTION, "0")); 
それはこのように書かれていた場合、それはまた、より多くの意味を作るかもしれません

return sp.getString(TIME_OPTION, "0").equals("1"); 

このバージョンでの問題はgetString(...)がnullを返した場合、equals(...)を考え呼び出すことですNullPointerExceptionを投げる。この特定のケースでは可能ではないかもしれませんが、文字列リテラルのメソッドを呼び出すのは良い習慣です。

関連する問題