`

Java 随笔

    博客分类:
  • Java
阅读更多

陆续会用这个帖子记下一些没有什么技术含量的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编程的基础到高级概念的笔记,是学习Java的好资源。以下是一些可能涵盖的重要知识点: 1. **Java基础**:这部分可能包括了Java的基本语法,如变量、数据类型、...

    java多线程相关

    本篇将深入探讨Java多线程的相关知识,结合《java随笔杂记.doc》文档中的内容,我们将覆盖以下几个方面: 1. **线程的创建方式** - 实现`Runnable`接口:创建一个实现了`Runnable`接口的类,然后将其实例传递给`...

    Java学习随笔6(Debug).docx

    Java 调试技术概述 Java 调试是指使用程序调试工具来检查和纠正 Java 程序中的错误和异常。调试是软件开发过程中不可或缺的一步,它可以帮助开发者更好地理解程序的执行流程,从而提高程序的质量和可靠性。 Debug...

    java记录随笔

    Java 记录随笔 Java 记录随笔是关于 Java 软件架构设计的笔记,涵盖了软件架构的基本原则、当前流行的技术、数据库存储结构、Web 界面用户接口层、业务层架构、持久层技术、XML 结构化信息传输和存储的重要性等多个...

    Java学习随笔5(方法)

    Java中的方法是编程中至关重要的概念,它封装了一段可重复使用的代码,使得程序更加模块化,提高了代码的复用性和可读性。方法的定义和调用是编写Java程序的基础。 方法的定义通常包括访问修饰符(如public)、静态...

    【Java - 框架 - Knife4j】随笔

    【Java - 框架 - Knife4j】随笔 在Java Web开发中,文档的生成与维护是一项重要但繁琐的工作。Knife4j,作为一款专门为Java RESTful API设计的文档增强工具,它极大地简化了这个过程,为开发者带来了诸多便利。本篇...

    JAVA笔记随笔

    之前上传了JAVA笔记1 那么这次是JAVA笔记2 衔接上一次的

    Java学习随笔4(数组)

    Java中的数组是一种基础且重要的数据结构,用于存储同种数据类型的多个值。数组提供了一种高效的方式来管理和操作一组数据,可以是整数、浮点数、字符或自定义对象。在Java中,数组的定义有两种格式: 1. `数据类型...

    基于Java与跨平台技术的crostitch涂鸦随笔设计与实现源码

    本项目是一款基于Java和跨平台技术的crostitch涂鸦随笔设计与实现源码,包含65个文件,其中包括30个Java源文件、16个PNG图片文件、7个JavaScript文件、2个XML文件、1个Git忽略文件、1个Markdown文件、1个Maven项目...

    java课堂随笔

    java课堂随笔,我这还有很多,有需要的话可以联系我,我会为大家提供很多的资料

    Java学习随笔7(进制).docx

    Java编程语言中,进制是理解计算机底层运算的基础。进制是指进位制,即在进行数字运算时,逢特定基数进位。例如,十进制逢十进一,二进制逢二进一,八进制逢八进一,十六进制则是逢十六进一。学习不同进制能帮助我们...

    分享Java相关的东西 - Java安全漫谈笔记相关内容.zip

    JavaThings - Java安全漫谈笔记相关《Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高。这个存储库主要是记录并整理一下,附加一些代码。Java 安全漫谈目录Java安全漫谈 - 01.Java的动态...

    Java学习随笔3(IDEA的概述和功能).docx

    IntelliJ IDEA,简称IDEA,是一款广受好评的Java集成开发环境,由JetBrains公司开发。它以其高效、智能的编码辅助和丰富的功能集,成为许多开发者首选的Java编程工具。IDEA不仅支持Java,还支持其他多种编程语言如...

    ubuntu搭建Java项目运行环境-随笔记录.rar

    在本文中,我们将深入探讨如何在Ubuntu操作系统上搭建一个完整的Java项目运行环境,包括安装Java Development Kit (JDK) 1.8、MySQL 5.7数据库服务以及Apache Tomcat 9应用服务器。这个过程对于任何希望在Linux环境...

    Java代码调用HTML5中的JS函数算法

    在现代Web应用开发中,Java和JavaScript经常协同工作,实现前后端交互。Java代码调用HTML5中的JS函数算法是一项关键技术,它使得服务器端能够直接操纵客户端的网页元素,提高用户体验,同时也为复杂业务逻辑提供了...

    我自己概括的集合类相关知识形成的一个组织结构图

    这是我手写的集合类的xmind思维导图,查看请确保自己本地有安装Xmind,因为无法在博客内上传,只能后台上传.请结合我发布的文章(java随笔(集合(一)))查看.

    瓜哇夜未眠Java程序员的心声

    作者是享誉国内外的Java高手,除了技术相关的文章之外,他也没有僭越自己的专业,随笔中所提及的都是软件产业里的甘苦点滴。不眠之夜,一本蔡学镛的《Java夜未眠》恰能适应你的心情,就像一杯清香醇厚的咖啡,让孤独...

    JAVA网站流量统计管理系统(源代码+论文)

    整个系统实现了我的相册,包括的功能模块有文件上传模块,数据统计发送模块,免费资源下载模块,随笔流量统计模块,网址大全部分。进入这个网站,我们可以自由的发送数据统计,随心所欲的到流量统计进行交流灌水,还...

    【Java-框架-SpringSecurity】单点登录(认证和授权)- 随笔

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理,包括认证和授权。它提供了全面的安全控制,从简单的密码编码到复杂的访问控制策略,为开发者提供了丰富的功能。本随笔将深入探讨...

    深入Java虚拟机第二版chm英文

    Java虚拟机是Java平台的核心组成部分,它负责执行字节码,管理内存,实现垃圾回收,并执行各种优化。深入理解JVM对于任何Java开发者来说都是至关重要的,因为这有助于提升代码性能,理解和解决运行时问题,以及优化...

Global site tag (gtag.js) - Google Analytics