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

为什么Final变量在Java的main方法中不需要初始化?

融唯
2023-03-14
问题内容

当我只是尝试使用 Java
编写一些程序时,我尝试使用final变量,我知道final变量必须在声明时进行初始化,但是在main方法内部它接受了final没有初始化的变量。我不知道是什么原因。任何人都可以告诉我原因。

谢谢

码:

class name
{
     final int b; //here shows error
     public static void main(String args[])
    {
        final int a; // here no error... why?
        System.out.println("hai");
    }
}

问题答案:

对于 实例变量水平

  • 最终变量只能初始化一次。

  • 必须 在构造函数结束之前 初始化类级别的最终变量。

对于 本地(方法)级别

  • 方法级别的最终变量只能初始化一次。
  • 使用前* 必须先初始化 *

因此,基本上,如果您不使用局部最终变量,也可以跳过它的初始化。

如果变量处于实例级别,则必须在定义或构造函数主体中对其进行初始化。

在您的代码中,您有一个final int b永远不会初始化的实例变量,因此会出现错误。

您还有一个final int a从未使用过的局部变量。因此,该变量没有错误。



 类似资料:
  • 问题内容: print语句导致以下编译时错误, 局部变量f可能尚未初始化 如果Java中的原语已经具有默认值(float = 0.0f) ,为什么需要定义一个? 所以这有效 感谢大家! 问题答案: 因为它是一个局部变量。这就是为什么什么都没有分配的原因: 局部变量略有不同。编译器永远不会为未初始化的局部变量分配默认值。如果您无法在声明它的地方初始化本地变量,请确保在尝试使用它之前为其分配一个值。访

  • print语句会导致以下编译时错误, 局部变量f可能尚未初始化 如果Java中的原语已经有一个默认值(float=0.0f),为什么我需要定义一个呢? 所以,这是有效的 谢谢大家!

  • 如果我在我的类中创建一个bool,就像一样,它默认为false。 当我在我的方法中创建相同的bool时,我得到一个错误“使用未分配的局部变量检查”。为什么?

  • 下面的示例类无法编译: 此代码的编译错误消息是: 但是,对于包含以下方法的类,Java不会生成任何错误消息: 关于初始化及其要求,为什么Java对最终实例变量和最终局部变量的处理不同?谢谢

  • 问题内容: 我写了下面的代码 因此,当我运行它时,它可以正常运行并打印输出“ Hello”。 但是,如果JVM规范要求该main方法应该是公开的,因为“否则它就看不到main”,那么它也不适用于该类吗?如果JVM在未声明为public时“看不到” Hello.main(),它将如何看到类A本身。 除了“因为规范这样说”以外,对此还有什么解释吗? 并且,如果JVM能够看到所有类和方法,因为它本身就是

  • 问题内容: 为什么Java中的main方法总是需要参数?为什么我们每次都要写,而不是在使用任何参数时才写? 这样的方法会生成编译器错误。由于我们从不对main方法使用任何参数,因此应允许这样做。 这不是面试问题。编程时才想到。 问题答案: 基本上,有四个答案: 因为那是它的设计方式。是的,我知道这是一个循环的原因。但是关键是这就是它的样子,并且不会改变。因此,除非您打算设计自己的语言,否则这个问题