前一段时间我阅读别人的代码,发现有的时候用isEmpty,有的时候用null,有的时候用""。我很困惑三者之间的区别,于是我就自己写了一个程序来验证一下

 public class Test {
public static void main(String[] args) {
//分配内存空间,值为空
String a = new String();
//分配内存空间,值为空字符串
String b = "";
//未分配内存空间
String c = null; if (a != null) {
System.out.println("a值存在");
}
if (b != null) {
System.out.println("b值存在");
}
if (c == null) {
System.out.println("c值不存在");
}
if (a == "") {
System.out.println("a值存在,为空字符串");
}
if (b == "") {
System.out.println("b值存在,为空字符串");
}
//dead code
if (c == "") {
System.out.println("c值存在,为空字符串");
}
if (a.isEmpty()) {
System.out.println("a值存在,为空字符串或者为空");
}
if (b.isEmpty()) {
System.out.println("b值存在,为空字符串或者为空");
}
// Null pointer access: The variable c can only be null at this location
// if (c.isEmpty()) {
// System.out.println("String c=null");
// }
} }

运行的结果如下

 a值存在
b值存在
c值不存在
b值存在,为空字符串
a值存在,为空字符串或者为空
b值存在,为空字符串或者为空

得出的结论:

isEmpty()

1.如果不分配内存空间,不能用isEmpty(),否则报空指针异常

2.isEmpty()不能分辨出值是空还是空字符串

null

1.null只能分辨出值是否不分配内存空间

“”

1.不管值是否分配内存空间都不会报错

isEmpty与null、""的区别的更多相关文章

  1. Map的isEmpty()与==null的区别

    isEmpty()方法判断Map是否有内容(即new分配空间后是否put键值对),若没有内容则true,否则false == null是判断map是否为null(即是否new分配空间,和其中的键值对没 ...

  2. List的isEmpty与==null的区别

    集合的判空一般判定方法 ArrayList<Person> list = null; System.out.println(null == list);//return true Syst ...

  3. Java空字符串与null的区别和判断字符串是否为空的方法

    Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...

  4. java判断一个字符串是否为空,isEmpty和isBlank的区别

    转载于:https://blog.csdn.net/liusa825983081/article/details/78246792 实际应用中,经常会用到判断字符串是否为空的逻辑 比较简单的就是用 S ...

  5. Java 空字符串和 字符串为null的区别

    之前一直没有搞清楚 字符串为空和字符串为null的区别,今天写代码一直出现NullPointerException异常,我一直没有搞清楚,后来发现我是这样写的 String s = null; s = ...

  6. JavaScript中undefined与null的区别

    通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...

  7. string.empty和null的区别

    关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后 ...

  8. 类和对象 nil/Nil/NULL的区别

    iOS-----类和对象,nil/Nil/NULL的区别   iOS中类和对象,nil/Nil/NULL的区别 类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性 ...

  9. iOS-----类和对象,nil/Nil/NULL的区别

    iOS中类和对象,nil/Nil/NULL的区别 类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. ...

  10. iOS-nil,Nil,NULL的区别

    一.简述 1.nil用来给对象赋值(Objective-C中的任何对象都属于id类型) 2.NULL则给任何指针赋值,NULL和nil不能互换 3.nil用于类指针赋值(在Objective-C中类是 ...

随机推荐

  1. CentOS6下Haproxy的安装配置

    Haproxy 是一个开源的负载均衡和反向代理软件,其提供了高可用的网络服务.其一般是应用于web服务,但同时也能为SMTP和终端服务等提供可靠的支持. 1.下载安装haproxy wget ftp: ...

  2. SAP ECC CO 配置

    SAP ECC 6.0 Configuration Document Controlling (CO) Table of Content TOC \o \h \z 1. Enterprise Stru ...

  3. Volley 实现原理解析(转)

    Volley 实现原理解析 转自:http://blog.csdn.net/fengqiaoyebo2008/article/details/42963915 1. 功能介绍 1.1. Volley ...

  4. Schema Workbench 开发mdx和模式文件

    一.前言 安装了saiku之后,每次修改schema文件,非常耗时,每次都要经历若干步骤:修改xml.上传.重启才能生效,并且非常不利于学习和理解MDX和模式文件,踌躇之际,发现了这个工具,十分小巧方 ...

  5. Win8.1 Metro应用无法联网,提示“无法加载此页面”解决方法!(看红色字体部分)

    Windows 8 Metro Apps使用Proxifier的方法 By Shinichi_Wtn2012-07-05 20:28 在校园里,经常要使用代理上网的方式,Proxifier可以让不支持 ...

  6. ios 实现推送消息

      iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的 ...

  7. 基于安卓高仿how-old.net实现人脸识别估算年龄与性别

    前几段微软推出的大数据人脸识别年龄应用how-old.net在微博火了一把,它可以通过照片快速获得照片上人物的年龄,系统会对瞳孔.眼角.鼻子等27个“面部地标点"展开分析,进而得出你的“颜龄 ...

  8. 【百度地图学习-一】初始化以及TextOverlay

    一.百度地图的初始化 主要用到三个类: 1.BMapManager:使用地图sdk前需先初始化BMapManager.BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创 ...

  9. oracle 查询当前库中所有表以及某表字段信息

    select utc.COLUMN_ID,utc.TABLE_NAME,utc.COLUMN_NAME,utc.DATA_TYPE||utc.DATA_LENGTH,utc.DATA_DEFAULT, ...

  10. 解决方法:64位系统-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    win7或win8 64位下调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/ ...