请问这个变量等于几?为什么,很简单。 i=0 没问题 i = i +(i++)i++ = 0 i = 0 0+0=0 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键在于 i=i+(i++);在解释“i+(i++)”时,JVM从左到右取值<1>首先取出“i”,结果为0<2>然后计算“(i++)”,结果为1<3>将<2>的结果跟<1>的结果相加就等于1了 i++ 后,i的值当然是1了。这里打印出来的值是0的原因,应该是因为“++”运算符优先于“=”,所以i++后虽然i=1,但又进行了一次赋值,就使i=0了。 i=0相当于:public class test{ public static void main(String[] args){ int i=0; int a=0; int b=0; b=i; a=i++; //a=0,i=1 但我们用的是a 的值 b=b+a; //实际上就是i=i+(i++); System.out.println("i="+i); }} i++是先取i的值,再把i加1++i是先把i加1,再取i的值 设置了字符编码格式但还是存在少量乱码 有关类的继承问题 菜鸟简单问题 在线等 专注UavaSwing Java3D的论坛开放 关于读取数据乱码 如何利用jxl更改Excel文件中某一单元格的字体颜色 sybase + weblogic7 linux下JAVA串口编程问题 beginner: java的applet中,怎么让一个按钮不能使用? WEEK_OF_YEAR代表什么意思 JNDI和LDAP问题,言者有其分 关于jcreator编译时的问题
在解释“i+(i++)”时,JVM从左到右取值
<1>首先取出“i”,结果为0
<2>然后计算“(i++)”,结果为1
<3>将<2>的结果跟<1>的结果相加就等于1了
相当于:public class test{
public static void main(String[] args){
int i=0;
int a=0;
int b=0;
b=i;
a=i++; //a=0,i=1 但我们用的是a 的值
b=b+a; //实际上就是i=i+(i++);
System.out.println("i="+i);
}
}
++i是先把i加1,再取i的值