我测试了一下,结果不一样public class Test { public static void main(String[] args){ int i=0; int[] a=new int[10]; while(i<10){ a[i++]+=1; } for(int q =0;q<a.length;q++){ System.out.println(a[q]); } a = new int[10]; i =0; while(i<10){ a[i++]=a[i++]+1;
public class Test{ public static void main(String [] args) { int [] a = {1,2,3,4}; int i = 0; System.out.println(a[i++]+=1); System.out.println(a[i++]=a[i++]+1); } } 又发现了个问题楼上一些兄弟们,写代码思路要灵活些, 你们的试验代码是不是太麻烦了些? 这样试验下去会浪费很多时间的 给你们推荐个简单试验代码!
2楼说的很对,我试验了的 a[i++]+=1;相当于a[i] +=1 a[i++]=a[i++]+1;相当于a[i] = a[i+1] +1 public static void main(String[] args) { int[] a = { 1, 5 }; int i=0; //a[i++]+=1; a[i++]=a[i++]+1; for (int n : a){ System.out.println(n); } System.out.println(i); }} 你可以验证下
package com;public class Ts{ public static void main(String [] args) { int [] a = {1,2,3,4}; int i = 0; System.out.println(a[i++]+=1); System.out.println(i); System.out.println(a[i]); System.out.println(a[i++]+1); System.out.println(i); System.out.println(a[i++]); } }
public class Test{ public static void main(String[] args){ int[] a={1,5,9}; int i=0; a[i++]+= 1; // a[i++]=a[i++] +1; System.out.println(a[0]+" "+a[1]+" "+a[2]);
a[i++]+=1;相当于a[i] +=1
a[i++]=a[i++]+1;相当于a[i] = a[i+1] +1
1假入程序里是
System.out.println(a[b++]+=1);
System.out.println(a[b++]=a[b++]+1);
这个是一种结果;
2如果是
//System.out.println(a[b++]+=1);
System.out.println(a[b++]=a[b++]+1);
结果又不一样!
public static void main(String[] args){
int i=0;
int[] a=new int[10];
while(i<10){
a[i++]+=1;
}
for(int q =0;q<a.length;q++){
System.out.println(a[q]);
}
a = new int[10];
i =0;
while(i<10){
a[i++]=a[i++]+1;
}
for(int q=0;q<a.length;q++){
System.out.println(a[q]+"*****");
}
}
}结果是:
1
1
1
1
1
1
1
1
1
1
1*****
0*****
1*****
0*****
1*****
0*****
1*****
0*****
1*****
0*****
如果2个式子同时来输出的话相当于
a[i++]+=1;相当于a[i] +=1
a[i++]=a[i++]+1;相当于a[i+1] = a[i+1+1] +1
public static void main(String [] args) {
int [] a = {1,2,3,4};
int i = 0;
System.out.println(a[i++]+=1);
System.out.println(a[i++]=a[i++]+1);
}
}
又发现了个问题楼上一些兄弟们,写代码思路要灵活些,
你们的试验代码是不是太麻烦了些?
这样试验下去会浪费很多时间的
给你们推荐个简单试验代码!
a[i++]+=1;相当于a[i] +=1
a[i++]=a[i++]+1;相当于a[i] = a[i+1] +1 public static void main(String[] args) {
int[] a = { 1, 5 };
int i=0;
//a[i++]+=1;
a[i++]=a[i++]+1;
for (int n : a){
System.out.println(n);
}
System.out.println(i);
}}
你可以验证下
package com;public class Ts{
public static void main(String [] args) {
int [] a = {1,2,3,4};
int i = 0;
System.out.println(a[i++]+=1);
System.out.println(i);
System.out.println(a[i]);
System.out.println(a[i++]+1);
System.out.println(i);
System.out.println(a[i++]);
}
}
public static void main(String[] args){
int[] a={1,5,9};
int i=0;
a[i++]+= 1;
// a[i++]=a[i++] +1;
System.out.println(a[0]+" "+a[1]+" "+a[2]);
int[] b={1,5,9};
i=0;
b[i++]=b[i++] +1;
System.out.println(b[0]+" "+b[1]+" "+b[2]);
System.out.println("dhdh");
}
}
结果:
2 5 9
6 5 9
假设 i=0; a[i++]+=1; 等价于 a[0] += 1; a[i++]=a[i++]+1; 等价于 a[0] = a[1]+1;如果 a[0] = a[1] 则相同,反之则不同
a += 1;首先会把a取出来付给一个中间变量,例如temp,然后才运算a = temp +1;
a = a +1;编译器直接把后边a 转化为一个常量,直接相加后赋值给前面的a ,所以就这个例子来说后者效率会高些。
a[i++] += 1;其实就是这么个意思:a[i] += 1;
a[i++] = a[i++] + 1; 相当于a[i] = a[i+1] =1 (不同语言里面执行顺序也有关!)
a[i++]+=1 等于 a[i]=a[i]+1 最后i等于 i+1;总结出 : i++ 只有在 被显式地写出来以后 才去 做 自加运算;
我可能只知道了 大家一直都清楚的 东西 学习中。。
a[i] += 1; i=i+1;
同样对 a[i++]=a[i++]+1;进行分解等价于:
a[i]=a[i+1]+1; i=i+1; i=i+1;(这个的分解不恰当 ,其中第一次的i=i+1,应该在赋值操作之前执行 )