当前位置: 首页 > 面试题库 >

Java中的参考变量里面有什么?

柳俊逸
2023-03-14
问题内容

我们知道对象引用变量包含表示访问对象的方式的位。

它不保存对象本身,而是保存指针或地址之类的东西。

我正在阅读《 Head-First Java(第二版)》一书,在书中(第3章,第54页)中写道:

在Java中,我们实际上并不知道引用变量中的内容。我们确实知道,无论它是什么,它代表一个并且只有一个对象。而且JVM知道如何使用引用来获取对象。–

我想问一下:

  • 对象引用变量是否保存指针,地址或其他内容?
  • JVM如何解释呢?

问题答案:

JVM完全取决于引用中的内容。

在最简单的情况下,它只是一个指针(即地址)。在更复杂的情况下,VM可能会根据情况使用不同的表示形式-例如,您可能需要阅读有关“ HotSpot中的压缩对象”的文章,以了解HotSpot VM如何避免在某些情况下将引用的大小加倍(但(不是全部)在作为64位VM运行时放置。

重要的是,您既不应了解也不应该在意。就程序员而言,它只是一组不透明的位-其唯一目的是让您到达有问题的对象(或标识空引用)。



 类似资料:
  • 问题内容: “重要的是要理解,引用变量的类型(而不是它所引用的对象的类型)决定了可以访问哪些成员。” 那句话你到底是什么意思?这仅限于继承概念吗?JVM如何处理它? 问题答案: 这意味着假设您具有: 的类型的 变量 是,但对象的类型是指是。这是变量类型,它决定了您可以执行的操作-因此您无法调用 编译器仅知道您在上调用方法,其中不包括。同样,重载方法仅针对您所知道的方法进行解析:

  • 问题内容: 可以为基类引用变量分配基类对象或派生类对象的地址。 真假? 谁能给我看看这意味着什么的例子?我是Java的新手,正在尝试了解Java的特定语言术语。谢谢。 我认为以下示例就是我编写的代码: 我认为,由于两个参考变量都是有效的语法(在Eclipse中),因此答案是正确的。 问题答案: 可以为基类引用变量分配基类对象或派生类对象的地址。 真假? 正确,因为所有派生类对象都是基类的实例,但并

  • 下面的@data变量是由 Handlebars 及其内建助手代码实现的。 @root 初始化模版被执行时的上下文。 {{#each array}} {{@root.foo}} {{/each}} 除非特意改变,对于页面渲染时的每一部分,本项的值恒定。因此,当深度参数不能够引用它们的父模版时,本项可以在代码片段内使用 。 @first 本项会被 each 助手代码在迭代的第一步被设置为 true。

  • 特殊变量是由FreeMarker引擎自己定义的变量。要访问它们, 你可以使用 .variable_name 语法。 比如,你不能仅仅写 version,而必须写.version。 Note: 在 FreeMarker 2.3.23 版本中,可以使用驼峰格式的特殊变量名来代替蛇形格式, 比如 dataModel 代替 data_model。 但是需要知道在相同的模板中,FreeMarker 会对模板

  • 问题内容: 除了范围和存储差异外,java中实例变量和局部变量之间是否还有其他主要区别? 问题答案: 我能想到的一件事: 实例变量具有默认值,即如果为对象引用,则为null;如果为int,则为0。 局部变量不会获取默认值,因此需要进行显式初始化(​​如果您未这样做,则编译器通常会抱怨)。

  • 问题内容: 请帮助我理解常量变量和Java变量之间的区别。我对此有些困惑。 问题答案: 常量 是概念,是变量的属性。 是用于声明常量变量的java关键字。 正如其他人所指出的那样,从语义/语言的观点来看, 常量变量 的表达是矛盾的,因此,我们可以争论其正确性。 引用规范,无论如何,我们可以阅读 原始类型的最终变量,并使用编译时常数表达式(第15.28节)进行了初始化,称为 常量变量 。 因此,我想