`

j=j++与j=++j的区别

    博客分类:
  • Java
阅读更多
jvm里面有两个存储区,一个是暂存区(是一个堆栈),另一个是变量区。
语句istore_1是将堆栈中的值弹出存入相应的变量区(赋值);语句iload_1是将变量区中的值暂存入堆栈中。
因为j = j++;是先将j的值(0)存入堆栈,然后对变量区中的j自加1,这时j的值的确是1,但是随后的istore_1又将堆栈的值(0)弹出赋给变量区的 j,所以最后j = 0。 也就是说你执行100次j=j++,最后j也是0,但是你要是j=++j执行100次最后j=100,原理因为j = ++j;是先对变量区中的j自加1,然后再将变量区中j的值(1)存入堆栈,虽然最后执行了istore_1,但也只是将堆栈中的值(1)弹出赋给变量区的j,所以j = ++j;的结果是j = 1。





i++的情况
iconst_0  得到或创建一个初始常量值0
istore_1  将初始值0赋给i(这个0是来自暂存区,i是变量区)
iload_1    i要开始自增了,先加载,值是0(自增运算是在暂存区中进行,因此加载的值0放入暂存区)
iinc 1,1    i自增为1(这个计算结果仍在暂存区)
istore_1   将值再赋给i (将暂存区的计算结果赋给变量区的变量i)

++i的情况
iconst_0
istore_1
iinc 1,1
iload_1
istore_1
分享到:
评论

相关推荐

    数据结构矩阵相乘

    数据结构矩阵相乘描述 M是m1*n1矩阵,N是m2*n2矩阵。当n1=m2时有: for(i=1;i<=m1;++i) for(j=1;j<=n2;++j){ Q[i][j]=0; for(k=1;k<=n1;++k)Q[i][j]+=M[i][k]*N[k][j]; }

    [详细完整版]数据结构复习.doc

    } 参考答案: i与j初始和为1,其后每循环一次,i和j中有且仅有一个值增1,即i与j的和增1。由于循 环条件为i+j<=n,因此循环共执行n次。 语句频度=n。 for (i=1;i<=n;i++) for (j=1;j<=i;j++) for (k=1;k<=n;k++) ...

    一个很简单的冒泡排序算法

    一个很简单的冒泡排序算法 void BubbleSort(double a[],int n) { int i,j,flag=1; double temp;... if(a[j]>a[j+1]) { flag=1; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } }

    Java 基础习题答案.docx

    Java 基础习题答案 ...if( a==b ) m+=a; else m=++a*m; A) 15 B) 50 C) 55 D) 5 2.下列语句序列执行后,k 的值是(B )。 int i=4,j=5,k=9,m=5; if(i>j||m) k++; else k--; A) 5 B) 10 C) 8 D) 9

    1192: C3二维数组扫雷游戏地雷数计算

    for(int j=1;j<=b;j++){ cin>>c[i][j]; } } for(int i=1;i<=a;i++){ for(int j=1;j<=b;j++){ if(c[i][j]=='?'){ z=0; for(int q1=i-1;q1<=i+1;q1++){ for(int q2=j-1;q2<=j+1;q2++){ ...

    数据结构程序设计.txt

    j++) { if(i>j) A[i][j]=A[j][i]; else A[i][j]=A[i][j]; } } printf("输出对称矩阵:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%-4d",A[i][j]); printf("\n"); } k=0; for(i=1;i<=n;i++) for(j=1;j<=n;j...

    北师大高中数学必修函数y=Asinωx+j的图像PPT课件.pptx

    北师大高中数学必修函数y=Asinωx+j的图像PPT课件.pptx

    基于GTK+的单词数值计算器

    1、按照规则计算单词的值,如果A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 , 如 WINJACK这个...

    最长公共子序列算法C++实现

    最长公共子序列问题 for ( i = 0; i < m+1; i++) ... else if(c[i-1][j]>=c[i][j-1]) { c[i][j]=c[i-1][j]; b[i][j]=2; } else { c[i][j]=c[i][j-1]; b[i][j]=3; }

    函数y=Asin(w+j)的图象•典型例题分析.doc

    函数y=Asin(w+j)的图象•典型例题分析.doc

    数值分析C源代码程序

    可以用来解方程组 for(k=0;k;k++) { if(a[k][k]==0) return 0; for(i=k+1;i;i++) { m[i][k]=a[i][k]/a[k... {aa[i][j]=a[i][j]-m[i][k]*a[k][j]; a[i][j]=aa[i][j]; } b1[i]=b[i]-m[i][k]*b[k]; b[i]=b1[i]; }

    ag.rar_SUM

    词法分析程序,可对以下的C源程序进行分析:main() {int a[12] ,sum for(i=1 i<=12 i++) {for(j=1 j<=12 j++)scanf("%d",&a[i][j]) } for(i=12...=1 j--){ if(i==j&&i+j==13)sum+=a[i][j] } } printf("%c",sum) }

    利用Warshall_算法求二元关系的可传递闭包

    代码 #include #include using namespace std; ... c[ii][jj] +=a[ii][kk]*b[kk][jj]; } } for(int iii=1;iii<=n;iii++){ for(int jjj=1;jjj<=n;jjj++) b[iii][jjj]=c[iii][jjj]; } }

    奇偶对调,n个数以内

    int a[100], b[100], n, i, j, temp; int ji = 0; int ou = 0; int count = 0; scanf("%d", &n); for (i = 0; i != n; ++i) { scanf("%d", &a[i]); if (a[i] % 2 == 0) { count++; } } ji = count; ...

    疯狂五笔输入法

    键jjv=钅j+廴jv 这adwo=辶ad+文wo 卵medd=卯me+丶d+丶d 6、后缀,o和z无意义 爱=a 爱=aoo 乙=ao 乙=aooo 比=bz 比=bzoo 匕=bzo 7、字根表,/举例 A(zh) ao乛乙=折 ao爱 aa专=专a+乛a ad之辶=之a+...

    Linux综合实验(GTK+单词计算器)

    1、 按照规则计算单词的值,如果A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 , 如 WINJACK...

    大整数的乘法----

    temp+=(m[l-i]-48)*(n[l-j]-48); } } } v=(temp+t)%10; s[k]=v; t=(temp+t)/10; k++; } temp=0; for(i=0;i<=l;i++) { for(j=0;j<=l;j++) if((i+j)==k-1) { temp+=(m[l-i]-48)...

    QCD和$$ s ^ {PC} = 1 ^ {+-} $$ JPC = 1的$$ ss {\ bar {s}} {\ bar {s}} $$ sss´s四夸克态的规则研究 +-

    我们应用QCD和规则的方法研究BESIII协作在$$ J / \ psi的2.0–2.1 GeV区域的$$ \ phi \ eta ^ \ prime $$ ϕη'质谱图中新观察到的结构X \ rightarrow \ phi \ eta \ eta ^ \ prime $$ J /ψ→ϕηη'衰减。...

    数据结构答案

    大学教育2.(1)×(2)×(3)√ 3.(1)A(2)C(3)C ...for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 【解答】x=x+1的语句频度为: T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/6 ,数据结构课后答案

    动态规划求最长公共子序列

    利用动态规划求最长公共子序列: #include #include #include #define MAXLEN 100 void LCSLength(char *x, char *y, int m, int n, int c[][MAXLEN], int b[][MAXLEN]) ... if(x[i-1] == y[j-1])

Global site tag (gtag.js) - Google Analytics