目录
一、List集合
1.1判空:
1.2判null:
1.3编码建议:
1.4异常示例:
二、String字符串:
2.1内存分配,值比较:
2.2编码建议:
2.3异常示例:
2.4 str.equals("abc")与"abc".equal(str)的区别
三、StringUntils.isEmpty 与 StringUntils.isBlank
在做项目的过程中,发现之前同事写的代码,正好和我现在做的功能有些类似。于是就借鉴了一下他的代码。不过在自测的过程中发现了问题,后来仔细一查,原来是List集合判空或判断为Null这里出现了问题。所以在此总结一下两者的区别。
一、List集合
为空:我有一个空的钱包(list),list.size()== 0。直接可以存钱(list.add(money))
为null:没有钱包,是null。如果想存钱,必须自己买个钱包(new ArrayList()),然后才可以存钱。如果没有钱包直接取钱,就会报(空指针异常)
1.1判空:
List<String> cinemaList = new ArrayList<>();
cinemaList.isEmpty() //判断有没有元素
cinemaList.size()==0 //返回有几个元素
如果判断一个集合是否为空,使用上面两者任何一个都可以。
1.2判null:
list等于null,可以理解为没有对list集合分配内存空间。
List<Strig> cinemaList = null;
cinemaList == null //判断集合是否为null
1.3编码建议:
为了避免空指针异常,建议在使用或赋值list集合之前,做一次空集合处理,进行内存空间分配,即: List list = new ArrayList();
判断时候: if(list != null && !list.siEmpty()) 或者 if(list != null && list.size()>0)
1.4异常示例:
if(sysUserList.get(i).getisdelete() == 1)
criteria.andCompanyCodeEqualTo(sysUserList.get(i).getCompanyCode());
这样的代码,如果数据库中正好返回null,就会报空指针异常java.lang.NullPointerException等的问题。这也是在做项目的过程中发现的问题,以后需要注意。进行一下null的判断。
二、String字符串:
"":空字符串,它的长度为0。
null:表示一个对象的值,而并不是一个字符串
2.1内存分配,值比较:
String str = null; 表示声明一个字符串对象的引用,但指向为null,没有指向任何的内存空间。
String str = ""; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间。
String str1 = new String() ;
String str2 = null ;
String str3 = "" ;
System.out.println(str1==str2); //内存地址的比较,返回false
System.out.println(str2==str3); //内存地址的比较,返回false
System.out.println(str1==str3); //内存地址的比较,返回false
System.out.println(str1.equals(str2)); //值的比较,返回false
System.out.println(str3.equals(str2)); //值的比较,返回false
System.out.println(str1.equals(str3)); //值的比较,返回 true
new String()创建一个字符串对象的默认值为""
2.2编码建议:
一般先进行判null,然后进行判空。(如果String类型为null,而进行 equals(String)或length()等操作会报java.lang.NullPointerException空指针异常的问题)
if( str == null || str.isEmpty()) 或者 if( str == null || str.equals(""))
2.3异常示例:
String str = null;
if(str.equals("") || str == null){
//会抛出异常 ——空指针异常
}
2.4 str.equals("abc")与"abc".equal(str)的区别
str.equals("abc"):这种常量写在后面是很常见的,但是前面要加上一个str==null的判断
"abc".equals(str):这种方法不需要加str==null的判断
三、StringUntils.isEmpty 与 StringUntils.isBlank
isEmpty判断某字段字符串是否为空,为空的标准是str==null或者str.length()==0
StringUntils.isEmpty(null)=true
StringUntils.isEmpty("")=true
StringUntils.isEmpty(" ")=false
StringUntils.isEmpty("bob")=false
StringUntils.isEmpty(" bob ")=false
isBlank判断某字符串是否为空或长度为0或由空白符构成
StringUtils.isBlank(null)=true
StringUtils.isBlank("")=true
StringUtils.isBlank(" ")=true
StringUtils.isBlank("\t \n \f \r")=true //对于制表符、换行符、换页符合回车符
StringUtils.isBlank()//都识别为空白符
StringUtils.isBlank("\b")=false
StringUtils.isBlank("bob")=false
StringUtils.isBlank(" bob ")=false