陆续会用这个帖子记下一些没有什么技术含量的NOTES,希望大牛们别见笑:
1.关于i=i++和i=++i;
sourceCode:
public class TestIplusPlus{
public static void main(String[] args){
int i = 0;
i=i++;
}
}
byteCode:
public static void main(java.lang.String[]);
Code:
Stack=1, Locals=2, Args_size=1
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_1
7: return
LineNumberTable:
line 3: 0
line 4: 2
line 5: 7
}
sourceCode:
public class TestIplusPlus{
public static void main(String[] args){
int i = 0;
i=++i;
}
}
byteCode:
public static void main(java.lang.String[]);
Code:
Stack=1, Locals=2, Args_size=1
0: iconst_0
1: istore_1
2: iinc 1, 1
5: iload_1
6: istore_1
7: return
LineNumberTable:
line 3: 0
line 4: 2
line 5: 7
}
jvm里面有两个存储区,一个是暂存区(是一个堆栈,以下称为堆栈),另一个是变量区。
语句istore_1是将堆栈中的值弹出存入相应的变量区(赋值);语句iload_1是将变量区中的值暂存如堆栈中。
因为i = i++;是先将i的值(0)存入堆栈,然后对变量区中的i自加1,这时i的值的确是1,但是随后的istore_1又将堆栈的值(0)弹出赋给变量区的i,所以最后i = 0。
又因为i = ++i;是先对变量区中的i自加1,然后再将变量区中i的值(1)存入堆栈,虽然最后执行了istore_1,但也只是将堆栈中的值(1)弹出赋给变量区的i,所以i = ++i;的结果是i = 1。
分享到:
相关推荐
"Java完整随笔(学习)"可能包含了一系列关于Java编程的基础到高级概念的笔记,是学习Java的好资源。以下是一些可能涵盖的重要知识点: 1. **Java基础**:这部分可能包括了Java的基本语法,如变量、数据类型、...
本篇将深入探讨Java多线程的相关知识,结合《java随笔杂记.doc》文档中的内容,我们将覆盖以下几个方面: 1. **线程的创建方式** - 实现`Runnable`接口:创建一个实现了`Runnable`接口的类,然后将其实例传递给`...
Java 调试技术概述 Java 调试是指使用程序调试工具来检查和纠正 Java 程序中的错误和异常。调试是软件开发过程中不可或缺的一步,它可以帮助开发者更好地理解程序的执行流程,从而提高程序的质量和可靠性。 Debug...
Java 记录随笔 Java 记录随笔是关于 Java 软件架构设计的笔记,涵盖了软件架构的基本原则、当前流行的技术、数据库存储结构、Web 界面用户接口层、业务层架构、持久层技术、XML 结构化信息传输和存储的重要性等多个...
Java中的方法是编程中至关重要的概念,它封装了一段可重复使用的代码,使得程序更加模块化,提高了代码的复用性和可读性。方法的定义和调用是编写Java程序的基础。 方法的定义通常包括访问修饰符(如public)、静态...
【Java - 框架 - Knife4j】随笔 在Java Web开发中,文档的生成与维护是一项重要但繁琐的工作。Knife4j,作为一款专门为Java RESTful API设计的文档增强工具,它极大地简化了这个过程,为开发者带来了诸多便利。本篇...
之前上传了JAVA笔记1 那么这次是JAVA笔记2 衔接上一次的
Java中的数组是一种基础且重要的数据结构,用于存储同种数据类型的多个值。数组提供了一种高效的方式来管理和操作一组数据,可以是整数、浮点数、字符或自定义对象。在Java中,数组的定义有两种格式: 1. `数据类型...
本项目是一款基于Java和跨平台技术的crostitch涂鸦随笔设计与实现源码,包含65个文件,其中包括30个Java源文件、16个PNG图片文件、7个JavaScript文件、2个XML文件、1个Git忽略文件、1个Markdown文件、1个Maven项目...
java课堂随笔,我这还有很多,有需要的话可以联系我,我会为大家提供很多的资料
Java编程语言中,进制是理解计算机底层运算的基础。进制是指进位制,即在进行数字运算时,逢特定基数进位。例如,十进制逢十进一,二进制逢二进一,八进制逢八进一,十六进制则是逢十六进一。学习不同进制能帮助我们...
IntelliJ IDEA,简称IDEA,是一款广受好评的Java集成开发环境,由JetBrains公司开发。它以其高效、智能的编码辅助和丰富的功能集,成为许多开发者首选的Java编程工具。IDEA不仅支持Java,还支持其他多种编程语言如...
在本文中,我们将深入探讨如何在Ubuntu操作系统上搭建一个完整的Java项目运行环境,包括安装Java Development Kit (JDK) 1.8、MySQL 5.7数据库服务以及Apache Tomcat 9应用服务器。这个过程对于任何希望在Linux环境...
在现代Web应用开发中,Java和JavaScript经常协同工作,实现前后端交互。Java代码调用HTML5中的JS函数算法是一项关键技术,它使得服务器端能够直接操纵客户端的网页元素,提高用户体验,同时也为复杂业务逻辑提供了...
这是我手写的集合类的xmind思维导图,查看请确保自己本地有安装Xmind,因为无法在博客内上传,只能后台上传.请结合我发布的文章(java随笔(集合(一)))查看.
作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...
整个系统实现了我的相册,包括的功能模块有文件上传模块,数据统计发送模块,免费资源下载模块,随笔流量统计模块,网址大全部分。进入这个网站,我们可以自由的发送数据统计,随心所欲的到流量统计进行交流灌水,还...
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理,包括认证和授权。它提供了全面的安全控制,从简单的密码编码到复杂的访问控制策略,为开发者提供了丰富的功能。本随笔将深入探讨...
Java虚拟机是Java平台的核心组成部分,它负责执行字节码,管理内存,实现垃圾回收,并执行各种优化。深入理解JVM对于任何Java开发者来说都是至关重要的,因为这有助于提升代码性能,理解和解决运行时问题,以及优化...
9. **帮助文档**:附带的开发随笔手册可能包含关于如何使用该记事本的详细说明,对于初学者来说非常有帮助。 开发这样的程序需要对Java语言、SWT库以及面向对象设计有深入理解。通过这个项目,开发者不仅可以掌握...