Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';当比较字符串时,您知道长度始终为1时,它的性能更高?_Java_String_Performance_Equals - Fatal编程技术网

Java 什么';当比较字符串时,您知道长度始终为1时,它的性能更高?

Java 什么';当比较字符串时,您知道长度始终为1时,它的性能更高?,java,string,performance,equals,Java,String,Performance,Equals,我有一个从数据库返回的字符串,它的长度总是等于1 这个字符串可能等于“0”、“1”、“Y”、“N”或null,这实际上是数据库中的一个约束,出于日志目的,不允许替换它 考虑到值“Y”或“N”不区分大小写,还有什么更具性能的呢 public boolean isTrue { return this.str != null && (this.str.equals("1") || this.str.equalsIgnoreCase("S")); } 或 PS:请不要考虑方法

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

这个字符串可能等于“0”、“1”、“Y”、“N”或null,这实际上是数据库中的一个约束,出于日志目的,不允许替换它

考虑到值“Y”或“N”不区分大小写,还有什么更具性能的呢

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


PS:请不要考虑方法、字段和变量的名称。< /P> < P>检查我的信是否在<代码>“01YN”< /代码>中,我会做< /P>

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

我认为这是一种干净易读的方法。更多信息,您可以为
“01YN”
声明一个
常量,然后执行,而不是在此处硬编码。

要检查
“01YN”
中是否有我的字母,我会执行

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

我认为这是一种干净易读的方法。更多信息,您可以为
“01YN”
声明一个
常量,然后执行,而不是在此处硬编码。

这可能值得一试:

switch(str == null ? 'x' : str.charAt(0)) {
    case '1', 'y', 'Y':
        return true;
}
return false;

这可能值得一试:

switch(str == null ? 'x' : str.charAt(0)) {
    case '1', 'y', 'Y':
        return true;
}
return false;

您也可以使用这个.campocomentariarea.charAt(0);这是您的性能瓶颈吗?“我认为不是——所以不要在意表现上的细微差别。”詹德沃夏克同意。在这里,代码的清晰性应该是最重要的,因为从数据库获取数据所需的时间要比这多出许多数量级。OP正在尝试优化微秒操作。此问题仅用于研究目的。您可以使用以下简单基准来衡量性能:long startTime=System.currentTimeMillis();对于(int i=0;iYou也可以使用此.campocomentariorea.charAt(0);这是您的性能瓶颈吗?我认为不是-所以不要关心性能上的细微差异。@JanDvorak同意。代码清晰性应该是这里的首要任务,因为从数据库获取数据需要比这多几个数量级的时间。OP正在尝试优化微秒操作。这个问题仅用于研究目的操作系统。您可以使用以下简单的基准测试来衡量性能:long startTime=System.currentTimeMillis();for(int i=0;iSlight bug,应该是
=0
@ZongZhengLi是的,修复了。答案很好,尽管我们在这里也遇到了几乎相同的疑问,因为我们可以使用公共布尔值isTrue{返回this.str!=null&(“01YN”.indexOf(this.str.charAt(0))>=0);}轻微的错误,应该是
>=0
@ZongZhengLi是的。答案很好,尽管我们在这里结束了几乎相同的疑问,因为我们可以做公共布尔isTrue{返回this.str!=null&(“01YN”.indexOf(this.str.charAt(0))>=0);}这是一段不错的代码,但实际上并没有回答有关性能问题的问题。我想您已经知道,使用这种方法比较使用char更具性能。这是一段不错的代码,但实际上并没有回答有关性能问题的问题。我想您已经知道使用char进行比较更具性能使用这种方法。