Java错误仅允许对参数进行非法修改
下面的代码有什么问题
public static void main(String[] args){
public static final String Name = "Robin Wilson";
}
字符串引用名称显示编译错误-Java错误-参数名称的修饰符非法-仅允许使用final
我同意下面给出的建议,但我想了解为什么它是不允许的,尽管两者都是静态的
你可以在下面搜索框中键入要查询的问题!
下面的代码有什么问题
public static void main(String[] args){
public static final String Name = "Robin Wilson";
}
字符串引用名称显示编译错误-Java错误-参数名称的修饰符非法-仅允许使用final
我同意下面给出的建议,但我想了解为什么它是不允许的,尽管两者都是静态的
# 1 楼答案
如何修复它
public
和static
不能在方法定义中使用。因此,这个错误告诉您,在方法中定义的变量所允许的唯一修饰符是final
您可以通过删除有问题的修饰符来修复它:
或者像这样将变量定义移出方法
说明
要理解原因,您需要了解三个修饰符(
public
和static
和final
)各自的含义String Name
只是说我们正在跟踪一个String
并称之为Name
公共
public
表示程序的任何部分都可以读取它(否则它只能由MyClass
类中编写的代码读取)public
指定哪些其他代码可以访问它。在方法内部,这是没有意义的。方法中定义的变量只能在该方法中访问,一旦方法完成,它们就会被抛出。因此,这些变量不可能是public
静态
static
表示Name
变量是类本身的一部分,而不是类实例的一部分。换句话说,MyClass
类的所有实例共享相同的Name
变量static
指定如何访问它(在类的实例上或通过类本身)。在一个方法中,这是没有意义的,因为局部变量在方法关闭后被丢弃,所以其他任何东西都不会访问它最终
final
表示Name
的值在赋值后永远不会更改final
描述如何使用变量。它在方法中是有意义的,因为它与访问无关# 2 楼答案
当您将字符串变量声明为public static final String Name=“Robin Wilson”强>
根据java规则,当您在Main方法中声明该字符串时,该字符串name是局部变量。所以这里只允许期末考试。 您可以将其定义为**final String name=“Robin Wilson”**在主要方法中。 对于局部变量,仅允许最终
# 3 楼答案
不能对局部变量使用公共静态修饰符。执行以下任一操作:
或者将其声明为成员变量
记住,final是局部变量的唯一修改器
# 4 楼答案
您的问题已修改为:
方法中的变量仅存在于堆栈框架上。每次调用一个方法时,JVM都会创建一个新的堆栈帧,一旦该方法完成,它就会被丢弃
public
关键字用于类、方法和字段以控制访问。没有可应用于堆栈(局部)变量的访问概念。它仅在调用时存在于方法内部,并且只能从方法内部访问static
关键字用于字段,表示一个类的所有实例中只存在一个这样的成员;用于方法,将它们创建为不需要实例的类的成员。堆栈上的任何东西都没有静态的概念;这是暂时的。一旦从方法调用返回,堆栈帧及其上的所有局部变量就不再存在基本上,当谈论局部变量时,两者都没有任何意义
# 5 楼答案
您不能将局部变量(方法中的变量是局部变量)声明为
public static
。相反,以下代码将起作用:# 6 楼答案
您不能在
main
内声明它,将它放在方法外,您希望它作为[类成员]:否则(我认为这不是您想要的)只需从那里删除
public static
,然后简单地写: