2016-08-25 46 views
1

我想了解的Java 7环境中,该代码,Java表达式

int T = getIntVal(); 
while (T--> 0) { 
// do stuff here 
} 

T没有while循环内进行修改。有人可以解释这个代码吗?

+2

[这里有一个相关的问题(http://stackoverflow.com/questions/1642028/what-这是应该给你的答案(即使它是C++,行为是相同的)。 – resueman

+1

你觉得'T - '做什么? – bradimus

+1

使用以块字母开头的变量名是不好的做法。没有这样的表达 - >在java中。不要混淆在 - 和>之间。 – PKR

回答

4

让您感到困惑的是之间没有空格和>,所以你可能会认为有一个-->运营商。
看起来像这样:

while (T-- > 0) { 

} 

它更有意义,在每个循环中,您减少牛逼一个

1

- 每次运行循环时(从循环条件开始运行之后, - T之后), - (递减)运算符将从T中减去。

最简单的方法是只尝试一下:

public class Tester { 

    public static void main(String[] args) { 
     System.out.println("-------STARTING TESTER-------"); 
     int T = 5; 
     while (T-- > 0) { 
     System.out.println(T); 
     } 
     System.out.println("-------ENDING TESTER-------"); 
    } 

} 

输出:

-------STARTING TESTER------- 
4 
3 
2 
1 
0 
-------ENDING TESTER------- 

如果 - 运营商呈丁之前,输出应该是这样的(因为它减去前环路条件运行):

-------STARTING TESTER------- 
4 
3 
2 
1 
-------ENDING TESTER-------