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;">

 
 
 
 

java里null强转为某个类会报错吗?的更多相关文章

  1. MyEclipse上有main函数类运行报错:Editor does not contain a main type

    MyEclipse下有main函数类运行报错:Editor does not contain a main type 出现这种问题的原因是,该java文件所在的包没有被MyEclipse认定为源码包. ...

  2. 用idea工具对java打包:命令 mvn clear package,报错

    用idea工具对java打包:命令 mvn clear package,报错 网上都是eclipse的,要么是project structure和setting的(当然这俩也要用) 我都试了,每一个能 ...

  3. MyEclipse上有main函数类运行报错:Editor does not contain a

    MyEclipse下有main函数类运行报错:Editor does not contain a main type?出现这种问题的原因是,该java文件   MyEclipse下有main函数类运行 ...

  4. java中list强转为map类型

    起因:读取数据库文件的测试用例,测试用例需要存放到一个map中,方便下次调用, 读取的内容返回的内容存放在一个list中,并且数据内容是key=value的形式,最开始使用切片方式,做了很多无用功,后 ...

  5. java使用类数组 报错Exception in thread "main" java.lang.NullPointerException

    源代码如下: Point[] points=new Point[n];//Point是一个类 for(int i=0;i<n;i++) { System.out.print("请输入x ...

  6. java -jar 执行 eclipse export 的 jar 包报错处理

    1. 错误1:打 jar 包执行,报错,找不到 类库的 jar 包 F:\>java -jar remoteLogin.jarException in thread "AWT-Even ...

  7. eclipse开发Java web工程时,jsp第一行报错,如何解决?

    与myeclipse不同,eclipse开发java web项目时是要下载第三方软件(服务器)的,正是这个原因,很多初学者用eclipse学习java web的时候,总是会遇到一些小问题.其中常见的一 ...

  8. 在android 中开发java.net.SocketException: socket failed: EACCES (Permission denied) 报错

    在android中下载文件,写好下载文件的代码后需要配置相应的权限 <uses-permission android:name="android.permission.INTERNET ...

  9. java含有静态代码块新建的时候报错java.lang.ExceptionInInitializerError

    问题描述 最近在写一些单元测试用例,为了避免连接外界服务,所有选择mock了数据库Dao层,计划将数据库所需要的数据存在List中,在类加载的时候初始化List并且填充数据.代码如下: public ...

随机推荐

  1. 安装驱动模块ko

    1. make install 2. 3.手动加载驱动程序 [root@localhost template]# modprobe usbnet [root@localhost template]# ...

  2. IDEA查看JDK源代码

    之前已经讲解过如何使用Eclipse查看源代码,IDEA作为一个集成开发环境越来越流行,今天学习以下如何使用Eclipse查看JDK的代码. File->Project Structure,选择 ...

  3. php内置函数,时间函数,字符串函数

    字符数----某一种编码下的一个文字 字节数----8位的0或1或者混合组成:显然字节占的空间大,显然一个字符至少占有一个字节,中文在utf-8至少占用3个也有可能4个字节 由上图可见,substr( ...

  4. HTML DOM 事件与方法

    HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序. 事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). 鼠标事件 键盘事件 框架/对象(F ...

  5. luogu小金明qwq x

    1.P1060 开心的金明 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算, ...

  6. python实现的一个中文文本摘要程序

    文本摘要方法有很多,主要分为抽取式和生成式,应用比较多的是抽取式,也比较简单,就是从文本中抽取重要的句子或段落.本方法主要是利用句子中的关键词的距离,主要思想和参考来自阮一峰的网络日志http://w ...

  7. Spring Boot教程(二十八)通过JdbcTemplate编写数据访问

    数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. 首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置: <depende ...

  8. Apicloud_(项目)网上书城01_前端搭建

    [本文皆在记录自己开发Apicloud项目过程,不具备教学水平性文章] 参考书籍<30天App开发从0到1> Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud ...

  9. postman教学视频百度网盘转载分享

    百度云盘教学视频分享:https://pan.baidu.com/s/1r_e08FOkvQBZcC5-vU5M4w postman官网及下载地址:https://www.getpostman.com ...

  10. sqli-labs(45)

    基于报错的password处的')闭合注入 就是没有报错信息 payload和43关一样的构造