`
m635674608
  • 浏览: 5080879 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

++i

 
阅读更多
public class T3{

	/**
	 * @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:   iinc    1, 1
   5:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   8:   iload_1
   9:   invokevirtual   #3; //Method java/io/PrintStream.println:(I)V
   12:  return

}
我从第0行开始分析(分析中【】表示栈,栈的底端在左边,顶端在右边):   
  
0:将常数0压入栈,栈内容:【0】   
  
1:将栈顶的元素弹出,也就是0,保存到局部变量区索引为为1(也就是变量i)的地方。栈内容:【】     
  
2:将局部变量区索引为1(也就是常量i)的值加一,此时局部变量区索引为1的值(也就是i的值)是1。栈内容:【0】   
   
  
5:获取常量池中索引为2所表示的类变量,也就是System.out。栈元素:【】   
  
8:将局部变量区索引为1的值(也就是i)压入栈。栈元素:【0】   
  
9:调用常量池索引为3的方法,也就是System.out.println   
  
12:返回main方法   
 
 

 

分享到:
评论

相关推荐

    ++i,i++,--i,i--终结

    ##### 例1:`int j = ++i + (++i) + (++i) + (++i);` 1. **初始化变量**:`int i = 0;` 2. **计算过程**: - `++i` (i=1, 返回1) - `++i` (i=2, 返回2) - `++i` (i=3, 返回3) - `++i` (i=4, 返回4) 最终结果...

    关于i++和++i以及左值,右值

    然而,对于自定义类型,尤其是当重载了前缀和后缀自增运算符时,使用++i通常更为高效,原因在于编译器能够对++i进行直接优化,而i++可能涉及到额外的临时变量创建,从而产生额外的开销。 综合来看,关于i++和++i的...

    测试i++和++i的区别

    使用++i和i++可以使迭代操作变得容易,但是两者到底区别在哪可以从这个程序中得知,使用java语言编写

    C# i++and++i

    在C#编程语言中,`i++` 和 `++i` 是两种常见的增量运算符,它们都用于将变量的值增加1。然而,虽然这两者看似相似,但在语义上存在细微差别,尤其是在某些特定上下文中。理解这些差异对于编写高效、清晰的代码至关...

    while(i++and++i)_helloworld_

    在编程语言中,如C++或Java,"i++"和"++i"都是自增操作符,它们用于增加变量的值。这两个操作符的主要区别在于它们如何处理变量的值和何时更新这个值。 首先,让我们理解"i++"。这个操作符被称为后缀自增。当你在...

    如何理解i=i++和i=++i.docx

    在 C、C++、Java 这类编程语言中,表达式“i = i++”和“i = ++i”表面上看似都执行了相同的增加操作,但其内部的工作机制和结果却大相径庭。首先,我们需要明白“i++”和“++i”在运算中的区别。“i++”是后缀自增...

    快速区分一元运算符i++和++i.docx

    在JavaScript编程语言中,一元运算符`i++`和`++i`是常见的自增操作,它们在处理变量的值时有不同的行为和顺序。理解这两种运算符的区别对于编写高效和无误的代码至关重要。 首先,`i++`称为后置自增运算符。它的...

    c++的左值右值 i++与++i的区别.docx

    C++ 中的左值和右值、i++ 与 ++i 的区别 在 C++ 编程语言中,左值(Lvalue)和右值(Rvalue)是两个重要的概念,它们在变量和表达式中的角色不同,理解这两个概念对于编写正确和高效的代码非常重要。 左值(Lvalue...

    为什么(i++)不能做左值,而(++i)可以

    在C/C++中,后缀递增运算符(i++)和前缀递增运算符(++i)都用于将变量增加1,但它们的操作和结果在某些情况下有本质的区别。前缀递增运算符++i先增加变量的值,然后返回新的值。后缀递增运算符i++先返回变量当前的值,...

    i ++ && ++ i

    在Java编程语言中,`i++` 和 `++i` 是两种不同的自增操作符,它们在表达式中的行为和优先级是理解此问题的关键。`i++` 是后置自增运算符,它首先使用变量`i`的当前值,然后将其加1;而`++i` 是前置自增运算符,它先...

    yang-mall-++i和i++

    然而,在标题中提到的"++i和i++"指的是两种不同的自增表达式,在大多数编程语言中,这两种表达式虽然在数值上会产生相同的结果,但它们在表达式执行的过程和时机上存在着微妙的差别。 "++i"通常被称为前缀自增操作...

    C语言中++i与i++的区别.docx

    在C语言中,`++i` 和 `i++` 是两种常见的自增操作符,它们在编程中的作用是增加变量的值。虽然它们看似相似,但在某些特定情况下,两者的行为是有区别的,这也是C语言初学者经常感到困惑的地方。本文将深入探讨这两...

    ++i和i++d的区别.docx

    在C语言和许多其他类似的编程语言中,递增操作符有两种形式,即前缀递增(++i)和后缀递增(i++)。这两种操作符的共同作用是将变量的值增加1,但它们在变量值更新和参与运算的时序上存在差异。 前缀递增(++i)...

    理解++i与i++的区别.txt

    在编程中,特别是C/C++等语言中,“++i”与“i++”都是自增运算符,其功能是将变量的值增加1。尽管它们的目的相同,但使用的时机不同会导致代码行为和性能的差异。在C/C++中,自增运算符有两种形式:前缀自增(++i)...

    浅析PHP中的i++与++i的区分及效率_.docx

    从效率角度来说,i++ 和 ++i 都是 O(1) 的操作,无论是前缀递增还是后缀递增,都不会对性能产生影响。 PHP session 传递方式 在 PHP 中,session 可以通过多种方式来传递,包括 GET 方式、表单隐蔽值方式和文件...

    前置自增 ++i 与后置自增 i++ 的区别及应用

    自增操作主要有两种形式:前置自增(`++i`)和后置自增(`i++`)。虽然在大多数情况下,它们的效果相似,但在某些特定的上下文中,两者的使用会带来不同的结果。 前置自增操作符(`++i`)是指在使用变量`i`之前,先...

    C++编程教程之自增运算符++i和i++详解

    内容概要:本文通过三个版本的示例代码详细介绍了C++中前缀自增++i和后缀自增i++的区别及其具体应用场景。从初学者友好版本逐渐过渡到可选择自增方式的互动版,再到针对数据结构中使用的进阶版本。通过对每个版本的...

    编程语言中++i与i++运算符的区别及性能分析

    内容概要:本文详细介绍了前置自增(++i)和后置自增(i++)运算符的区别及其应用场景,涵盖C/C++、Java、JavaScript等多门语言。重点讨论了两者在返回值、执行顺序以及在复杂表达式中的差异,并探讨了编译器优化的...

    深入解析C/C++/Java/JS中的i++与++i递增操作

    内容概要:详细讲解了在C、C++、Java、JavaScript等多种编程语言里,前缀递增(++i)与后缀递增(i++)的具体区别及其使用时机。文章指出两者虽然最终都使变量增加了1,但在复合表达式中因为执行顺序的不同会产生...

    i = i++ 代码分析

    i = ++i; System.out.println(i); ``` 这三个例子有什么区别呢? Code 1 和 Code 3 的区别在于赋值语句的顺序。在 Code 1 中,i 的值首先被赋给 i,然后再将 i 递增。在 Code 3 中,i 首先被递增,然后将递增后的值...

Global site tag (gtag.js) - Google Analytics