黑马程序员技术交流社区

标题: 请大神帮忙解答 [打印本页]

作者: 大地z灵    时间: 2015-10-27 09:51
标题: 请大神帮忙解答
记不得在哪看见的代码
public class NULL {
    public static void show(){
        System.out.println("hello");
    }
    public static void main(String[] args) {
        ((NULL)null).show();
    }
}

为什么会输出hello呢,main方法中的代码什么意思
作者: hbcoding    时间: 2015-10-27 11:05
将无类型的null强转为NULL类型,然后再调用静态方法show(),可以把语句写成NULL  a  = (NULL)null; a.show();
这样就好理解了
作者: sharplance    时间: 2015-10-27 11:17
(NULL)null 是将一个空引用强转为 NULL 类的引用,可能相当于 new NULL(),即匿名对象。
作者: ln0491    时间: 2015-10-27 12:02
不错学习了。
作者: Sayman    时间: 2015-10-27 12:37
学到了!!!
作者: 雨来    时间: 2015-10-27 13:14
((NULL)null)  NUll是一个类  null 是Java中的一个关键字   (NUll)null   是把null 强制转换成了Null类型  在内存栈中是有引用的  因为show 被Static修饰了,是静态,静态是先于对象存在的 ,所以NUll的引用可以直接调用show 方法  无需创建对对象    (NUll)null ;和String s;  应该是一个道理的吧,只不过null 有点特殊吧了
作者: kunsongjack    时间: 2015-10-27 13:53
hbcoding 发表于 2015-10-27 11:05
将无类型的null强转为NULL类型,然后再调用静态方法show(),可以把语句写成NULL  a  = (NULL)null; a.show( ...

理解的很好,学习了
作者: 我若为神    时间: 2015-10-27 14:09
学习到了
作者: 1379号监听员    时间: 2015-10-27 18:27
学习了!
作者: lixp    时间: 2015-10-27 18:41
不错,学习了
作者: shiawase    时间: 2015-10-27 20:44
加油!加油!加油!加油!加油!加油!加油!
作者: ppaapc    时间: 2015-10-27 21:25
不错  学习了
作者: beiji    时间: 2015-10-27 22:19
几个大神很厉害,学习到了




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