Java 如何进一步优化此代码
如何进一步优化这段代码。 如果可能的话,请建议我通常应该记住的Java 如何进一步优化此代码,java,algorithm,Java,Algorithm,如何进一步优化这段代码。 如果可能的话,请建议我通常应该记住的 public void funct(String str, int[] arr) { String temp = "saved"; for (int i = 0; i < arr.length; i++) { if (str.equals(temp) && arr[i] * 2 > 10) { Integer num
public void funct(String str, int[] arr) {
String temp = "saved";
for (int i = 0; i < arr.length; i++) {
if (str.equals(temp) && arr[i] * 2 > 10) {
Integer num = new Integer(arr[i]);
num = num * 2;
System.out.print(num.toString());
}
}
}
public void函数(字符串str,int[]arr){
字符串temp=“已保存”;
对于(int i=0;i10){
整数num=新整数(arr[i]);
num=num*2;
System.out.print(num.toString());
}
}
}
谢谢两个观察结果:
Integer
对象替换为int
str.equals(temp)
检查。为什么不在if(str.equals(temp))中执行整个循环您的代码没有太大意义,例如,
str
和temp
实际上并不需要。所以优化它们的第一步是删除它们。。。也可以使用int
,而不是Integer
:
public void funct(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 5) {
System.out.print(arr[i] * 2);
}
}
}
注意,由于溢出,表达式
arr[i]*2>10
实际上相当于(arr[i]>5&&arr[i]<1073741824)| |(arr[i]>-2147483643&&arr[i]<-1073741824)
,这可能不是您想要的,但为了以防万一,建议对arr[i]进行优化>5
不保留语义。如果您真的关心字符串比较,那么您的代码可以编写如下
public void funct(String str, int[] arr)
{
if (!str.equals("saved"))
return; //just return if String value is not "saved", reduces the loop execution.
for(int i: arr) {
if (i>5)
System.out.println(""+(i<<1)); //Left shift is faster than multiplication. Concatenation is just for printing as SOP will not print integers directly.
}
}
public void函数(字符串str,int[]arr)
{
如果(!str.equals(“已保存”))
return;//如果字符串值未“保存”,则仅返回,以减少循环执行。
用于(int i:arr){
如果(i>5)
System.out.println(“+”(这更像是一个问题。如果你想在这里得到一些帮助,请说明你的意图,方法应该做什么,通常的输入是什么,预期的输出是什么。我们喜欢代码,但不喜欢猜测。除此之外,使用int num=arr[i];
而不是生成一个全新的整数
实例。此外,条件中的第一次乘法也不是真的需要。@Slanec:true,修复了,谢谢!if(arr[i]>5)应该足够了。
public void funct(String str, int[] arr)
{
if (!str.equals("saved"))
return; //just return if String value is not "saved", reduces the loop execution.
for(int i: arr) {
if (i>5)
System.out.println(""+(i<<1)); //Left shift is faster than multiplication. Concatenation is just for printing as SOP will not print integers directly.
}
}