文章预览
之前某次面试,我说自己对Java比较熟,面试官问了我一个问题:假设你自己写一个String类,包名也是 java.lang ,代码里使用String的时候,这个String类能编译成功吗?能运行成功吗? 好了,我当时又是一脸懵逼o((⊙﹏⊙))o,因为我只是看了些Java的面试题目,而且并没有涉及类加载方面的内容(ps:我是怎么敢说我对Java比较熟的)。 结论 先说结论: 能编译成功,但是运行会报错。因为加载String的时候根据双亲委派机制会默认加载jdk里的String。 在自己写的String类中写main方法并运行,会报错找不到main方法。 public class String { public int print ( int a) { int b = a; return b; } public static void main (String[] args) { new String().print( 1 ); } } 上述代码运行报错如下: 错误: 在类 java.la
………………………………