Java 我在程序中使用名为“String”的类时出错。是否命名冲突?

Java 我在程序中使用名为“String”的类时出错。是否命名冲突?,java,Java,我是Java新手,试图找出不同的命名冲突场景。 这个程序给了我下面提到的错误 class String { int a=3; } class StringBuffer { int c=5; } public class Test1 { int b=6; public static void main(String[] args) { Test1 obj = new Test1(); String obj2

我是Java新手,试图找出不同的命名冲突场景。 这个程序给了我下面提到的错误

class String {
    int a=3;       
}

class StringBuffer {
   int  c=5;
}

public class Test1 {
    int b=6;
    public static void main(String[] args) 
    {
        Test1 obj = new Test1();
        String obj2 =new String();
        StringBuffer obj3 = new StringBuffer();
        System.out.println(obj.b);
        //System.out.println(obj2.a);
        System.out.println(obj3.c);
     }

}
错误:在类Test1中找不到Main方法,请将Main方法>定义为: 公共静态无效字符串[]args 或者JavaFX应用程序类必须扩展JavaFX.application.application

我已搜索此错误线程,但无法找出出现此错误的原因。当我注释掉那个字符串类时,我的程序运行良好,并给出输出。我是新手,所以请有人告诉我这是否真的是命名冲突或者这个程序有什么问题

我知道用这样的名字创建类是个坏主意,但作为新手,我这么做只是为了理解命名冲突。我不明白为什么String类给出的是错误,而不是StringBuffer。

您的自定义String类隐藏了java.lang.String,所以在

编译器使用自定义字符串类,因此找不到接受java.lang.String[]参数的主方法

你可以把它改成

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

但是不定义自己的字符串类更有意义。

创建与JDK同名的类是个坏主意。默认情况下,java.lang.*中的类包含在类路径中。最简单的解决方案是重命名String和StringBuffer类。

请问String和StringBuffer类的意义是什么?除非你特别想测试你是否可以像现有的那样命名你的自定义类,否则它们似乎没有多大用途,与它们的名称几乎没有关系@CHIVID正在用自己的实现隐藏java.lang.String。执行此操作时,需要完全限定java.lang.StringDon’不要将标准java API类型名称用于自定义类型。谢谢!!这澄清了为什么字符串缓冲区没有给出errorYes!!作为java学习者,我这样做只是为了找出不同的命名冲突。当然,我以后会记住这一点。
public static void main(java.lang.String[] args)