Java for循环迭代并循环多个变量直到满足条件

时间:2011-08-21 20:04:40

标签: java for-loop

我编写了以下内容,它可以执行我想要的操作,但我认为这比在for循环中执行条件语句更快。

int i,j,k,l;
int[] X = new int[] {111,222,333,444};
int XL = X.length;

for (i=0, j=1; i<XL; j=(j<XL-1)?j+1:0, i++) {
  println("i:" +i +" j:" + j);
}

// returns:
// i:0 j:1
// i:1 j:2
// i:2 j:3
// i:3 j:0

3 个答案:

答案 0 :(得分:3)

对问题采取不同的角度而不仅仅是说“做x使代码速度提高50%”,你是如何测试代码的,以及你如何确定它太慢了?

现在,Java的JIT编译器非常非常擅长它的功能,因此您可以进行这些微观优化。如果您开始进行大量的低级优化并且使代码模糊不清:

  • 您可能会或可能不会实现小幅提升
  • 您将使您的代码几乎无法维护且难以阅读
  • 您可能会欺骗JIT编译器不进行其他方面的优化(因为它比混淆代码更能理解常见的Java习语。)

如果你仍然,肯定,并且不可避免地需要从你的应用程序中提高速度,那么最好的办法就是在汇编程序中编写这些位。如果你只是试图让事情变得更快,那么最好的现实世界的建议几乎总是“不要打扰”。

答案 1 :(得分:1)

Kerrek SB的评论是我的首选解决方案。 在这里,它被重写为更通用:

String[] X = new String[] {"AAA", "BBB", "CCC", "DDD"};
int XL = X.length;

for (int i=0; i<XL; i++) {
  println("i:" +X[i] +" j:" + X[(i+1)%XL] );
}

将返回:

i:AAA j:BBB
i:BBB j:CCC
i:CCC j:DDD
i:DDD j:AAA

答案 2 :(得分:0)

首先,你的for循环并不是那么令人困惑,你可以添加一些注释以使其更容易理解。

如果您想在可读性的前提下重写它,可以使用一个索引器来完成。

int i; 
int[] X = new int[] {111,222,333,444}; 


for (i=0; i < X.length; i++) { 
  println("i:" +i +" j:" + (i < X.lenght -1) ? i + 1 : 0); 
}