为什么最终变量不';在java中,是否不需要在main方法中初始化?

为什么最终变量不';在java中,是否不需要在main方法中初始化?,java,final,Java,Final,当我尝试在Java中执行一些程序时,我尝试使用final变量,我知道final变量必须在声明时初始化,但在main方法中,它接受final变量而不进行初始化。我不知道原因是什么。谁能告诉我原因吗 多谢各位 代码: 答案见附件 变量可以声明为final。最后一个变量只能指定一次如果最后一个变量被赋值,则这是一个编译时错误,除非在赋值之前它肯定是未赋值的 现在,对于局部变量,它的作用域在声明的块内有效。流量将是线性的(从上到下)。因此,编译器可以很容易地确定变量将在哪里初始化 但是在字段的情况下,

当我尝试在Java中执行一些程序时,我尝试使用
final
变量,我知道
final
变量必须在声明时初始化,但在main方法中,它接受
final
变量而不进行初始化。我不知道原因是什么。谁能告诉我原因吗

多谢各位

代码:

答案见附件

变量可以声明为final。最后一个变量只能指定一次如果最后一个变量被赋值,则这是一个编译时错误,除非在赋值之前它肯定是未赋值的

现在,对于局部变量,它的作用域在声明的块内有效。流量将是线性的(从上到下)。因此,编译器可以很容易地确定变量将在哪里初始化

但是在
字段
的情况下,不可能找到哪个方法将首先分配变量,除非它是在
构造函数
中分配的


因此,您必须在声明期间或在构造函数中为实例变量级别分配
最终字段

  • 最后一个变量只能初始化一次

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

对于本地(方法)级别

  • 方法级别的最终变量只能初始化一次
  • 在使用之前,必须对其进行初始化
所以基本上,如果不使用局部final变量,也可以跳过它的初始化

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

在代码中有一个实例变量
final int b
,该变量从未初始化过,因此存在错误


您还有一个从未使用过的局部变量
final int a
。所以这个变量没有错误。

局部变量没有默认值,我们可以这样声明

最终INTA; 没有错误 但我们无法访问它。当我们试图访问它时,就会发生错误。 但这种情况不适用于类变量

因此,在您的情况下,当您访问打印变量的值时,会发生错误。
谢谢

如果未标记为final,则实例变量将获得默认值,而局部变量则不会获得默认值

例如,变量“intb”要成为final,必须在声明时或在构造函数中赋值


对于main方法中的局部变量“int a”,如果未初始化,则不要出错。

向我们展示您的代码,以便我们可以帮助您分享您的code@DavideLorenzoMARINO检查我的update@DavideLorenzoMARINO我还有一个疑问,静态方法只能访问静态变量final@KVK看看这个范围。这是当地的方法。
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");
    }
}