A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kellyzyb 中级黑马   /  2013-10-10 10:48  /  1999 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kellyzyb 于 2013-10-10 10:54 编辑
  1. public class TestOverLoad
  2. {
  3. public static void main(String[] args)
  4. {
  5. Test test = new Test();
  6. test.print(null);
  7. }


  8. }



  9. class Test
  10. {

  11. public void print(String some)
  12. {
  13. System.out.println("String version print");
  14. }

  15. public void print(Object some)
  16. {
  17. System.out.println("Object version print");
  18. }

  19. }
复制代码
刚刚在网上看到一段关于重载的代码
关键在于NULL的这参数,这个参数属于Object ,属于String类吗?如果属于String类,传参数的时候不是应该带""号吗。
运行的结果是String version print . 按结果看是把NULL当成了String 来处理。这点不是很理解。

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
本帖最后由 张宏祚 于 2013-10-10 11:20 编辑

Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。但就null本身来说,它不是对象,也不知道什么类型,也不是java.lang.Object的实例。
可以做一个简单的例子:

        //null是对象吗? 属于Object类型吗?
        if (null instanceof java.lang.Object) {
            System.out.println("null属于java.lang.Object类型");
        } else {
            System.out.println("null不属于java.lang.Object类型");
        }

结果会输出:null不属于java.lang.Object类型

同理:
if (null instanceof java.lang.String) {
            System.out.println("null属于java.lang.String类型");
        } else {
            System.out.println("null不属于java.lang.String类型");
        }
结果是:null不属于java.lang.String类型

所以null既不是object,也不是String ,当重载的时候,参数是null而自动选择String,这个还需要进一步的交流!和楼主共同进步!

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

回复 使用道具 举报 1 0
在Java语言规范中,null表示引用类型的变量的值为空,不代表任何对象或实例。
有一点要知道,null不是一个关键字,如同true和false不是关键字一样,它们都是值。
以下是我的看法:null值可以传给任何引用类型的变量,所以把String类型参数的方法注释掉,
结果就是另一个了,由此可以看出JVM把null传给了继承体系中的子类了。这正好就是多态。
如果重载方法中的参数不存在继承,调用方法时报错。

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
我的理解是null不是一个关键字 是一个返回值  
String和Object作为对象 都会返回地址值 而地址值是以字符串形式表现的
所以当对象不存在时 返回空值null  所以这个null系统默认为字符串

不知道理解的对不对 欢迎指正!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
To 金牌黑马 2013-10-10 12:45:13
报纸
楼主你好。如果问题已解决请及时将帖子状态改为提问结束,如果未解决请继续提问。谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马