转https://baijiahao.baidu.com/s?id=1682261792528500739&wfr=spider&for=pc

1 符号引用

  符号引用以一组符号来描述所引用的目标,也就是用来表示类、方法、字段的。

  例如, 在Java中, 一个Java类将会编译成一个class文件。在编译时, Java类并不知道所引用的类的实际地址, 因此只能使用符号引用来代替。 比如org.simple.People类引用了org.simple.Language类, 在编译时People类并不知道Language类的实际内存地址, 因此只能使用符号org.simple.Language来表示Language类的地址。

2 类的全限定名

  Object类,在源件中的全限定名是java.lang.Object 。class文件中的全限定名是将点号替换成“/” 。 也就是java/lang/Object 。源件中个类的名字, 在class件中是全限定名表述的。

3 描述符

  各类型的描述符对于字段的数据类型,其描述符主要有以下种基本数据类型(byte、char、double、float、int、long、short、boolean),除 long 和boolean,其他基本数据类型的描述符对应单词的写字表示。long J 表示,boolean Z 表示。void:描述符是 V。对象类型:描述符字符L 加上对象的全限定名表示,如 String 类型的描述符为Ljava/lang/String 。数组类型:每增加个维度则在对应的字段描述符前增加个 [ ,如维数组 int[] 的描述符为[I ,维数组 String[][] 的描述符为 [[Ljava/lang/String 。

4 字段描述符

  字段的描述符就是字段的类型所对应的字符或字符串。

    如:

    int i 中, 字段i的描述符就是 I

    Object o中, 字段o的描述符就是 Ljava/lang/Object;

    double[][] d中, 字段d的描述符就是 [[D

5 方法描述符

  法的描述符较复杂, 包括所有参数的类型列表和法返回值。 它的格式是这样的:(参数1类型 参数2类型 参数3类型 ……)返回值类型

  不管是参数的类型还是返回值类型, 都是使对应字符和对应字符串来表示的, 并且参数列表使括号括起来, 并且各个参数类型之间没有空格, 参数列表和返回值类型之间也没有空格。

JAVA虚拟机03-常量池项中字面量和符号引用的更多相关文章

  1. 第46节:Java当中的常量池

    Java当中的常量池 在Java虚拟机jvm中,内存分布为:虚拟机堆,程序计数器,本地方法栈,虚拟机栈,方法区. 程序计数器是jvm执行程序的流水线,是用来存放一些指令的,本地方法栈是jvm操作系统方 ...

  2. java中字面量,常量和变量之间的区别(附:Integer缓存机制)

    一.引子 在各种教科书和博客中这三者经常被引用,今天复习到内存区域,想起常量池中就是存着字面量和符号引用,其实这三者并不是只在java中才有,各个语言中都有类似的定义,所以做一下总结,以示区分. 二. ...

  3. Java 运行时常量池

    运行时常量池是方法区的一部分.class中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放在方法区的运行时常量池 ...

  4. Java的Integer常量池和String常量池

    1.Integer的常量池 看下面一段代码: package cn.qlq.test; public class ArrayTest { public static void main(String[ ...

  5. 讲一讲Java的字符串常量池,看完你的思路就清晰了

    前言 很多朋友Java的字符串常量池的概念困扰了很长一段时间,最近研究了一下jvm指令码,终于对它有了大概的了解. 在展示案例前,我们需要先搞清楚一个概念,众所周知,jvm的内存模型由程序计数器.虚拟 ...

  6. 01-JS中字面量与变量

    01-JS中字面量与变量 一.直接量(字面量) 字面量:英语叫做literals,也做直接量,看见什么,它就是什么. (一)数字的字面量 数字的字面量,就是这个数字自己,并不需要任何的符号来界定这个数 ...

  7. 带着新人看java虚拟机03

    分享一篇博客:https://blog.csdn.net/yfqnihao/article/details/8289363,本篇有部分参考这篇博客!!! 还是继续说一下java虚拟机,为什么呢?因为我 ...

  8. 19、java内存分配 常量池详解

    在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...

  9. Java字面常量与常量池

    Java中的字面常量(区别于final创建的有名常量)通常会保存在常量池中,常量池可以理解为像堆一样的内存区域.但是常量池有一个特性就是,如果常量池中已存在该常量将不会再次为该常量开辟内存 还是看个程 ...

  10. Java包装类的常量池

     Integer a=Integer.valueOf(100); Integer b=Integer.valueOf(100); System.out.println(a==b); Double d1 ...

随机推荐

  1. Go语言核心36讲10

    我们在上次讨论了数组和切片,当我们提到数组的时候,往往会想起链表.那么Go语言的链表是什么样的呢? Go语言的链表实现在标准库的container/list代码包中.这个代码包中有两个公开的程序实体- ...

  2. 基于python的数学建模---场线与数值解(微分方程)

    import numpy as np from scipy import integrate import matplotlib.pyplot as plt import sympy def plot ...

  3. layui的table数据匹配问题

    <script> layui.use('table', function () { var table = layui.table; //第一个实例 table.render({ elem ...

  4. 记录一次从linux移动一个项目到windows遇到的问题

    前言 这几天在linux平台写了一个垃圾软件,浪费了我10多天的时间,感觉很垃圾,然后我想在windows平台打包这个软件,然后出现了一个项目中有相同文件名的问题,导致一些文件相互覆盖 问题描述 我把 ...

  5. 【开发必备】单点登录,清除了cookie,页面还保持登录状态?

    背景 本地搭建了一台认证服务器.两台资源服务器,看看请求的过程 开始 没登录,直接请求资源服务器,结果跳转到的登录页面 登录后,请求了认证服务器的登录接口,然后顿重定向,最后回到了资源服务器的接口,页 ...

  6. 你真的了解 RSA 加密算法吗?

    作者:小傅哥 博客:https://bugstack.cn 源码:https://github.com/fuzhengwei/java-algorithms 沉淀.分享.成长,让自己和他人都能有所收获 ...

  7. TransmittableThreadLocal和@Async优雅的记录操作日志

    此文主要讲解: 如何实现操作记录 如何将TransmittableThreadLocal和@Async搭配使用 TransmittableThreadLocal阿里的一个开源组件,为了在使用线程池等会 ...

  8. tcp/udp 协议特性和三次握手

    一.TCP/UDP协议特性1)TCP特性:工作在传输层.建立连接.可靠的.错误检查 2)UDP特性:工作在传输层.不需要连接.不可靠的.有限的错误检查.传输性能高 2.控制位及确认号解释 控制位:由6 ...

  9. DHorse日志收集原理

    实现原理 基于k8s的日志收集主要有两种方案,一是使用daemoset,另一种是基于sidecar.两种方式各有优缺点,目前DHorse是基于daemoset实现的.如图1所示: 图1 在每个k8s集 ...

  10. python模块的含义

    目录 模块简介 模块的本质 python模块的历史 python模块的表现形式 模块的分类 导入模块的两种句式 强调 import句式 import流程推导 练习 from...import...句式 ...