有另外一个帖子和你问题差不多例子如下 public class Test { public static void main(String[] args) { int i=2; i=i++; //这里要注意是把i++这个表达式的值赋给i,而i++的这个表达式的值是2,i是3,把表达式的值又 //赋给 i,那么i又变回2了 int j=i++; //这里不用解释了吧,J=3 System.out.println(i+":"+j); } } //i=i++;并不i++相同,如下代码 //public class Test { // public static void main(String[] args){ // int sum=0; // for(int i=0;i<100;i++){ // sum=sum++; // } // System.out.println(sum); // } //} //结果为0,如果把sum=sum++;改成sum++;就是100了
改成直接用i++;或者i=++i;就会有变化了。
如:int i = 6;
System.out.println(++i); 输出结果为:7
++在后,先使用,在执行++
int i = 6;
System.out.println(++i); 输出结果为:6
int j = i;
System.out.println(j); 输出结果为:7
--也和++一样
int i=6;
int j=i++; (1)
i=j; (2)(1)中 先把i的值赋给j 之后i的值+1 即i=7
(2)把j的值赋给i 这时i的值又变成了6清楚了吧?
i=++i 是先给i加1,然后在赋值。
public class Test { public static void main(String[] args) {
int i=2;
i=i++; //这里要注意是把i++这个表达式的值赋给i,而i++的这个表达式的值是2,i是3,把表达式的值又
//赋给 i,那么i又变回2了
int j=i++; //这里不用解释了吧,J=3
System.out.println(i+":"+j);
}
}
//i=i++;并不i++相同,如下代码
//public class Test {
// public static void main(String[] args){
// int sum=0;
// for(int i=0;i<100;i++){
// sum=sum++;
// }
// System.out.println(sum);
// }
//}
//结果为0,如果把sum=sum++;改成sum++;就是100了
非也。'++'运算符的优先级比赋值号'='高,怎么会先赋值呢?1楼正解。++在前在后,++都会先执行,也就是i的值都会变为i+1,但i++和++i这两个表达式的值不同。i++这个表达式的值是自加之前i的值 ,++i这个表达式的值是自加之后i的值 。
int c=5;
c+=c++;
System.out.println(c);
{
public static void main(String[] args)
{
int i=6;
int j=6;
i=i++;
j=++j;
System.out.println(i);
System.out.println(j); }
}
這個問題是關於操作符的優先級問題,上網找下下有。。
http://www.zhubajie.com/task/?welcome=1387159
如果真如你所说,i++也另外开辟了存储空间,那效率高在哪?
i = i;
i++;
i=i++先执行 = 再执行 ++ 等号前的i和等号后的i 是两个不同的空间
但是i++的值仍为6
最后将i++赋值给i
结果i=6