在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时),那为什么需要这样呢?null和空字符串('')有什么区别?

public static void main(String[] args) {

String aaa = null;

System.out.println(aaa.indexOf("a"));

System.out.println(aaa.length());

// 报空指针异常

//Exception in thread "main" java.lang.NullPointerException

String bbb = "";

System.err.println(bbb.indexOf("a")); //-1

System.err.println(bbb.length());//0

}

null和空字符串('')虽然都是没有任何内容,但是null却输出空指针异常,因为堆内存中根本就没有这个东西。

他们的区别可相当大,虽然都是没有信息,但是null代表堆内存中根本没有这个东西,这个对象不存在,怎么执行indexof操作?空字符串虽然没有信息,但是是有内存空间的,所以null与空字符串主要区别如下:

1.类型

null表示的是一个对象的值,而非一个字符串。例如声明一个对象的引用,String aaa = null ;

""表示的是一个长度为0的空字符串。例如声明一个字符串String bbb = "" ;

所以:null不指向任何对象,相当于没有任何值;而""代表一个长度为0的字符串。

2.内存分配

String aaa = null ;

表示声明一个字符串对象的引用,但指向为null(未指向任何的内存空间);

String bbb = "";

表示声明一个字符串类型的引用,其值为""空字符串(指向空字符串的内存空间);

在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap)。

所以:null不分配内存空间;而""会分配内存空间。

oracle数据库null和空字符串区别,null和空字符串('')的区别相关推荐

  1. MySQL数据库与Oracle数据库在存储中文字符以字节或字符存储的区别

    一.Oracle数据库存储中文字符 Oracle数据库可以以字节或者字符来存储字符串的,一般来说默认是存储字节,你可以查看数据库NLS_LENGTH_SEMANTICS的值. 可以看到Oracle数据 ...

  2. oracle数据库的blob和clob类型,是什么意思和区别

    BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图 ...

  3. ORACLE数据库数据类型

    Oracle的数据类型 Oracle的数据类型分为标量(Scalar)类型.复合(Composite)类型.引用(Reference)类型和LOB(Large Object)类型4种类型. 因为标量类 ...

  4. oracle数据库相关知识,Oracle数据库相关知识点复习

    一.Oracle数据库中常用的数据类型varchar2(长度)可变长字符串char(长度)定长number()表示整数或者浮点数number(8) number(8,2)clog字符的大对象blog二 ...

  5. Oracle数据库查询十个小技巧

    数据查询,是数据库操作中最主要的功能之一:有时候数据库查询性能的好坏,直接关系到数据库的运行效率,关系到数据库的选型.下面笔者不谈大道理,只是对其中对一些平时大家容易忽略的查询小技巧做一些总结.或许大 ...

  6. 优化Oracle数据库查询10个方法

    优化Oracle数据库查询10个方法: 网页制作中数据的查询是最主要的功能之一,其性能的好坏直接关系到网页的的运行效率.下面对Oracle数据库中大家不太注意的查询方法做一些总结. 第一个方法:利用连 ...

  7. oracle和mysql空字符串_Oracle数据库中对null值的排序及mull与空字符串的区别

    order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为 ...

  8. Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句

    Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  9. 空字符串、NULL、空格串的区别

    1.表示区别 string str1 = "";    //空字符串      str1.length() 等于 0 string str2 = null; //NULL stri ...

最新文章

  1. python数组写入txt文档_Python打开文件,将list、numpy数组内容写入txt文件中的方法...
  2. Delphi下使用OpenOffice+JodConverter+SWFtools进行文件转换
  3. sqrt()函数的详解和用法
  4. 深度理解python中的元类
  5. Anaconda2安装时出现问题
  6. mysqld: [Warning] World-writable config file ‘/etc/my.cnf‘ is ignored.问题解决
  7. 不,你根本不需要ML/AI,有SQL就够了
  8. Simulink模块之VCO(压控振荡器)
  9. 图解通信原理与案例分析-27: 卫星通信系统及关键技术
  10. 《word精彩实例互动教程》已经上线!
  11. jQuery 和React
  12. 但行好事 莫问前程 学习笔记
  13. 解决IE6、IE7、IE8、Firefox兼容的几种方案
  14. Linux命令操作——常用解压缩命令
  15. Python描述 LeetCode 334. 递增的三元子序列
  16. 程序员必知的40个算法
  17. 机器学习-隐语义模型
  18. 手工制作微型计算机,世界超强完美DIY 电子奇才五年全手工制作CPU
  19. 用js在微信网页版发送消息
  20. 中专计算机学数学吗,数学很差能学计算机吗-江西中专

热门文章

  1. 使用IDEA进行Android开发之装SDK
  2. Android Studio或IDEA不提示错误问题
  3. 【专题速递】多视图流媒体、明星陪看直播技术、金山云直播架构演进和云导播台...
  4. 龙芯新款处理器发布;Citrix 产品曝“惊天漏洞”,影响全球 8 万家公司; AMD发布年度5大里程碑 ……...
  5. c语言程序设计 实验五数组6,c语言实验五数组程序设计解答.doc
  6. axure 调整中继器列宽_Axure中继器:柱状图灵活变幻的诀窍
  7. 高斯传记资料(2012-12-01 20:54:55)
  8. 自定义FlowLayout控件实现自定义宽度并换行
  9. 让我用Python自制软件,看视频畅通无阻
  10. 设计一个简单的单布电梯运行控制系统