在比较字符串时,你知道长度总是一个吗?

Phi*_*ffi 1 java string performance equals

我有一个从数据库返回的字符串,其长度总是等于1.

此String可能等于"0","1","Y","N"或null,这实际上是数据库中由于日志目的而不允许替换的约束.

考虑到值"Y"或"N"不区分大小写,那么更具性能的是什么?

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

要么

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

PS:请不要考虑方法,字段和变量的名称.

Sur*_*tta 5

为了检查我的信"01YN",我会这样做

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

我认为这是一种清晰易读的方式.更多的你可以声明一个Constant for "01YN"和do,而不是硬编码.