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. maven私仓搭建——nexus3

    maven私仓搭建——nexus3本文主要介绍maven私仓在windows下的搭建.本文主要参考:http://www.cnblogs.com/bingyeh/p/5913486.html好,下面上 ...

  2. 认识配置文件schema.xml(managed-schema)

    1.schema文件是在SolrConfig中的架构工厂定义,有两种定义模式: 1.1.默认的托管模式: solr默认使用的就是托管模式.也就是当在solrconfig.xml文件中没有显式声明< ...

  3. Mongodb数据模型

    描述表关系的方式: 方式一:嵌入式 > db.person.find({name:'zjf'}).pretty() { "_id" : ObjectId("592f ...

  4. NFS原理

    1.什么是NFS? 全称 network file system 网络文件系统 通过网络存储和组织文件的一种方法或机制. 什么是文件系统? 2.为什么要用共享存储? 前端所有的应用服务器接收到用户上传 ...

  5. JZOJ5358【NOIP2017提高A组模拟9.12】BBQ

    题目 分析 发现,\(C_{ai+aj+bi+bj}^{ai+aj}\),其实就等于从(0,0)走最短路到(ai+aj,bi+bj). 我们可以想办法将i.j分开,从(0,0)走最短路到(ai+aj, ...

  6. B/S结构下上传下载大文件(1G以上)的解决方案

    以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  ...

  7. Python黑科技神奇去除马赛克

    图片修复程序-可用于水印去除 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以 ...

  8. python脚本中selenium启动浏览器报错os.path.basename(self.path), self.start_error_message) selenium.common.excep

    在python脚本中,使用selenium启动浏览器报错,原因是未安装浏览器驱动,报错内容如下: # -*- coding:utf-8 -*-from selenium import webdrive ...

  9. d3.js+svg的树形图

    效果图 数据 { "name":"中国", "children": [ { "name":"浙江" ...

  10. C++入门经典-例6.19-字符串类型之修改string字符串的单个字符串

    1:头文件 #include <string> 声明一个string变量,形式如下: std::string s; 初始化string类型的变量: std::string s1(" ...