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

缺省字段值是由编译器或JVM分配的吗?

穆宾白
2023-03-14
问题内容

我有一个问题:在Java中,我们声明了int,long,double等(原始数据)或非原始(对象数据),未使用默认值初始化,但在运行时它将采用默认值。现在我的问题是哪个分配默认值:java编译器或Java虚拟机(JVM)?

例如:

int x;
System.out.println(x) //Result is 0;

问题答案:

Java中有三种不同类型的声明变量。它们是实例,类和局部变量。

实例变量

实例变量是类的非静态字段,通常简称为字段。

  • 原始数字字段初始化为0。这包括byteshortintlongfloatdouble

  • boolean初始化为false

  • chars初始化为空字符\u0000

  • 引用类型初始化为null

类变量

类变量是类中声明为静态的字段,通常称为静态变量或静态字段。它与实例变量的初始化也相同。

局部变量

局部变量是方法内定义的变量,其中包括任何方法参数。使用前必须先初始化局部变量。它们没有默认值。

创建方法时,初始化过程由 JVM 完成。



 类似资料:
  • 我知道这依赖于JVM,每个虚拟机都会选择实现它,但我想了解总体概念。 据说对于JVM用来执行Java程序的内存段 Java堆栈 不一定用连续内存实现,并且可能都实际分配在操作系统提供的一些堆内存上,这就引出了我的问题。 完全使用JIT机制并将字节码方法编译为本机机器码方法的JVM将这些方法存储在某个地方,那会在哪里?执行引擎(通常用C/C编写)将不得不调用这些JIT编译函数,然而内核不应该允许程序

  • 问题内容: 我对JVM有一个非常基本的问题:它是编译器还是解释器? 如果它是解释器,那么JVM内部存在的JIT编译器怎么办? 如果两者都不是,那么JVM到底是什么?(我不希望将字节码转换为机器特定的代码等jVM的基本定义。) 问题答案: 首先,让我们对以下术语有一个清晰的认识 是Java编译器-将Java代码编译为 Bytecode 是Java虚拟机-运行/解释/将字节码转换为本 机代码 是即时编

  • 我试图创建我的编辑事件页面,所以我想将数据库值放在Form::input('dateTime-local')中,但它得到的只是默认的占位符。 我的事件。编辑视图 事件控制器 数据库 你的帮助将是巨大的,谢谢。

  • null 我看到的是一般的注释 可用于排除空值。我不能使用此方法,因为我仍然希望在json中看到具有空值的空字段 可以用来排除空值和“不存在”的值。我不能使用这个,因为我仍然想看到JSON中的空字段和空字段。与相同 所以我的问题是,如果我不指定这些属性中的任何一个,我能实现我想要的吗?换句话说,如果我没有指定其中的任何一个,那么Jackson的行为是显示所有在动态意义上具有空值的字段吗?我主要关心

  • 问题内容: 是否存在允许我用作有效构造的Java编译器标志?如果没有,是否有任何支持的第三方Java编译器?如果不是,是否有其他支持的语言同时可以轻松调用用Java编写的方法? 原因是我正在编写一种用Java实现的语言。Gotos是我语言的重要组成部分;我希望能够将其编译为本机或JVM字节码,尽管它必须能够轻松使用Java库(即C支持,但要使用它,我必须用C重写库)。 我想生成C或Java等源文件

  • 我想你们大多数人都知道在Java语言中是一个保留的关键字,但实际上并没有被使用。你们可能也知道是一个Java虚拟机(JVM)操作码。我认为Java、Scala和静态编程语言的所有复杂的控制流结构都是在JVM级别上使用和、、等的某种组合来实现的。 查看JVM规范https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.