当前位置: 首页 > 知识库问答 >
问题:

java - Java实例变量默认值赋值时机是什么时候?

周昊乾
2024-12-23

实例变量在什么时候会被赋默认值例如int赋0, boolea赋false。

public class test{
    public int a = 10;
    ......
}

我希望从JVM的角度出发,有相应的证明或者资料证明吗?

共有2个答案

谷梁云瀚
2024-12-23

是在对象创建过程中初始化并完成赋值的(目录:自动内存管理 -> HotSpot虚拟机对象探秘 -> 对象的创建)
详细可参看周志明老师的JVM这本书,这里给你截个图
image.png

林弘壮
2024-12-23

可以参考这篇文章
从JVM运行角度解释 为什么类的成员变量有默认初始值 而方法内的局部变量却没有初始值

 类似资料:
  • 我正在准备JavaOCA认证,遇到了一个类似的问题,如下所示: 按照Java,实例和静态变量被赋予默认值。令人惊讶的是,我的控制台上显示的错误是: 为什么没有在上面分配默认值?

  • 问题内容: 为什么在类中声明的变量具有默认值,但是在方法内部声明的变量(称为“局部变量”)在Java中没有默认值? 例如 在上面的示例中,变量的默认值为0,但是变量给出了可能尚未初始化的错误。 问题答案: 所有成员变量都必须加载到堆中,因此在创建类的实例时必须使用默认值进行初始化。对于局部变量,它们不会被加载到堆中,直到在Java7之前被使用,它们才会存储在堆栈中,因此我们需要显式初始化它们。现在

  • 本文向大家介绍Python实例变量的默认值,包括了Python实例变量的默认值的使用技巧和注意事项,需要的朋友参考一下 示例 如果变量包含不可变类型的值(例如字符串),则可以分配这样的默认值 在初始化可变对象(例如构造函数中的列表)时,需要小心。考虑以下示例: 此行为是由于以下事实引起的:在Python中,默认参数是在函数执行时绑定的,而不是在函数声明时绑定的。要获得实例之间不共享的默认实例变量,

  • 问题内容: 我的任务是制作一个带有实例变量的程序,该变量应该由用户输入。但是我什至不知道什么是实例变量。什么是实例变量?如何创建一个?它有什么作用? 问题答案: 实例变量是在类内部但在方法外部声明的变量: 现在可以在其他类中实例化此IronMan类以使用这些变量,例如: 这就是我们使用实例变量的方式。无耻插头:来自实例本免费的电子书拉到这里这里。

  • 问题内容: 我读到Java为类属性提供了默认值,但没有为局部变量提供默认值。那是对的吗?如果是这样,背后的原因是什么?当您做某件事时,为什么不一直这样做呢? 谢谢你, 罗杰 问题答案: 标准局部变量存储在堆栈中,直到初始化后才真正创建。如果未使用局部变量,则它不会进入堆栈。但是,成员变量在堆中分配,因此具有默认的占位符(空引用或默认原语)。

  • 我有一个这样的程序: 如果我尝试执行它,我会得到如下编译器错误:< code >变量x可能没有初始化基于java默认值,我应该得到下面的输出对吗?? 最终变量会有默认值吗? 如果我这样更改代码, 我得到的输出是: 有人能解释一下这种行为吗。。

  • 主要内容:声明变量,变量赋值Java 语言是强类型(Strongly Typed)语言,强类型包含以下两方面的含义: 所有的变量必须先声明、后使用。 指定类型的变量只能接受类型与之匹配的值。 这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作,并确定了这些操作的含义。 常量和变量是 Java 程序中最基础的两个元素。常量的值是不

  • JAVA中关于变量赋值的机制(值传递机制)   1.如果变量是基本数据类型,此时赋值的是数据的实际值,即实参传递给形参的是实参的值   2.如果变量是引用数据类型,此时赋值的是保存数据的地址值,即实参传递给形参的是实参的地址