黑马程序员技术交流社区

标题: 有没有人会这个? [打印本页]

作者: @ne_pie尒ce    时间: 2013-11-8 18:06
标题: 有没有人会这个?
public class String {

        /**
         * @param args
         */
        public static void main(String[] args){
                // TODO Auto-generated method stub
                System.out.println("string");
        }

}
运行结果:
错误: 在类 String 中找不到主方法, 请将主方法定义为:   public static void main(String[] args)解释一下运行结果出现的原因?



作者: 麦者    时间: 2013-11-8 18:10
String能跳过编译器?
作者: 寻丶丶觅    时间: 2013-11-8 18:19
我能说把主方法重写下就好了吗, 以前也遇到过,不知道哪里出问题
作者: 黄小贝    时间: 2013-11-8 18:35
我的猜测,编译器以为你运行的是JDK里面的String类,然后那里面没有main函数,你把你的类名换个试试
作者: ~﹏~    时间: 2013-11-8 20:30
你得看看ClassLoader是什么,怎么加载类的,
ClassLoader加载你这个String类的时候,会先在SystemClassLoader-->extensionClassLoader-->bootStrapClassLoader
中找这个类,然后会在bootStrapClassLoader中发现这个类的实例并返回
那个String中当然没有main方法。。。
作者: Lucking    时间: 2013-11-8 20:55
java编译器默认找到是java自己的String类,她是final修饰的,所以对她什么都不能干,别说没有这个方法,就算有main方法也没法Overloading哦~
作者: 发哥-阿花    时间: 2013-11-8 21:03
String是java中的字符串类型。楼主对命名规则很不熟悉。首先你要注意不能使用java中关键字。

命名时,首字母大写,其他小写,多个单词时,首字母均大写。例如StringDemo;类是代表对象的,命名时尽量使用名词。

不对请指正,不全望补充。

作者: 红茶2331    时间: 2013-11-8 21:08
个人感觉是你的包名写错了,

String属于关键字,不能用于包名,编译就出错了{:soso_e147:}
作者: 红茶2331    时间: 2013-11-8 21:11
失误,应该是类名

在java中保留关键字是被java本身定义使用的字母组合,具有特殊意义,所以不能用作变量名、方法名以及类名。Java共有51个关键字,

java是以C++为基础的。C++以C为基础的,很多基本的都是相同的,不可以做类名,包名是可以的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2