Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串类会造成混乱_Java_String_Keyword - Fatal编程技术网

Java 字符串类会造成混乱

Java 字符串类会造成混乱,java,string,keyword,Java,String,Keyword,最近我在java中遇到了一个错误 Exception in thread "main" java.lang.NoSuchMethodError: main 即使我的类只有3行代码 public class Test{ public static void main(String[] args){ System.out.println("hello"); } } 我想知道为什么会发生这种情况,但后来我知道我在同一个包中尝试并创建了一个公共类字符串 所以现在出现了一个新的

最近我在java中遇到了一个错误

Exception in thread "main" java.lang.NoSuchMethodError: main
即使我的类只有3行代码

public class Test{
    public static void main(String[] args){
    System.out.println("hello");
    }
}
我想知道为什么会发生这种情况,但后来我知道我在同一个包中尝试并创建了一个公共类字符串

所以现在出现了一个新的问题,尽管字符串不是java中定义的
关键字(您可以在代码中使用),但在这种情况下会发生什么

然后我刚刚从包中删除了String.java&String.class文件,但听起来很奇怪,您不能同时使用String类


问:java是否主要优先考虑我们的自定义类?

您的主方法需要匹配

 public static void main(java.lang.String[] args){ ... }
如果您在主方法所在的类所在的包中创建自己的
String
类,它将成为

 public static void main(your.own.package.String[] args){ ... }
这是有效的,但不允许运行时启动器再找到main方法,因为它需要
java.lang.String[]
作为参数

默认情况下,
java.lang
中的类是自动导入的,因此您不需要显式的
import
语句—这可能会让您更加困惑

根据经验,我尽量避免将自己的类命名为Java运行时中的类,尤其是
Java.lang

另见:

一个包由许多编译单元组成(§7.3)。编译单元自动访问其包中声明的所有类型,并且自动导入预定义包java.lang中声明的所有公共类型


您始终可以使用完全限定的名称:

public static void main(java.lang.String[] args) ...

您讲的故事说,我们可以使用
String
作为一个类的名称。但是,就像在现实生活中一样,如果周围有两个叫“约翰”的人,你有时需要消除他们之间的歧义。

我真的不明白你想说什么,但这意味着如果我写String[]这意味着我的堂兄弟班?这真的意味着吗?如果您编写字符串[],那么编译器将查看导入以检查是否存在字符串的导入。由于您的另一个类字符串位于同一个包中,因此默认情况下会导入它。对此有任何引用吗?我不认为这是错误的,但默认情况下,
java.lang
是导入的(如答案中所述)。。。JRE JAR是类路径AFAIK上的第一个…我又做了一次测试,不确定是否足够,在另一个包中有字符串,并使用import另一个.package.*并且来自同一个包的那个仍然具有优先级。当另一个包(不在同一个包中)中只有字符串,并且它作为另一个.package.*导入时,我得到了一个不明确的错误…@Betlista有趣的是,当前包中的类型似乎总是优先于任何导入的类型-并且编译器不会发出任何错误。。。我已经发布了一个后续问题:当然可能会有。。像风筝(鸟,纸制品)