public class T4{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int s = 0;
//String a = s.concat("a");
//s++;
System.out.println(s++);
}
}
public static void main(java.lang.String[]);
Code:
Stack=2, Locals=2, Args_size=1
0: iconst_0
1: istore_1
2: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
5: iload_1
6: iinc 1, 1
9: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
12: return
LineNumberTable:
line 11: 0
line 14: 2
line 15: 12
}
0:将常数0压入栈,栈内容:【0】
1:将栈顶的元素弹出,也就是0,保存到局部变量区索引为为1(也就是变量i)的地方。栈内容:【】
2:获取常量池中索引为2所表示的类变量,也就是System.out。栈元素:【】
5:将局部变量区索引为1的值(也就是i)压入栈。栈元素:【0】
6.将局部变量区索引为1(也就是常量i)的值加一,此时局部变量区索引为1的值(也就是i的值)是1。栈内【0】
9:调用常量池索引为3的方法,也就是System.out.println
12:返回main方法
public class T5{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int s = 0;
//String a = s.concat("a");
//s++;
System.out.println(++s);
}
}
public static void main(java.lang.String[]);
Code:
Stack=2, Locals=2, Args_size=1
0: iconst_0
1: istore_1
2: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
5: iinc 1, 1
8: iload_1
9: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
12: return
LineNumberTable:
line 11: 0
line 14: 2
line 15: 12
}
0:将常数0压入栈,栈内容:【0】
1:将栈顶的元素弹出,也就是0,保存到局部变量区索引为为1(也就是变量i)的地方。栈内容:【】
2:获取常量池中索引为2所表示的类变量,也就是System.out。栈元素:【】
5.将局部变量区索引为1(也就是常量i)的值加一,此时局部变量区索引为1的值(也就是i的值)是1。栈内【0】
8:将局部变量区索引为1的值(也就是i)压入栈。栈元素:【0】
9:调用常量池索引为3的方法,也就是System.out.println
12:返回main方法
可以看出
i++ 先赋值在加
++i 先加在赋值
分享到:
相关推荐
C++ 中的左值和右值、i++ 与 ++i 的区别 在 C++ 编程语言中,左值(Lvalue)和右值(Rvalue)是两个重要的概念,它们在变量和表达式中的角色不同,理解这两个概念对于编写正确和高效的代码非常重要。 左值(Lvalue...
而i++与++i的差异,尽管细微,却在实际编程中扮演着重要角色。本文将深入探讨这两个主题,旨在帮助读者更好地理解和运用它们。 首先,让我们来看看左值与右值的区别。左值是指向一个明确内存地址的表达式,它代表了...
### I++ DME2.0:尺寸测量标准与接口协议详解 #### 一、引言 I++ DME2.0(Dimensional Measurement Equipment Interface)是三坐标测量领域中的一个重要标准,它定义了一套用于尺寸测量设备之间的通信协议。本标准...
从效率角度来说,i++ 和 ++i 都是 O(1) 的操作,无论是前缀递增还是后缀递增,都不会对性能产生影响。 PHP session 传递方式 在 PHP 中,session 可以通过多种方式来传递,包括 GET 方式、表单隐蔽值方式和文件...
### I++ DME1.7:尺寸测量标准与接口协议详解 #### 一、I++ DME概述 I++ DME (Dimensional Measurement Equipment Interface) 是一个专为三坐标测量机(CMM)和其他尺寸测量设备设计的标准接口协议。该协议旨在提供...
当它作为后缀(如`i++`)出现在表达式中时,首先返回变量的当前值,然后将变量的值增加1。这种行为可以理解为下面两个步骤: 1. **获取当前值**:首先获取变量`i`的当前值。 2. **增加变量值**:然后将变量`i`的值...
### 关于“++i, i++, --i, i--”的理解与应用 #### 一、基本概念 在C/C++编程语言中,“++i, i++, --i, i--”是一组非常重要的自增自减运算符。这些运算符主要用于在程序中修改变量的值。了解这些运算符的工作原理...
内容概要:详细讲解了在C、C++、Java、JavaScript等多种编程语言里,前缀递增(++i)与后缀递增(i++)的具体区别及其使用时机。文章指出两者虽然最终都使变量增加了1,但在复合表达式中因为执行顺序的不同会产生...
使用++i和i++可以使迭代操作变得容易,但是两者到底区别在哪可以从这个程序中得知,使用java语言编写
先看看基本区别: i++ :先在i所在的表达式中使用i的当前值,后让i加1 ...再给大家详细说下++i 与 i++ 的区别 1、++i 的用法(以 a=++i ,i=2 为例) 先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就
USBCAN-I/I+ II/II+ 2A I-MINI是一款由周立功公司研发的专业CAN总线接口设备,它通过USB接口与计算机连接,提供对CAN(Controller Area Network)网络的访问。该设备广泛应用于汽车电子、工业自动化、楼宇自动化等...
在C语言中,`++i` 和 `i++` 是两种常见的自增操作符,它们在编程中的作用是增加变量的值。虽然它们看似相似,但在某些特定情况下,两者的行为是有区别的,这也是C语言初学者经常感到困惑的地方。本文将深入探讨这两...
### 对于含有n个内节点的二元树,证明E=I+2n。其中E、I分别为外部和外部路径长度。 #### 背景知识 在计算机科学中,二叉树是一种重要的数据结构,它由节点组成,每个节点最多有两个子节点。二叉树在算法设计和分析...
与后置自增不同,`++i`在运算之前就将`i`的值增加1,然后再用更新后的值参与运算。所以,如果`i`同样是5,`sum = sum + ++i`中的`++i`会先将`i`的值增加到6,然后将6赋值给`sum`。 在给定的例子中,通过一系列的...
I+关系网络分析用户指南I+3ÍƸå-ƵɑsɫʉɾȳðƧƊ¹ʶǑĪºtˣȎ-Ɵ?ăÜw ̐ĭǺİȨ-±Ǫˊ±Vĸ±Ǽ̝ɜ͋ƒȷǭ̀ÄqĀɎ ȅs̟ʬ`̵/ʓʉɜʬƕZƨTʺ{Ʈǡ
如何理解i=i++和i=++i.docx
i和i ++i和i++的区别
前置自增 ++i 与后置自增 i++ 的区别及应用
"画质增强器i+++++++++++"可能是一款专注于提升图像和视频质量的软件工具,尤其在人工智能(AI)技术的支持下,它能实现对老旧、低分辨率或受损媒体内容的智能优化。下面将详细探讨相关知识点。 1. **人工智能在...
内容概要:本文详细介绍了前置自增(++i)和后置自增(i++)运算符的区别及其应用场景,涵盖C/C++、Java、JavaScript等多门语言。重点讨论了两者在返回值、执行顺序以及在复杂表达式中的差异,并探讨了编译器优化的...