if(id!=null&&id!=””)

代码中经常这样写,空字符串跟null 都不用equals吗?

首先,你的

id!=""

这种写法是错误的,要写成

!id.equals("")

其次,要明白

==

equals

的含义

==

表示两个对象是同一个对象的引用,

==null

表示这个对象不是任何实例对象的引用,该对象为空。

equals

是String类中的方法,表示两个字符串的内容相同。

一直都这么写的,同问,为啥呢?

空字符串其实是要用equals的,否则会出错。null是可以使用!=

下面的代码,结果为false

String d = new String("");

System.out.println(""==d);

所以必须使用equals来判断空字符串,如

public static boolean isEmpty(String str) {undefined

return (str == null || "".equals(str));

}

或者使用length来判断并扩展到任何CharSequence,如

public static boolean isEmpty(final CharSequence cs) {undefined

return cs == null || cs.length() == 0;

}

1.

equals()

方法存在于

Object

类中,所有的包装类如

Integer

Long

等均对该函数进行了重新实现,假如你自己写了一个类在类中使用equals()方法,该方法的效果等同于”==”,会判断两个类的对象引用是否相同,而在包装类中

equals

会判断该对象的内容是否相等。

2.如果该判断写为

if(id.equals("")&&id!=null)

,会存在NullPoint的问题,假如id的值为null,你去掉调用

equals()

方法将会抛出异常。

3.

解释一下以上程序

str1 == str2

比较的是两者的引用是否相同,我们声明的字符串会被存放到字符串常量池中,

str1

时会将abc放入常量池,

str3

的时候会首先检查常量池中是否有字符串

abc

有的话就会直接引用。str2因为是直接new了一个新的对象,所以地址肯定与str1的不同。那为什么使用了

intern

方法之后就相同了呢

当调用

intern

方法时,如果池已经包含一个等于此 String 对象的字符串,则返回池中的字符串,此时并不会去生成新的字符串。因为还是引用了常量池中的字符串所以

str2.intern() == str1

返回值还是

true

以上,就是这些。(●’◡’●)

id==null

时,表示id这个引用没有指向任何对象,只是一个引用;Java中具体的对象才可以调用方法(这里就是

equals()

)。所以当

id==null

时调用

equals()

是会抛出

NullPointerException

这代码写错,没用equals比较空串,而且对于空字符串有很多,比如tab,回车之类的都没有check,有n多现成的函数可以用,比如apache commons里面的StingUtils.isBlank方法,Guava的Strings.isNullOrEmpty方法都可以判断null和空白字符串的情况。

还是需要明白 == 与 equals 的区别, “”与 null的区别 ,

== 是比较值是否相等 或 引用类型的地址是否相等

equals 是比较引用类型地址的值 即内容是否相等
————————————————
版权声明:本文为CSDN博主「淡然最好」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_28730353/article/details/114787650

JAVA中equals空_Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?...(亲测)相关推荐

  1. java和equals区别_JAVA中==与equals的区别

    equals如果没有被重写的话,和==的作用是一样的,都是判断两个对象引用是否指向同一个地址.一般重写了equals()方法就表示比较它们"实际意义上相等",比较的是内容,而不是引 ...

  2. java equals 区别_Java中equals和==的区别

    转自:http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据 ...

  3. java判断集合为空_Java中判断集合类为空的方法

    *****需要引入Spring的核心Jar包***** 工具类: org.springframework.util.CollectionUtils 方法: public static boolean ...

  4. hashset java 键值对_Java中的各个容器的性能对比

    java中个个容器的属性,性能,参数对比: Java容器的性能及属性的对比 List:Vector,ArrayList,LinkedList Vector:内部是数组数据结构,可以理解为加锁的Arra ...

  5. java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...

    项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方式Obje ...

  6. java 文件解析异常_java中异常的解析

    Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...

  7. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  8. java string对象名称_java中常见对象——String

    字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. A:字符串字面值"abc"也可以看成是一个字符串对象. B:字符串是常量,一旦被赋值,就不能被改变. 构造方法: ...

  9. java filter 不过滤器_Java中的Filter过滤器

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

最新文章

  1. 获取地区html代码,根据ip地址获取所在城市信息(省市县)代码
  2. oracle if=,oracle中if/else的三种实现方式详解
  3. 自适应IFRAME的大小
  4. Oracle通过邀请Weaver和Chin推动JavaFX向前发展
  5. 组装台式计算机需要哪些配件,组装电脑需要哪些配件 电脑装机教程图解
  6. Keras框架:VGG网络代码实现
  7. android 蓝牙sco stream_voice_call,android TTS输出总是要 A2DP_android_开发99编程知识库
  8. C#高级编程9 第18章 部署
  9. 服务器系统win12可以安装CAD,技术员教你解决win10系统安装CAD2012的教程介绍
  10. 大M单纯形算法的MATLAB实现
  11. 13个不错的jquery图片放大器效果
  12. php 模拟登陆微信,微信公众平台模拟登陆有关问题
  13. 微信小程序开发(第一篇 开发环境的准备+demo获取微信用户信息)
  14. numpy.percentile()函数
  15. 一文理解所有需求分析中的基本术语
  16. 【转】利用Windows API调用摄像头
  17. 1.网络安全之windows系统知识
  18. iOS 各版本系统占比
  19. 微信开发者工具中的版本管理功能搭配gitee使用
  20. 直线---科林明伦杯H题

热门文章

  1. ps怎么一下选中多个图层_PS图层基本操作,零基础小白必学
  2. 怎么用python扫描主机_python扫描主机开放的端口
  3. python 排列组合_python解决排列组合
  4. 30_visdom可视化、TensorboardX及其案例、安装visdom、使用visdom的案例
  5. MyBatis延迟加载及在spring中集成配置
  6. 怎样在Ubuntu 14.04中搭建gitolite git服务器
  7. android dumpsys 分析,Android开发调试性能分析工具:dumpsys
  8. eclips mysql jndi_Eclipse +Tomcat配置JNDI数据源
  9. linux推出mysql对话_以及如何配置它以与Linux平台上的MySQL数据库对话
  10. 训练FCN时遇到的问题总结