Java 有没有办法在for语句中切换变量?

Java 有没有办法在for语句中切换变量?,java,Java,我正在学习Java,并使用这个for语句进行循环: for (int i = 0; i <3; i++){ ... } for(int i=0;i添加一个mod运算符。如果i%2==0,则对偶数执行某些操作,否则对奇数执行某些操作。for(int i=0;i

我正在学习Java,并使用这个for语句进行循环:

for (int i = 0; i <3; i++){ 
...
}

for(int i=0;i添加一个mod运算符。如果i%2==0,则对偶数执行某些操作,否则对奇数执行某些操作。

for(int i=0;i<3;i++){
for (int i = 0; i < 3; i++) { 
    if(i % 2 == 0) {
        //even, do Y
    } else {
        //odd, do X
    }
}
如果(i%2==0){ //即使如此,你也会这样做吗 }否则{ //奇数,dox } }
我不确定编译器如何优化该语句,我知道微优化是万恶之母,但您可以使用布尔变量来控制您的状态:

boolean gray = false;
for(...) {
    if(gray) {
    } else {
    }
    gray != gray;
}
在现实生活中,我可能会将其修改为2,正如本文中的示例所示,但总有替代方案。

只是为了我的微优化,所以拍摄我的徽章,并为这个问题提供一整套替代方案:

for(int xa=0; xa<3; xa++) { 
    if((xa&0x1)==0) {
        // even
        }
    else {
        // odd
        }
    }

for(int-xa=0;xaI相信是这样。)祝您的编码愉快!我真的很喜欢您的答案。以前从未想过这一点,但是,当然,如果最后一位是1,则它是奇数,否则它是偶数。FWIW:微优化被认为是“根”但是,尽管如此,我认为对常见的习惯用法进行推理,并养成在其他方面相同的情况下使用最有可能提供最佳性能的习惯,是将黑客与真正优秀的程序员区分开来的东西。只是我的2c。对于这一点,使用相对昂贵的当然,除非编译器找出
((x%2)==0)
(或
==1
)并将其转换为我的答案。这里有一个关于检查字符串是否为空的问题,所有的答案都涉及到修剪字符串和检查其长度。不久前,我检查了StringUtils.isBlank的源代码(来自Commons Lang),他们不修剪字符串,而是从开始到结束检查字符串中是否有空格以外的内容。修剪方法可能会这样做并返回一个新字符串,这样做可以防止创建新对象。