为什么变量必须在public class和main()方法中是最终的。这是代码:
public class A {
public static void main(String args[]){
final int a;
}
}
在上面的代码中,变量不能是public,private或者除final之外的任何东西。你能告诉我原因吗?感谢。
答案 0 :(得分:3)
为什么变量必须在公共类和main()方法中是最终的
没有。它是一个方法局部变量,因此它不能有任何访问修饰符,但它可以是final或non-final。它与封闭的类是公共的或封闭的方法是main()
无关。这只是因为它是一个方法局部变量。只有成员变量才能拥有访问修饰符。
答案 1 :(得分:0)
这是一个局部变量。只有实例或静态变量才能有访问修饰符。
例如实例变量:
public class A {
private int a;
public static void main(String args[]){
}
}
答案 2 :(得分:0)
根据java,局部变量只允许最终访问,不会是公共,私有或任何东西。声明的变量在main方法内部,因此它是局部变量。您只能给最终的局部变量。
答案 3 :(得分:0)
不一定是final
。
它不能是public
或private
,因为它是main
方法范围内的局部变量。 public
或private
在这里没有任何意义。它们只能用于member变量。
答案 4 :(得分:0)
方法中的变量没有自己的访问控制,您不能公开Java方法内部的变量。
答案 5 :(得分:0)
根本没必要所有变量必须在任何类(不仅仅是公共)类中都是最终的。有时您可能需要确保变量的值不会随时修改,因此您可以将其标记为最终值。
如果由多个线程共享,那么将成员变量设为最终确保它们是线程安全的。
答案 6 :(得分:0)
这是一个范围问题。公共和私有表示变量的范围,这基本上意味着谁可以看到它。
公共意味着拥有A实例的任何人都可以看到它的变量。私有意味着只有A类内部的方法才能看到它。
在您的情况下,您定义了main方法的内部,这意味着它获取方法范围,并且只有main方法内部的代码知道a。
最终不是范围,但这意味着一旦分配了新值,就无法为其分配。
有关详细信息,here是有关Java范围的信息。
答案 7 :(得分:0)
进入main函数,声明一个没有final
关键字的变量。
public static void main(String [] args)
{
int noFinalNeeded;
}
证明语句“为什么变量必须在公共类和main()方法中是最终的” false 。
反例反驳。
对于公共和私有:只有方法之外的实例变量可以是公共变量或私有变量。像这样:
public MyClass
{
private boolean thisIsMadness;
public int thisIsSparta;
public static void main(String [] args)
{
int cookie;
}
}
答案 8 :(得分:0)
public或private是关键字,可以告诉其他人这些变量是否对他们可见。他们告诉变量的范围。 在方法块中,不需要使用公共或私有,因为“{}”具有该能力。方法中的行已经告诉其他人这些变量仅在{和}之间可用。所以Java让“公共”或“私人”在方法中不合法