先拿一个例子来开头吧

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空指针异常相关推荐

  1. NullPointException空指针异常相关及预防办法

    空指针异常相关及预防办法 本文结合网上搜索和实践解决的办法整理 1.空指针异常 (实际上指的是java的引用) 简单理解:空指针就是空引用:引用本身为空,却用他调用了方法和属性 null是所有引用类型 ...

  2. 空指针异常 NullPointException

    空指针异常 NullPointException 空指针异常,是运行时异常,及时编写代码时出现了空指针异常,编译器(javac) 会编译通过不报错,但是运行时Runtime阶段会抛出NullPoint ...

  3. Java中异常的分类

    2019独角兽企业重金招聘Python工程师标准>>> 下面介绍几种常见的异常类型,便于在出错时对程序进行查错: (1)Exception    各种异常的根类 如果你不知道将发生的 ...

  4. Android开发中遇到的bug

    1.将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法 在build.gradle里添加以下两句: aaptOptions.cruncherEnabled = fa ...

  5. java常见异常总结---自己工作中经常遇到的一些异常

    自己在工作当中经常遇到的一些异常,总结给大家一起分享分享,欢迎补充,楼主会不断更新: 1.nullpointexception 空指针异常 2.illegalargumentexception 非法参 ...

  6. java scanner类int_Java之 Scanner类

    1. Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,并通过 Scanner 类的 next() 与 nextLin ...

  7. classcastexception异常_内部类、异常以及 LeetCode 每日一题

    1 内部类 内部类的作用: 内部类提供了更好的封装,可以把内部类隐藏于外部类之内,不允许同一个包中的其他类访问该类.(例如给"牛"这个类组合一个"牛腿",则可以 ...

  8. 捕捉所有异常_详解Java中异常的分类

    下面介绍几种常见的异常类型,便于在出错时对程序进行查错: (1)Exception 各种异常的根类 如果你不知道将发生的异常集体属于哪,而可以肯定种这个地方会出现异常时,可以把异常类型定义为Excep ...

  9. java比较equlse_java基础知识要点

    一.抽象: 二.封装:有了封装才有数据类型!个体更多的设置为封装体,这样更加安全.该公开的公开(方法),该隐藏的隐藏(属性),配置一个访问窗口 方法的调用(按值传递和按引用传递) 1.在栈中分配空间( ...

最新文章

  1. android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
  2. Websphere设备、企业部署应用程序 【应用】
  3. 掌握Python字典的12个例子
  4. jfinal整合quartz实现定时任务的两种方式
  5. python中import os_python import osgeo.gdal出错
  6. 业务赋能利器之外卖特征档案
  7. Java预科篇1-学前
  8. 云服务器,Linux上安装xampp来搭建node,api
  9. 设计师中国风作品必备汉字毛笔字偏旁部首大集合
  10. spark+phoenix
  11. 模式识别与机器学习第四章特征选择和提取
  12. ROS智能车定位导航仿真(原赛道自主导航,构建地图再导航)
  13. java webp图片转换为png或jpg
  14. 2007年个人回忆与总结
  15. 【租房合同】2017北京市房屋租赁合同(自行成交版).doc
  16. springboot项目打包报错
  17. 如何制作一个在线订酒店的小程序
  18. 大数据技术与应用实训心得_大数据心得体会
  19. 【工作感悟】老程序员总结的四条工作经验教训
  20. 【RT-Thread 开源作品秀】小型蚯蚓养殖监控系统

热门文章

  1. 基于vuex动态添加接口(含axios的封装)
  2. 漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞
  3. 三次元手绘作品展示:利威尔·阿克曼(兵长)
  4. Android dialog 弹窗背景图片默认为白色问题
  5. [机器学习算法]随机森林原理
  6. LCS最详细题解!!!!!
  7. ASP.NET MVC使用Authorize过滤器验证用户登录
  8. 小程序授权申请 wx.authorize的问题
  9. 机器人炒菜感想_机器人也食人间烟火,炒菜炒的不亦乐乎!
  10. Git在项目中40个常用命令详解