字面量, 符号引用与直接引用

转载自https://blog.csdn.net/BraveLoser/article/details/82500474

  1. 前言
    学习JVM的时候, 总碰到字面量, 符号引用与直接引用这几个词, 理解的迷迷糊糊的. 这里总结一下.

  2. 字面量
    百度百科解释: 在计算机科学中, 字面量(literal)是用于表达源代码中一个固定值的表示法(notation). 几乎所有计算机编程语言都具有对基本值的字面量表示, 诸如: 整数, 浮点数以及字符串; 而有很多也对布尔类型和字符类型的值也支持字面量表示; 还有一些甚至对枚举类型的元素以及像数组, 记录和对象等复合类型的值也支持字面量表示法.
    很抽象, 举个例子就明白了.

int i = 1;把整数1赋值给int型变量i,整数1就是Java字面量,
String s = "abc";中的abc也是字面量。
  1. 符号引用
    符号引用以一组符号来描述所引用的目标, 符号可以是任何形式的字面量, 只要使用时能够无歧义的定位到目标即可. 例如, 在Java中, 一个Java类将会编译成一个class文件. 在编译时, Java类并不知道所引用的类的实际地址, 因此只能使用符号引用来代替. 比如org.simple.People类引用了org.simple.Language类, 在编译时People类并不知道Language类的实际内存地址, 因此只能使用符号org.simple.Language来表示Language类的地址.

  2. 直接引用
    直接引用可以是:

直接指向目标的指针.(个人理解为: 指向方法区中类对象, 类变量和类方法的指针)
相对偏移量. (指向实例的变量, 方法的指针)
一个间接定位到对象的句柄.
我觉得直接引用说白了, 就是程序运行时可以定位到引用的东西(类, 对象, 变量或者方法等)的地址.
————————————————
版权声明:本文为CSDN博主「Glenn甘露」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BraveLoser/article/details/82500474

原文地址:https://www.cnblogs.com/lllliuxiaoxia/p/15784965.html