以下代码有什么问题
public static void main(String[] args){
public static final String Name = "Robin Wilson";
}
字符串引用名称显示编译错误-Java错误-参数名称的修饰符非法-仅允许使用final
我同意下面给出的建议,但我想了解为什么这是不允许的,尽管两者都是静态的?
你不能在main
中声明这个,把它放在方法之外,你想要它作为一个[类成员]:
public static final String Name = "Robin Wilson";
public static void main(String[] args) throws IOException { }
否则(我认为这不是你想要的)只需从那里删除public static
,然后简单地写:
public static void main(String[] args){
final String Name = "Robin Wilson";
}
public
和static
不能在方法定义中使用。因此,这个错误告诉您,方法内部定义的变量所允许的唯一修饰符是final
。
您可以通过删除违规修饰符来修复它:
class MyClass
{
public static void main(String[] args){
final String Name = "Robin Wilson";
}
}
或者像这样将变量定义移出方法
class MyClass
{
public static void main(String[] args){
}
public static final Name = "Robin Wilson";
}
要理解为什么,您需要理解三个修饰符(公共
和静态
和最终
)各自的含义。String Name
只是说我们跟踪一个String
并称之为Name
。
class MyClass
{
public String Name = "Robin Wilson";
}
公共代码表示程序的任何部分都可以读取它(否则只能由写在MyClass类中的代码读取)。
public
指定哪些其他代码可以访问它。在方法内部,这是没有意义的。方法中定义的变量只能在该方法中访问,一旦该方法完成,它们就会被抛出。因此,这些变量不可能是公开的。
class MyClass
{
static String Name = "Robin Wilson";
}
static
表示Name
变量是类本身的一部分,而不是类的实例。换句话说,MyClass
类的所有实例共享相同的Name
变量。
静态指定如何访问它(在类的实例上或通过类本身)。在方法内部,这是没有意义的,因为局部变量在方法关闭后被丢弃,所以没有其他变量会访问它。
class MyClass
{
final String Name = "Robin Wilson";
}
final
表示Name
的值在分配后永远不会更改。
final
描述如何使用变量。它在方法中是有意义的,因为它与访问无关。
您的问题已修改为:
我想了解为什么这是不允许的,尽管两者都是静态的?
方法中的变量只存在于堆栈框架上。每次调用一个方法时,JVM都会创建一个新的堆栈帧,一旦该方法完成,它就会被丢弃。
公共关键字用于类、方法和字段来控制访问。没有可以应用于堆栈(本地)变量的访问概念。它只存在于调用方法时的方法内部,并且只能从方法内部访问。
static
关键字用于字段,表示一个类的所有实例中只存在一个这样的成员,以及用于将它们创建为不需要实例的类成员的方法。堆栈上的任何东西都没有静态的概念;这是暂时的。一旦从方法调用返回,堆栈框架及其上的所有局部变量就不再存在。
基本上,当谈论局部变量时,两者都没有任何意义。
我是爪哇的新手,我想在爪哇做一个学校的任命。这是一个遵循MVC模式的小游戏(我不知道它应该如何工作,我所了解的只是这个方法在“包”中分离代码,所以我们只需要修改一些包中的元素,例如,使游戏看起来完全不同;对吗?)。 因此,我们使用JFrame和JPanel包创建了一个启动框架。现在是时候在控制器包中的类名“Control”中创建main()方法了: 现在,我的老师要求我:“私下声明StartupG
所以我对Java还是新手,所以这可能真的很愚蠢,但我找不到答案,所以我们开始吧!在我的代码的开头,我试图简单地用“public class robot{}”来声明这个类,然而,它给了我一个错误“本地类的非法修饰符___;;只允许使用抽象或final”。我在互联网上看到的每一个地方,它都说不要称之为静态类,但我不是!!!这可能真的很蠢,我还不知道,因为我还是新手。请帮忙!这是我的代码:
我写的代码有一个错误消息。一切都应该是好的,因为这些例子都有相同的代码,但是不知何故我得到了一个错误。错误消息说: 期望令牌上 ")",; 语法错误-参数onOptionsItem选择的非法修饰符;只允许最终-期望令牌 "(",; 语法错误
问题内容: 开闭原则指出:“软件实体(类,模块,功能等)应为扩展而开放,而为修改而封闭”。 但是,约书亚·布洛赫(Joshua Bloch)在其著名的著作《有效的Java》中给出了以下建议:“设计和文档化继承,否则禁止继承”,并鼓励程序员使用“最终”修饰符禁止子类化。 我认为这两个原则显然彼此矛盾(我错了吗?)。编写代码时遵循什么原则?为什么?您是否让类保持打开状态,禁止继承其中的某些类(哪些?)
我目前正在从我找到的教程在Eclipse中构建一个应用程序,但我在代码中有错误。 我在下面包含了主要活动文件(MainActivity.java): 错误是这样写的 存在“变量levelNames的非法修饰符;只允许使用final” 有人有什么想法吗?
我正在编写代码以匹配给定字符串或行的方法声明。这就是我的问题所在。当试图匹配修饰符时,当声明 工作。我一直都是这样 这就是我的问题。两者有什么区别,所有修饰符都一样吗?我相信这是有原因的,松散的顺序不是设计决定。 哦,如果有人知道匹配给定字符串的方法的最佳方法,请告诉我。谢谢。现在我正在使用正则表达式。