Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 返回子字符串';s内容与返回子字符串本身_Java_String_Performance_Substring - Fatal编程技术网

Java 返回子字符串';s内容与返回子字符串本身

Java 返回子字符串';s内容与返回子字符串本身,java,string,performance,substring,Java,String,Performance,Substring,我想知道这个, public String seeColor(String str) { int l = str.length(); if(l >= 3 && str.substring(0, 3).equals("red")) return "red"; if(l >= 4 && str.substring(0, 4).equals("blue")) return "blue"; else return ""; }

我想知道这个,

public String seeColor(String str)
{
    int l = str.length();
    if(l >= 3 && str.substring(0, 3).equals("red")) return "red";
    if(l >= 4 && str.substring(0, 4).equals("blue")) return "blue";
    else return "";
}
编译的速度比这个快

public String seeColor(String str)
{
    int l = str.length();
    if(l >= 3 && str.substring(0, 4).equals("red")) return str.substring(0, 4);
    if(l >= 4 && str.substring(0, 5).equals("blue")) return str.substring(0, 5);
    else return "";
}

或者两种方法都很糟糕,还有另一种更有效的方法,我不知道?

您可以使用以下代码来获得更好的性能:

public String seeColor(String str)
{
    if(str.startsWith("red")) return "red";
    else if(str.startsWith("blue")) return "blue";
    else return "";
}

为了获得更好的性能,您可以使用以下代码:

public String seeColor(String str)
{
    if(str.startsWith("red")) return "red";
    else if(str.startsWith("blue")) return "blue";
    else return "";
}

每次调用
子字符串
都会得到生成子字符串的结果,因此第一个选择更有效。但是,您当前的代码不是
null
安全的(因此我将测试
null
),我更希望


每次调用
子字符串
都会得到生成子字符串的结果,因此第一个选择更有效。但是,您当前的代码不是
null
安全的(因此我将测试
null
),我更希望


你为什么关心编译时间的差异?基本上没有什么不同。请注意,这两个示例并不等效:第二个示例等效于简单的
return”“
(删除两个条件;忽略空安全性)因为两个条件都不匹配。我正在做一个关于CodingBat的练习,字符串
str
将被其他值替换。。。我想知道哪种方法是最快的,因为在解决问题时,我总是尝试使用性能最友好的方法。编辑:我在实际应用程序中使用哪种方法真的没有区别吗?编译时间还是执行时间?你为什么关心编译时间的差异?基本上没有什么不同。请注意,这两个示例并不等效:第二个示例等效于简单的
return”“
(删除两个条件;忽略空安全性)因为两个条件都不匹配。我正在做一个关于CodingBat的练习,字符串
str
将被其他值替换。。。我想知道哪种方法是最快的,因为在解决问题时,我总是尝试使用性能最友好的方法。编辑:在实际应用程序中使用哪种方法真的没有区别吗?编译时还是执行时?