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
将被其他值替换。。。我想知道哪种方法是最快的,因为在解决问题时,我总是尝试使用性能最友好的方法。编辑:在实际应用程序中使用哪种方法真的没有区别吗?编译时还是执行时?