本帖最后由 陈云阳 于 2014-6-1 19:31 编辑
楼主很有求知欲不错,不过该问题涉及到面向过程的,是需要深入函数更深的问题, 一个是函数简单的重载的问题,楼主了解就好,不必要纠结
null是一个特殊的关键字,是用来初始化用的,调用show返回的return null;是一个字符串数值,在内存中存在的,被printl字符参数的重载函数接收,并以字符串打印出来,而你直接println(null),这时的null不存在内存中,但是作为接收参数既被当成字符串数组接收参数,又被当做字符串, println(char[])和println(String s)都能接收,这时虚拟机不知道该调用哪个重载函数 所以出错,
这里涉及到的面向过程的问题,需要学习c++和c语言深入了解函数的机制,所以楼主你只需要记住结果就好,我们是学面向对象的,不用去管面向过程,小毕老师不是说过嘛。
下面我用show函数模拟println的俩个重载函数接收参数给楼主列出来,楼主你去运行一下,然后把下面代码的注释去掉 再运行一次,就知道了
- class Test
- {
- public static void main(String[] args)
- {
- show(null);
-
- }
- public static String show(String i)
- {
- return "deng";
- }
- /*public static String show(char [] s)
- {
- return "keng";
- }*/
- }
复制代码
|