java里null强转为某个类会报错吗?

1.定义一个User类如下:
/**
* @author lizhibiao
* @date 2018/11/27 17:21
*/
public class User
{
private String userName;

private int age;

private int cutScore;

public String getUserName()
{
return userName;
}

public void setUserName(String userName)
{
this.userName = userName;
}

public int getAge()
{
return age;
}

public void setAge(int age)
{
this.age = age;
}

public int getCutScore() {
return cutScore;
}

public void setCutScore(int cutScore) {
this.cutScore = cutScore;
}
}
 
2.测试null是否可以转为User类
public class Test
{
public static void main(String[] args)
{
User user = (User)null;
System.out.println(user);
}
}
运行结果如下:
null
 
也就是输出值为null,所以null可以强转为某个类编译不报错,但是强转后还是为null
 
 
3.如果null来调用方法则会报错
public class Test
{
public static void main(String[] args)
{
User user = (User)null;
System.out.println(user.getUserName());
}
}
运行结果如下:
Exception in thread "main" java.lang.NullPointerException
 at str.Test.main(Test.java:11)
 
报空异常
 
 
4.今天有网友加好友,给我发了一个例子,发现null强转某个对象后,调用方法居然不报空指针。然后我按他的意思写了个例子如下:
/**
* Hello world!
*
*/
public class App
{
private void commonMethod()
{
System.out.println("commonMethod");
}

private static void staticMethod()
{
System.out.println("我是静态方法");
}


public static void main(String[] args)
{
App app = (App)null;

//调用静态方法,不报错
app.staticMethod();

//调用普通方法,报空指针
app.commonMethod();
}
}
运行结果:
 
分析:发现没,null强转为对象后,调用静态方法居然是不会报错的,调用普通方法会报空指针。原因是,我们在进行App app = (App)null强转操作时,虽然对象app是为null没有引用的,但是java里调用静态方法不需要创建实例对象,静态成员应该通过类型来访问,也就是类名.静态方法()就可以调用了静态方法了。所以,app.staticMethod()调用静态方法不报错。
 
感谢这位网友,也欢迎大家有疑问添加微信:lizb0907,进行交流。
最后,以后不怎么在博客园上写文章了,在新搭的博客上写文章:
有兴趣的伙伴们可以来交流,
坚持做好一件事!
 
 
有疑问,扫我二维码添加微信,欢迎骚扰!
坚持做一件事,一起学习。


<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

posted @ 2018-12-06 15:31  lizb0907  阅读(5595)  评论(0编辑  收藏  举报