equals()和==null的用法区别

str == null          //判断引用是否指向任何对象
str.length == 0  //判断引用指向的对象是否为空字符串,即字符串长度为0
“”.equals(str)    //判断引用指向的对象是否为空字符串和str.length()==0效果是一样的。

在C/C++里, str其实是一个指针, null表示空指针, str==null表示该字符串指针没有指向任何一个字符串.  ""表示是空字符串, 空字符串也是字符串, 也在内存中占有位置, str.equals("")表示这个str指向了一个字符串, 且该字符串的内容是一个空字符串.

可以通过打印str的内存地址就可以看出null和""是不同的;

java也是类似的.

而且在C/C++中, 如果不先判断str不为空就直接使用str的方法, 是会出错的, 因为str还没有被初始化为String类的实例;

但str是null时,str.equals(“”)和str.length==0将抛java.lang.NullPointerException异常。

因为equals是对象的方法

所以最好使用    “”.equals(str)形式
“”.equals(null)   //false

str==null || str.length()==0 两个一起写可以避免str=null时,抛异常。

但最好还是写成:

str != null && !”“.equals(str) 
                       str ==null  ||   “”.equals(str)

原文地址:https://www.cnblogs.com/zhuzihan/p/8993659.html

时间: 2024-08-01 02:05:37

equals()和==null的用法区别的相关文章

models中字段参数blank和null的用法区别

blank当blank=True时,说明此处的数据可以不填,默认情况下为False,也就意味着默认情况下,所输入的数据不得空,blank是和页面表单有关,在页面需要输入参数的时候,如果在models里面定义了blank=True时,那么这个参数是可以不填写的,如果是默认的话,如果没有填写,则会提示错误. null当null=True时,也就是说如果没有填写数据,此处用NULL来储存空值,默认的是null=False. 总结blank主要是用在CharField, TextField,这两个字符型

==和equals的区别 null和""的区别

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equ

typeof()和instanceof()用法区别

typeof()和instanceof()用法区别: 两者都是用来判断数据类型的 typeof()是能用来判断是不是属于五大类型Boolean,Number,String,Null,Undefined的,是比较宏观的判断: instanceof()判断数据类型相对typeof()来说更深入,能判断更具体的,比如Array,object,Boolean,Number,Strin等.

order_by_、group_by_、having的用法区别

写于 2012-11-20 22:14  doc文档上. Having 这个是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后就要用到HAVING 的用法了,就是进行判断了,例如说判断聚合函数的值是否大于某一个值等等. select customer_name,sum(balance) from balance group by customer_name having balance>200; yc_rpt_getnew

mysql SELECT FOUND_ROWS()与COUNT(*)用法区别

在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍SELECT FOUND_ROWS()与COUNT(*)用法区别 SELECT语句中经常可能用LIMIT限制返回行数.有时候可能想要知道如果没有LIMIT会返回多少行,但又不想再执行一次相同语句.那么,在SELECT查询中包含SQL_CALC_FOUND_ROWS选项,然后执行FOUND_ROWS()就可以了:  代码如下 复制代码 mysql> SELECT SQL_CA

php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)用法区别

在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍SELECT FOUND_ROWS()与COUNT(*)用法区别 SELECT语句中经常可能用LIMIT限制返回行数.有时候可能想要知道如果没有LIMIT会返回多少行,但又不想再执行一次相同语句.那么,在SELECT查询中包含SQL_CALC_FOUND_ROWS选项,然后执行FOUND_ROWS()就可以了:  代码如下 复制代码 mysql> SELECT SQL_CA

null和""的区别

从字面上看,null表示空(用str==null判定),""表示空字符串(用str.equals("")或者str.length()==0判定) 问题一: null和""的区别 String s=null; string.trim()就会抛出为nullPointerException   String s="";   string.trim()就不会抛,为什么? 答: null代表声明了一个空对象,根本就不是一个字符串.  

Null 与 “” 的区别

说明:很多人有时候对于 null 和 "" 不是很清楚,结合其他人的文章,今天做下解释. String str1 = null; str引用为空 String str2 = ""; str引用为空串 说白了就是null没有分配内存空间,而""分配了内存空间,因此str1还不是一个实例化的对象,而str2已经实例化. 注意因为null不是对象,""是对象. 所以比较的时候必须是 if(str1==null) {....} 和 i

js判断undefined类型,undefined,null,NaN的区别

js判断undefined类型今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined   所以自作聪明判断       var reValue=window.showModalDialog("","","");      if (reValue== undefined){     alert("undefined");     }   发现判断不出来