NullPointException空指针异常
先拿一个例子来开头吧
User user = new User("123",null); if (user.getPassword().equals("123")){System.out.println("登录成功"); } System.out.println("登录失败");
结果:
报错很简单,因为在user.getPassword获取变量时候为null
但是再看下一个写法
User user = new User("123",null);if ("123".equals(user.getPassword())){System.out.println("登录成功");}System.out.println("登录失败");
结果他没有报空指针,反而走完了,这里就不难发现 null.euqals( ) 是肯定会报空指针的,为什么呢???
首先 了解一下null,null在java里一般是来表示缺失值的,他不能赋值给基本类型,但是他赋值给引用类型instanceof又不是该类型
User user1 = null; User user2 = new User(); if (user1 instanceof User){System.out.println("true1"); } if (user2 instanceof User){System.out.println("true2"); } Integer a = null; String loop = a instanceof Integer?"true":"false"; System.out.println(loop);
回归正题哈哈,equals是java.long.String下的一个方法,调试这个equals不难发现
public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false; }
他用的是this去比较的,那么对这个this进行赋值相当于
String s = String.valueOf(null);
然后就会发现String的有参构造都是@NotNull,所以就会报空指针异常
NullPointException空指针异常相关推荐
- NullPointException空指针异常相关及预防办法
空指针异常相关及预防办法 本文结合网上搜索和实践解决的办法整理 1.空指针异常 (实际上指的是java的引用) 简单理解:空指针就是空引用:引用本身为空,却用他调用了方法和属性 null是所有引用类型 ...
- 空指针异常 NullPointException
空指针异常 NullPointException 空指针异常,是运行时异常,及时编写代码时出现了空指针异常,编译器(javac) 会编译通过不报错,但是运行时Runtime阶段会抛出NullPoint ...
- Java中异常的分类
2019独角兽企业重金招聘Python工程师标准>>> 下面介绍几种常见的异常类型,便于在出错时对程序进行查错: (1)Exception 各种异常的根类 如果你不知道将发生的 ...
- Android开发中遇到的bug
1.将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法 在build.gradle里添加以下两句: aaptOptions.cruncherEnabled = fa ...
- java常见异常总结---自己工作中经常遇到的一些异常
自己在工作当中经常遇到的一些异常,总结给大家一起分享分享,欢迎补充,楼主会不断更新: 1.nullpointexception 空指针异常 2.illegalargumentexception 非法参 ...
- java scanner类int_Java之 Scanner类
1. Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,并通过 Scanner 类的 next() 与 nextLin ...
- classcastexception异常_内部类、异常以及 LeetCode 每日一题
1 内部类 内部类的作用: 内部类提供了更好的封装,可以把内部类隐藏于外部类之内,不允许同一个包中的其他类访问该类.(例如给"牛"这个类组合一个"牛腿",则可以 ...
- 捕捉所有异常_详解Java中异常的分类
下面介绍几种常见的异常类型,便于在出错时对程序进行查错: (1)Exception 各种异常的根类 如果你不知道将发生的异常集体属于哪,而可以肯定种这个地方会出现异常时,可以把异常类型定义为Excep ...
- java比较equlse_java基础知识要点
一.抽象: 二.封装:有了封装才有数据类型!个体更多的设置为封装体,这样更加安全.该公开的公开(方法),该隐藏的隐藏(属性),配置一个访问窗口 方法的调用(按值传递和按引用传递) 1.在栈中分配空间( ...
最新文章
- android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
- Websphere设备、企业部署应用程序 【应用】
- 掌握Python字典的12个例子
- jfinal整合quartz实现定时任务的两种方式
- python中import os_python import osgeo.gdal出错
- 业务赋能利器之外卖特征档案
- Java预科篇1-学前
- 云服务器,Linux上安装xampp来搭建node,api
- 设计师中国风作品必备汉字毛笔字偏旁部首大集合
- spark+phoenix
- 模式识别与机器学习第四章特征选择和提取
- ROS智能车定位导航仿真(原赛道自主导航,构建地图再导航)
- java webp图片转换为png或jpg
- 2007年个人回忆与总结
- 【租房合同】2017北京市房屋租赁合同(自行成交版).doc
- springboot项目打包报错
- 如何制作一个在线订酒店的小程序
- 大数据技术与应用实训心得_大数据心得体会
- 【工作感悟】老程序员总结的四条工作经验教训
- 【RT-Thread 开源作品秀】小型蚯蚓养殖监控系统
热门文章
- 基于vuex动态添加接口(含axios的封装)
- 漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞
- 三次元手绘作品展示:利威尔·阿克曼(兵长)
- Android dialog 弹窗背景图片默认为白色问题
- [机器学习算法]随机森林原理
- LCS最详细题解!!!!!
- ASP.NET MVC使用Authorize过滤器验证用户登录
- 小程序授权申请 wx.authorize的问题
- 机器人炒菜感想_机器人也食人间烟火,炒菜炒的不亦乐乎!
- Git在项目中40个常用命令详解