我是java的新手,对java没有更多的了解。请帮助我尽可能地优化它。
public void q1(String str, int[] arr) {
String local = "findnumber";
for(int i=0; i<arr.length; i++) {
if(str.equals(local) && arr[i] * 2 > 10) {
Integer in = new Integer(arr[i]);
in = in * 2;
System.out.print(in.toString());
}
}
}发布于 2012-06-13 07:46:39
如果您的目标是只打印数字,并且不需要它们是整数,则可以使用:
public void q1(String str, int[] arr) {
if(!"findnumber".equals(str)) return;
for(int i : arr) {
if(i > 5) {
System.out.print(i * 2);
}
}
}发布于 2012-06-13 07:47:20
首先,您应该首先尝试使您的代码具有可读性和可维护性。这是最重要的事情。首先正确地缩进它,并给您的方法和变量提供有意义的名称。
现在,对于性能,有很多东西可以优化,但是它不会有太大的变化,除非这个方法被称为数十亿次:
str.equals(local)测试应该在循环之外执行一次int in = arr[i] * 2;以下是一个完整的优化版本:
private static final String FIND_NUMBER = "findnumber";
public void q1(String str, int[] arr) {
if (FIND_NUMBER.equals(str)) {
for (int i = 0; i < arr.length; i++) {
int doubleValue = arr[i] * 2;
if (doubleValue > 10) {
System.out.print(doubleValue);
}
}
}
}发布于 2012-06-13 07:41:02
您可以将str.equals(本地)从循环中提取出来。这将保护循环中执行的大多数操作:
public void q1(String str, int[] arr) {
String local = "findnumber";
boolean string_matches = str.equals(local);
for(int i=0; i<arr.length; i++) {
if(string_matches && arr[i] * 2 > 10) {
Integer in = new Integer(arr[i]);
in = in * 2;
System.out.print(in.toString());
}
}
}如果不匹配,甚至可以返回:
public void q1(String str, int[] arr) {
String local = "findnumber";
if (!str.equals(local)) {
return;
}
for(int i=0; i<arr.length; i++) {
if(arr[i] * 2 > 10) {
Integer in = new Integer(arr[i]);
in = in * 2;
System.out.print(in.toString());
}
}
}https://codereview.stackexchange.com/questions/12551
复制相似问题