Java中i=i和i=i的等式有何深层次区别?

2026-04-19 19:100阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计493个文字,预计阅读时间需要2分钟。

Java中i=i和i=i的等式有何深层次区别?

javapublic class Count { public static void main(String[] args) { int i=0; i=i++; // i 先赋值为 0,然后 i 自增 System.out.println(i); // 输出 0 }}

public class Count { public static void main(String[] args) { int i = 0; i = i++ ; System.out.println(i); } }

上面代码输出的i为0,如果是把i = i++换成i=++i,又会输出1,这是由于i++是先赋值,再计算导致,但是为什么先赋值呢?

public static void main(String[] args) { int i = 0; i++ ; } public static void main(java.lang.String[]); Code: 0: iconst_0 将int型0推送至栈顶(找到0) 1: istore_1 将栈顶int型数值存入第二个本地变量(变量就是i) 2: iinc 将指定int型变量增加指定值(如i++, i--, i+=2等) 5: return

上图是i++的字节码,++i的和i++的一摸一样,0和1就是最基础的给i赋值为0,iinc就是把i自增。

阅读全文

本文共计493个文字,预计阅读时间需要2分钟。

Java中i=i和i=i的等式有何深层次区别?

javapublic class Count { public static void main(String[] args) { int i=0; i=i++; // i 先赋值为 0,然后 i 自增 System.out.println(i); // 输出 0 }}

public class Count { public static void main(String[] args) { int i = 0; i = i++ ; System.out.println(i); } }

上面代码输出的i为0,如果是把i = i++换成i=++i,又会输出1,这是由于i++是先赋值,再计算导致,但是为什么先赋值呢?

public static void main(String[] args) { int i = 0; i++ ; } public static void main(java.lang.String[]); Code: 0: iconst_0 将int型0推送至栈顶(找到0) 1: istore_1 将栈顶int型数值存入第二个本地变量(变量就是i) 2: iinc 将指定int型变量增加指定值(如i++, i--, i+=2等) 5: return

上图是i++的字节码,++i的和i++的一摸一样,0和1就是最基础的给i赋值为0,iinc就是把i自增。

阅读全文