一、概述

  java中判等似乎很简单,==用来判断对象引用(内存地址)是否相同,equals用来判断值是否相同。你可以试用String对象轻松区分这一点。

  那么在null判等(也就是判空操作)时呢?

  可以通过如下代码明白两个判等的比较:

        String name = null;
if(null==name){
System.out.println("null==name");//通过
}
if(name==null){
System.out.println(name);
System.out.println("name==null");//通过
} String list = null;
if(!"demo".equals(list)){
System.out.println("demo.equals(list)");//通过
}
//编译器会在此处提示一个警告:Null pointer access: The variable list can only be null at this location
if(!list.equals("demo")){
System.out.println("list.equals(demo)");//不通过
}

  1.通过红色字体代码证明了String类型在==判等时

   谁放前,谁放后是一样的。而null==xxxx这样的写法,我觉得只是一个规范习惯的方式,保证你不会少写=,因为你写null=xxx编译器肯定会给你报错。

   那么,除了String类型的对象,其他类型的对象呢?是否在试用==时也是谁放前谁放后没有区别呢?

  NullEquals e = null;
if(e==null){
  System.out.println("e==null");//通过
}
if(null==e){
  System.out.println("null==e");//通过
}

   结果也一样,证明了null判等这件事上,哪中对象是无所谓的,谁放前放后都可以。

  2.通过蓝色字体的代码证明了使用equals方法时,必须将非空的对象放在前面,null的对象一定不能放在前面。

    所以这里要养成"".equals()方法来判空的操作

二、注意

  这两个判等操作墨守成规的,你实现某个类,重写它的equals方法最好也是用来判断他们的值是否相等,否则其他程序员在使用时容易误会。

总结:判空时,养成null在前是个好习惯

   判等时,为了避免被判断对象可能为空,所以把肯定不为空的对象放到前面是个好习惯

注:以上代码都经过测试

java中判空的更多相关文章

  1. StringUtils中 isNotEmpty 和isNotBlank的区别【java字符串判空】

    isNotEmpty(str)等价于 str != null && str.length > 0 isNotBlank(str) 等价于 str != null &&am ...

  2. JAVA中String空对象的字符串拼接

    今天使用JSONObject中get一个不存在的对线,最后拼接成sql语句插入数据库时,最后数据库中的值为字符串'null',而不是空对象. 追踪许久才发现自己的java白学了. java strin ...

  3. java中判断空字符串和null的判断方法

    简单总结几个方法: 1.直观的: if(s == null ||"".equals(s)); //先判断是否对象,再判断是否是空字符串 2.比较字符串长度, 效率高, 比较绕: i ...

  4. Java 中各种空(""、\u0000、null)的区别?

  5. Java中的字符串

    Java语言中,把字符串作为对象来处理,类String就可以用来表示字符串(类名首字母都是大写的). 1.字符串常量 字符串常量是用双引号括住的一串字符. 例如:"Hello World&q ...

  6. 避免Java中NullPointerException的Java技巧和最佳实践

    Java中的NullPointerException是我们最经常遇到的异常了,那我们到底应该如何在编写代码是防患于未然呢.下面我们就从几个方面来入手,解决这个棘手的​问题吧.​ 值得庆幸的是,通过应用 ...

  7. 在Java中如何优雅地判空

    判空灾难 ​ 作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException. 不过NullPointerException对于很多猿们来 ...

  8. java中对对象进行判空的操作--简洁编码

    java中对对象进行判空的操作 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.ut ...

  9. java / android int类型如何判空?

    /** TextUtils.isEmpty() 方法的实现 * Returns true if the string is null or 0-length. * @param str the str ...

随机推荐

  1. php中json_decode返回数组或对象的实例

    1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...

  2. 用NOPI将图片二进制流导出到Excel

    这儿采取的是将图片的二进制流导出到Excel,直接上代码: /// <summary> /// DataTable导出到Excel的MemoryStream /// </summar ...

  3. UI4_UIWebView

    // // ViewController.m // UI4_UIWebView // // Created by zhangxueming on 15/7/7. // Copyright (c) 20 ...

  4. H5笔记——locaStorage和sessionStorage本地存储的一些坑

    当使用window.localStorage或者window.sessionStorage 存储json数据时需要将json数据用JSON.stringify(data)转换成json字符串再存储在本 ...

  5. c++学习——类成员的访问权限

    成员的访问权限 Public: 任何人,尤其是那些要使用这个类库的客户程序员,都能访问那个紧跟在public 后面声明的成员. 默认的package: 在同一个目录里面的文件,并且都没有明确指明它是属 ...

  6. builder-设计模式

    package com.wp.java.builder; import org.junit.Test; public class DoDoContactDemo { @Test public void ...

  7. DEDECMS中,文章页直接输出字段名

    文章页中,可直接输出字段名

  8. 【原】WinForm中的DataGridView加入Combbox或者DropDownButton后,操作变慢

    DataGridView里加入了DropDownButto列,加载数据后点击这一列,反应很慢;要点击三到四次才会展示下拉列表; 原因是DataGridView的EditMode设置问题; 将DataG ...

  9. C++ string的常用功能

    头文件为#include<string> string str,str1; char s[]; str.length和str.size()是一样的功能都是返回当前字符串的大小: str.e ...

  10. 解析php时间戳与日期的转换

    php中时间戳与日期的转换. 实现功能:获取某个日期的时间戳,或获取某个时间的PHP时间戳. strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date( ...