这个就是前加后加的问题了,看上去就那么一句话。++在前先加在运行。在后面的先运算在加!
我想问问下面这个程序:
for(int i=1;i<5;++i){
System.out.println(i);
} for(int i=1;i<5;i++){
System.out.println(i);
}
为什么输出会是一样的。这样的话第二个循环这个i不也要先参与运行才自己加加的么?
如果按照县取值在自己加加的话 第二个循环应该输出1--5才对。
首先,i=1 条件成立,输出1,然后到i++这里,先取值,i还是1,1<5,又成立,所以输出i,但是i在取值后会++所以i是2.如此推下去会输出1--5.
求解释,不懂啊.....
到底该怎么理解呢?for循环 i++++i
我想问问下面这个程序:
for(int i=1;i<5;++i){
System.out.println(i);
} for(int i=1;i<5;i++){
System.out.println(i);
}
为什么输出会是一样的。这样的话第二个循环这个i不也要先参与运行才自己加加的么?
如果按照县取值在自己加加的话 第二个循环应该输出1--5才对。
首先,i=1 条件成立,输出1,然后到i++这里,先取值,i还是1,1<5,又成立,所以输出i,但是i在取值后会++所以i是2.如此推下去会输出1--5.
求解释,不懂啊.....
到底该怎么理解呢?for循环 i++++i
你那样看是看不出来的,要像我这样看。public class For2Test
{
public static void main(String[] args)
{
int j = 0;
for (int i = 0; i<5 ; j=i++ )
{
System.out.println(j);
}
j = 0;
for (int i = 0; i<5 ; j=++i )
{
System.out.println(j);
} System.out.println("Hello World!");
}
}
++i,整个表达式取新值
什么叫表达式的值?
j=i++,j=++i,这是把表达式的值赋给j,这个时候就有区别
function(i++),function(++i),这是用表达式的值作为函数的参数,这个有区别
你单独一句i++;没有任何别的东西来调用它的值,这个值就没有意义
就是说,单独的一句i++和++i,是没有任何区别的(运行速度有区别),都等价于i=i+1
你说的i<5,那都已经是下一个语句了,你干脆等程序运行完再把那个1加上好了
for(int i = 0;i < 5;i++){
语句;
}这个程序是这样执行的,首先判断i是否满足i < 5; 如果满足,则执行"语句";然后执行i++,然后继续判断是否满足i < 5;如果满足,则执行"语句"...当i == 4的时候 再次i++; 之后再次判断i < 5; 这时显然不成立,然后不执行"语句";程序结束。程序最后输出的是4 而i的值是5.楼主试想,照这种思路,i++与++i是不是一样的呢?
for (int i = 1; i < 5;) {
System.out.println(++i);
} for (int i = 1; i < 5;) {
System.out.println(i++);
}这样就能看出区别了。
System.out.println(i);
}
for(int i = 1; ++i < 5 ; ){
System.out.println(i);
}
一个是先运算再自加
一个是先自加再运算
这里的两种方法均是在同一条语句中执行的
而楼主提出的问题在与不了解自加和运算的位置
代码中给出的问题中
无论使用哪种方式,都不影响判断语句 i<5;
就是说,在执行 i<5;时,所谓的"运算"和"自加"都已经结束
因为他们根本就并不是在同一条语句中
所以运行结果就一样了
for(int i=0;i<5;i++)
{
}
int i=0;为第一条语句
接着判断 i<5;
如果为true
进入循环体
在循环体结束后
进行自加运算
就是i++;
然后再次判断 i<5;
进入循环
所以在for循环中,是多条语句的集合体
而“;”确实是可以表示一个语句的结束