当前位置:编程学习 > JAVA >>

请问下面代码中的 i 跟 j 最后分别是多少

public class Test{
public static void main(String[] args){
int i = 0;
int j = 0;
j = i++;
System.out.println("i等于 :" + i +  "          j等于:" + j);
}

}


为什么最后结果j是0啊,纳闷了 --------------------编程问答--------------------
可以改为下面的。
int i = 0;
int j ;
i++;
j = i;
System.out.println("i等于 :" + i + "          j等于:" + j);
--------------------编程问答-------------------- i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
--------------------编程问答-------------------- j = i++; 这个 先赋值。然后再运算i --------------------编程问答-------------------- j = i++; 这个先把i赋值给j,然后再运算i

若 j = ++i; 则先运算i,然后把i赋值给j --------------------编程问答--------------------
引用 2 楼 u011559804 的回复:
i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
如果把j换成i的话,i也是0了,这个想不通 --------------------编程问答--------------------
引用 3 楼 rui888 的回复:
j = i++; 这个 先赋值。然后再运算i
哦,知道了,刚刚被一个题搞乱了 --------------------编程问答--------------------
引用 4 楼 u010327503 的回复:
j = i++; 这个先把i赋值给j,然后再运算i

若 j = ++i; 则先运算i,然后把i赋值给j
恩,知道了谢谢 --------------------编程问答--------------------
引用 5 楼 feng1160457741 的回复:
Quote: 引用 2 楼 u011559804 的回复:

i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
如果把j换成i的话,i也是0了,这个想不通


把j换成i的话

引用 5 楼 feng1160457741 的回复:
Quote: 引用 2 楼 u011559804 的回复:

i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
如果把j换成i的话,i也是0了,这个想不通


http://blog.csdn.net/brooksychen/article/details/1624753

可以看下这个
--------------------编程问答--------------------
引用 4 楼 u010327503 的回复:
j = i++; 这个先把i赋值给j,然后再运算i

若 j = ++i; 则先运算i,然后把i赋值给j
本来一开始是i=i++,被这个弄凌乱了,这个i最后怎么是0 啊 --------------------编程问答--------------------
引用 9 楼 feng1160457741 的回复:
Quote: 引用 4 楼 u010327503 的回复:

j = i++; 这个先把i赋值给j,然后再运算i

若 j = ++i; 则先运算i,然后把i赋值给j
本来一开始是i=i++,被这个弄凌乱了,这个i最后怎么是0 啊
恩,怎么说呢,这是一个歧义代码吧,真不好解释。不同的语言可能会有不同的结果。 --------------------编程问答-------------------- j = i++; 这个先把i赋值给j,然后再运算i

若 j = ++i; 则先运算i,然后把i赋值给j --------------------编程问答--------------------
引用 8 楼 u011559804 的回复:
Quote: 引用 5 楼 feng1160457741 的回复:

Quote: 引用 2 楼 u011559804 的回复:

i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
如果把j换成i的话,i也是0了,这个想不通


把j换成i的话

引用 5 楼 feng1160457741 的回复:
Quote: 引用 2 楼 u011559804 的回复:

i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
如果把j换成i的话,i也是0了,这个想不通


http://blog.csdn.net/brooksychen/article/details/1624753

可以看下这个
你可以去让编译器输出,最后i是0,i要是1我还用得着问吗 --------------------编程问答--------------------
引用 10 楼 u010327503 的回复:
Quote: 引用 9 楼 feng1160457741 的回复:

Quote: 引用 4 楼 u010327503 的回复:

j = i++; 这个先把i赋值给j,然后再运算i

若 j = ++i; 则先运算i,然后把i赋值给j
本来一开始是i=i++,被这个弄凌乱了,这个i最后怎么是0 啊
恩,怎么说呢,这是一个歧义代码吧,真不好解释。不同的语言可能会有不同的结果。
其实我本来一开始是问i的,被这个搞的好乱写错代码了 --------------------编程问答-------------------- 1,0 --------------------编程问答-------------------- 这个你看class文件中的指令执行序列就会很清晰了。javap -v Test --------------------编程问答-------------------- i++是先赋值给j再加1 --------------------编程问答-------------------- 1,0   !!!! --------------------编程问答--------------------
引用 2 楼 u011559804 的回复:
i++的意思是先取值 再+1
也就是说先把i的值赋给了j 即j=0
然后i自身再加1 即i=1
+1
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,