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