1

データベースから返される文字列は、常に長さが 1 です。

この文字列は、"0"、"1"、"Y"、"N"、または null に等しい可能性があります。これは、実際には、ログの目的のために置き換えることが許可されていないデータベースの制約です。

値「Y」または「N」が大文字と小文字を区別しないことを考えると、よりパフォーマンスの高いものは何ですか?

public boolean isTrue {
    return this.str != null && (this.str.equals("1") || this.str.equalsIgnoreCase("S"));
}

また

public boolean isTrue {
    if (this.str != null) {
        final char character = this.str.charAt(0);
        return character == '1' || character == 'S' || character == 's';
    }
    return false;
}

PS: メソッド、フィールド、変数の名前は考慮しないでください。

4

2 に答える 2

5

私の手紙がそこにあることを確認するには"01YN"、私はそうします

public boolean isTrue {
    return this.str != null && ("01YN".indexOf(this.str)>=0);
}

これはクリーンで読みやすい方法だと思います。さらに、ここでハードコーディングする代わりに、 Constant forと doを宣言できます。"01YN"

于 2013-10-23T14:48:22.613 に答える
2

これは試してみる価値があるかもしれません:

switch(str == null ? 'x' : str.charAt(0)) {
    case '1', 'y', 'Y':
        return true;
}
return false;
于 2013-10-23T14:51:30.890 に答える