首页 > 编程语言 >java字节码指令

java字节码指令

时间:2024-02-03 12:02:04浏览次数:27  
标签:Java 字节 栈顶 指令 JVM 字符串 java

java字节码指令

   概要

   众所周知,Java 字节码是跨平台的,因此 Java 才能一次编译,处处运行。关于JVM和字节码的认识分成2个部分:

   1. JVM(Java Virtual Machine,Java虚拟机)是Java程序运行的虚拟计算机。它是Java平台的一部分,负责解释和执行Java字节码,并提供一种跨平台的运行环境,使得Java程序可以在不同的操作系统上运行,实现“一次编译,处处运行”的特性。
   2. 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。

  通过字节码的学习可以帮助我们可以更好地理解 Java中各种语法和语法糖背后的原理,更好地理解多态等语言特性。  

  下面结合一些例子分别说明各个指令的作用

  一、示例1

  String s1 = new String("abc");

  1. new

 堆中创建对象,此时未被初始化
  2. dup

  复制栈顶的数值并将其压入栈顶两次
  3. ldc

  用于判断字符串常量池中是否保存了对应的字符串对象的引用,如果保存了的话直接返回,如果没有保存的话,会在堆中创建对应的字符串对象并将该字符串对象的引用保存到字符串常量池中。
  4. invokespecial

  调用构造方法对之前创建的对象赋值
  5. astrore

  将栈顶引用类型数值保存到局部变量表中的第1个槽位
  6. return

  返回方法并将返回值传递给调用者

标签:Java,字节,栈顶,指令,JVM,字符串,java
From: https://www.cnblogs.com/hld123/p/18004502

相关文章

  • 狂神说Java Web学习笔记_JSP
    什么是JSPJSP(JavaServerPages):Java服务器端页面,和Servlet一样,用于动态web技术!写JSP就像在写HTML。它们之间不同的是,JSP页面里可以嵌入Java代码,提供动态数据。JSP原理IDEA使用tomcat服务器,会在tomcat中产生一个work目录;C:\Users\winner\AppData\Local\JetBrains\IntelliJId......
  • 狂神说Java Web学习笔记_Cookie&Session
    Cookie,Session保存会话的两种技术,Cookie(客户端技术),Session(服务端技术)Cookie服务器端设置token,从客户端获取tokenCookie[]cookies=req.getCookies();//从客户端获取cookiecookie.getName();//获取cookie名字cookie.getValue();//获取cookie值Cookiecookie=newCoo......
  • postman自动生成Cookie java代码怎么实现
    在Java中实现Postman自动生成Cookie的功能,通常涉及到模拟HTTP请求,处理服务器的响应,并提取Cookie信息。这个过程可以使用一些Java库,如ApacheHttpClient或者OkHttp。以下是使用ApacheHttpClient来实现这个功能的步骤:步骤1:添加依赖首先,您需要在项目的pom.xml文件中添加ApacheHttpC......
  • JAVA8 - 异步编程
    目录FutureFutureFuture接口在JAVA5中被引入,设计初衷式对将来某个时刻会发生的结果进行建模。它建模了一中异步计算,返回一个执行运算结果的引用,当运算结束后,这个引用被返回给调用方。在Future中触发那些潜在耗时的操作把调用线程解放出来,让它能继续执行其他有价值的工作,不再......
  • Java 数据类型详解与类型转换技巧
    Java数据类型Java中的变量必须是指定的数据类型:intmyNum=5;//整数floatmyFloatNum=5.99f;//浮点数charmyLetter='D';//字符booleanmyBool=true;//布尔值StringmyText="Hello";//字符串数据类型分为两组:......
  • Java面向对象程序设计——设计日期类
    设计日期类【问题描述】借助Calendar类,设计一个日期类MyDate,能根据多种输入数据创建日期对象,可对日期进行计算,并以不同的模式输出日期。类图如下:【输入形式】1-8的整数【输出形式】输入1,则输出2010-10-10importjava.text.ParseException;importjava.text.SimpleDateFormat......
  • Java 8 Optional:优雅处理空指针异常的新型容器
    一、Optional概述1.1Optional定义Optional是Java8中引入的一个类,用于描述一个值不存在的情况。它可以存储任意类型的值,或者表示一个空值。使用Optional类可以避免null值的传递和检查,提高代码的健壮性和可读性。Optional类的定义如下:publicfinalclassOptional<T>{/......
  • 包机制和JavaDoc
    包机制为了更好地组织类,Java提供包机制,用于区别类名的命名空间。包语句的语法格式为:packagepkg1[.pkg2[.pkg3...]]一般利用公司域名倒置作为包名;//com.hongyi.xxx为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能。impor......
  • JVM(Java虚拟机)整理(二)
    前言上一篇内容:JVM(Java虚拟机)整理(一)Java内存模型(JMM)Java内存模型引入声明:本节内容转载于@pdai:JVM基础-Java内存模型引入。很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系。@......
  • JAVA8 - 函数式接口
    目录原始类型特化函数描述符原始类型特化JAVA8为Predicate、Consumer、Suppler等函数式接口带来了一个专门的版本,以便在输入和输出时都是基本类型时避免自动装箱的操作IntPredicateevenNumbers=(inti)->i%2==0;//无装箱Predicate<Integer>evenNumbers2=(Inte......