int i = 11; int j = 11; j = i++; int a = i++; System.out.println(j+","+i); 则输出11,13,是不是说明 YidingHe(机枪兵)说的没错呢?
好吧我承认我在玩文字游戏,JVM里的细节我一点也不清楚。
i += i++;等价于 i=i+(i++);i++是先参与运算再自加1 结果是22
开始那道题目如果改为++i呢 是23还是24呢 class Test { public static viod main(String args[]) { int i = 11; i = i+(++i); System.out.println(i); } } ++i先运算变成12 那么这个时候i已经是12了 再和i相加不就变成24了么。为什么是23啊
System.out.println(i);为IO控制台输出,又不是main返回值,跟main的返回类型无关?比如说8:
你想写些数据到文件
public void writleDate(){
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line =br.readLine();
br.witleLine(line);
//这里你读写数据,完全跟函数本身的类型无关嘛
}
而++i就是先自加1再参与运算,如果是i=i+(++i)的话,结果就是23了
i += i++;等价于 i=i+(i++);i++是先参与运算再自加1 结果当然是22
而++i就是先自加1再参与运算,如果是i=i+(++i)的话,结果就是23了li_kewei() ( )
-------------------------------------------------------------
楼上的说的对。还有就是+,++的优先级的级别--------------------------------------------------------------------------------
技术的提升在于不断的探讨和交流,欢迎大家加入《『Ben』J2EE交流群》QQ群:24711176
int j = 11;
j = i++;
i = i++;
System.out.println(j+","+i);
那谁能解释一下这个
i = i++; // j=11, i=12; 运行完之后虽然 i++ 成为了13,但是这个13还没有来得及赋给i就被i=i给覆盖了。
int i = 11;
int j = 11;
j = i++;
int a = i++;
System.out.println(j+","+i);
则输出11,13,是不是说明 YidingHe(机枪兵)说的没错呢?
是23还是24呢
class Test
{
public static viod main(String args[])
{
int i = 11;
i = i+(++i);
System.out.println(i);
}
}
++i先运算变成12 那么这个时候i已经是12了
再和i相加不就变成24了么。为什么是23啊