该程序能正常运行吗?
public class Null {
public static void main(String[] args) {
((Null)null).haha();
}
public void haha(){
System.out.println("null:haha");
}
}
答案是可以,运行结果如下:
因为刚开始自己也搞错了,所以就记录一下。
(1):java中的任何类型都可以对null进行强转,都是合法的,但是强转后是无效对象,其返回的还是null。
(2):haha()方法是被static修饰,静态方法的调用是和类名绑定的,直接类名.方法名就可以调用,所以程序中这样调用时可以执行的,不需要用对象来调用,(当然也可以通过实例化对象来调用)。如果该方法没有被static修饰,那就会报空指针异常了,因为null对象没有被实例化。
还有一段和上面相似的程序,正常输出:
public class Null {
public static void main(String[] args) {
Null nullDemo = null;
nullDemo.haha();
}
public static void haha(){
System.out.println("null:haha");
}
}