List和String的非空判断
1、如果想判断list是否为空,可以这么判断:
if(null == list || list.size() ==0 ){
//为空的情况
}else{
//不为空的情况
} 2、list.isEmpty() 和 list.size()==0 有啥区别呢
答案:没有区别 。
isEmpty()判断有没有元素,而size()返回有几个元素;
如果判断一个集合有无元素 建议用isEmpty()方法.比较符合逻辑用法。 3、list!=null 跟 ! list.isEmpty()有什么区别?
比如:书店和数
list!=null 首先判断【书店】是否存在?
!list.isEmpty() 不判断【书店】是否存在,而是判断【书店】是否有书? 所以,一般的list非空判断是:
if(list!=null && !list.isEmpty()){
//不为空的情况
}else{
//为空的情况
}
————————————————
版权声明:本文为CSDN博主「maocxu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fk_d_st/article/details/79084850
String str = " ";
//第一种错误情况
if (!"".equals(str) || str != null) { } //第二种错误情况
if (str != null || !"".equals(str)) { } //第三种错误情况
if (str != null || str.length() != 0) { } 很多人都出现了上面3种情况的一种
第一种错误是最低级的,如果str = null,那么程序将会报空指针 第二种和第三种情况虽然不会报错,但是无法做到准确校验空字符串,如果字符串本身就是一串空格,将不会被拦截到 比较成熟的写法如下: if (str != null || !"".equals(str.trim())) {
//则字符串不为空或空格
}StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是
null
安全的(即如果输入参数 String 为
null
则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为
null
则返回也是
null
等,具体可以查看源代码)。
除了构造器,StringUtils 中一共有
130
多个方法,并且都是
static
的,所以我们可以这样调用 StringUtils.xxx()
下面分别对一些常用方法做简要介绍:
1
.
public
static
boolean
isEmpty(String str)
判断某字符串是否为空,为空的标准是 str==
null
或 str.length()==
0
下面是 StringUtils 判断是否为空的示例:
StringUtils.isEmpty(
null
) =
true
StringUtils.isEmpty(
""
) =
true
StringUtils.isEmpty(
" "
) =
false
//注意在 StringUtils 中空格作非空处理
StringUtils.isEmpty(
" "
) =
false
StringUtils.isEmpty(
"bob"
) =
false
StringUtils.isEmpty(
" bob "
) =
false
2
.
public
static
boolean
isNotEmpty(String str)
判断某字符串是否非空,等于 !isEmpty(String str)
下面是示例:
StringUtils.isNotEmpty(
null
) =
false
StringUtils.isNotEmpty(
""
) =
false
StringUtils.isNotEmpty(
" "
) =
true
StringUtils.isNotEmpty(
" "
) =
true
StringUtils.isNotEmpty(
"bob"
) =
true
StringUtils.isNotEmpty(
" bob "
) =
true
3
.
public
static
boolean
isBlank(String str)
判断某字符串是否为空或长度为
0
或由空白符(whitespace) 构成
下面是示例:
StringUtils.isBlank(
null
) =
true
StringUtils.isBlank(
""
) =
true
StringUtils.isBlank(
" "
) =
true
StringUtils.isBlank(
" "
) =
true
StringUtils.isBlank(
"\t \n \f \r"
) =
true
//对于制表符、换行符、换页符和回车符
StringUtils.isBlank()
//均识为空白符
StringUtils.isBlank(
"\b"
) =
false
//"\b"为单词边界符
StringUtils.isBlank(
"bob"
) =
false
StringUtils.isBlank(
" bob "
) =
false
4
.
public
static
boolean
isNotBlank(String str)
判断某字符串是否不为空且长度不为
0
且不由空白符(whitespace) 构成,等于 !isBlank(String str)
下面是示例:
StringUtils.isNotBlank(
null
) =
false
StringUtils.isNotBlank(
""
) =
false
StringUtils.isNotBlank(
" "
) =
false
StringUtils.isNotBlank(
" "
) =
false
StringUtils.isNotBlank(
"\t \n \f \r"
) =
false
StringUtils.isNotBlank(
"\b"
) =
true
StringUtils.isNotBlank(
"bob"
) =
true
StringUtils.isNotBlank(
" bob "
) =
true
5
.
public
static
String trim(String str)
去掉字符串两端的控制符(control characters,
char
<=
32
) , 如果输入为
null
则返回
null
下面是示例:
StringUtils.trim(
null
) =
null
StringUtils.trim(
""
) =
""
StringUtils.trim(
" "
) =
""
StringUtils.trim(
" \b \t \n \f \r "
) =
""
StringUtils.trim(
" \n\tss \b"
) =
"ss"
StringUtils.trim(
" d d dd "
) =
"d d dd"
StringUtils.trim(
"dd "
) =
"dd"
StringUtils.trim(
" dd "
) =
"dd"
6
.
public
static
String trimToNull(String str)
去掉字符串两端的控制符(control characters,
char
<=
32
) ,如果变为
null
或
""
,则返回
null
下面是示例:
StringUtils.trimToNull(
null
) =
null
StringUtils.trimToNull(
""
) =
null
StringUtils.trimToNull(
" "
) =
null
StringUtils.trimToNull(
" \b \t \n \f \r "
) =
null
StringUtils.trimToNull(
" \n\tss \b"
) =
"ss"
StringUtils.trimToNull(
" d d dd "
) =
"d d dd"
StringUtils.trimToNull(
"dd "
) =
"dd"
StringUtils.trimToNull(
" dd "
) =
"dd"
7
.
public
static
String trimToEmpty(String str)
去掉字符串两端的控制符(control characters,
char
<=
32
) ,如果变为
null
或
""
,则返回
""
下面是示例:
StringUtils.trimToEmpty(
null
) =
""
StringUtils.trimToEmpty(
""
) =
""
StringUtils.trimToEmpty(
" "
) =
""
StringUtils.trimToEmpty(
" \b \t \n \f \r "
) =
""
StringUtils.trimToEmpty(
" \n\tss \b"
) =
"ss"
StringUtils.trimToEmpty(
" d d dd "
) =
"d d dd"
StringUtils.trimToEmpty(
"dd "
) =
"dd"
StringUtils.trimToEmpty(
" dd "
) =
"dd"
8
.
public
static
String strip(String str)
去掉字符串两端的空白符(whitespace) ,如果输入为
null
则返回
null
下面是示例(注意和 trim() 的区别):
StringUtils.strip(
null
) =
null
StringUtils.strip(
""
) =
""
StringUtils.strip(
" "
) =
""
StringUtils.strip(
" \b \t \n \f \r "
) =
"\b"
StringUtils.strip(
" \n\tss \b"
) =
"ss \b"
StringUtils.strip(
" d d dd "
) =
"d d dd"
StringUtils.strip(
"dd "
) =
"dd"
StringUtils.strip(
" dd "
) =
"dd"
9
.
public
static
String stripToNull(String str)
去掉字符串两端的空白符(whitespace) ,如果变为
null
或
""
,则返回
null
下面是示例(注意和 trimToNull() 的区别):
StringUtils.stripToNull(
null
) =
null
StringUtils.stripToNull(
""
) =
null
StringUtils.stripToNull(
" "
) =
null
StringUtils.stripToNull(
" \b \t \n \f \r "
) =
"\b"
StringUtils.stripToNull(
" \n\tss \b"
) =
"ss \b"
StringUtils.stripToNull(
" d d dd "
) =
"d d dd"
StringUtils.stripToNull(
"dd "
) =
"dd"
StringUtils.stripToNull(
" dd "
) =
"dd"
10
.
public
static
String stripToEmpty(String str)
去掉字符串两端的空白符(whitespace) ,如果变为
null
或
""
,则返回
""
下面是示例(注意和 trimToEmpty() 的区别):
StringUtils.stripToNull(
null
) =
""
StringUtils.stripToNull(
""
) =
""
StringUtils.stripToNull(
" "
) =
""
StringUtils.stripToNull(
" \b \t \n \f \r "
) =
"\b"
StringUtils.stripToNull(
" \n\tss \b"
) =
"ss \b"
StringUtils.stripToNull(
" d d dd "
) =
"d d dd"
StringUtils.stripToNull(
"dd "
) =
"dd"
StringUtils.stripToNull(
" dd "
) =
"dd"
以下方法只介绍其功能,不再举例:
11
.
public
static
String strip(String str, String stripChars)
去掉 str 两端的在 stripChars 中的字符。
如果 str 为
null
或等于
""
,则返回它本身;
如果 stripChars 为
null
或
""
,则返回 strip(String str) 。
12
.
public
static
String stripStart(String str, String stripChars)
和
11
相似,去掉 str 前端的在 stripChars 中的字符。
13
.
public
static
String stripEnd(String str, String stripChars)
和
11
相似,去掉 str 末端的在 stripChars 中的字符。
14
.
public
static
String[] stripAll(String[] strs)
对字符串数组中的每个字符串进行 strip(String str) ,然后返回。
如果 strs 为
null
或 strs 长度为
0
,则返回 strs 本身
15
.
public
static
String[] stripAll(String[] strs, String stripChars)
对字符串数组中的每个字符串进行 strip(String str, String stripChars) ,然后返回。
如果 strs 为
null
或 strs 长度为
0
,则返回 strs 本身
16
.
public
static
boolean
equals(String str1, String str2)
比较两个字符串是否相等,如果两个均为空则也认为相等。
17
.
public
static
boolean
equalsIgnoreCase(String str1, String str2)
比较两个字符串是否相等,不区分大小写,如果两个均为空则也认为相等。
18
.
public
static
int
indexOf(String str,
char
searchChar)
返回字符 searchChar 在字符串 str 中第一次出现的位置。
如果 searchChar 没有在 str 中出现则返回-
1
,
如果 str 为
null
或
""
,则也返回-
1
19
.
public
static
int
indexOf(String str,
char
searchChar,
int
startPos)
返回字符 searchChar 从 startPos 开始在字符串 str 中第一次出现的位置。
如果从 startPos 开始 searchChar 没有在 str 中出现则返回-
1
,
如果 str 为
null
或
""
,则也返回-
1
20
.
public
static
int
indexOf(String str, String searchStr)
返回字符串 searchStr 在字符串 str 中第一次出现的位置。
如果 str 为
null
或 searchStr 为
null
则返回-
1
,
如果 searchStr 为
""
,且 str 为不为
null
,则返回
0
,
如果 searchStr 不在 str 中,则返回-
1
21
.
public
static
int
ordinalIndexOf(String str, String searchStr,
int
ordinal)
返回字符串 searchStr 在字符串 str 中第 ordinal 次出现的位置。
如果 str=
null
或 searchStr=
null
或 ordinal<=
0
则返回-
1
举例(*代表任意字符串):
StringUtils.ordinalIndexOf(
null
, *, *) = -
1
StringUtils.ordinalIndexOf(*,
null
, *) = -
1
StringUtils.ordinalIndexOf(
""
,
""
, *) =
0
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"a"
,
1
) =
0
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"a"
,
2
) =
1
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"b"
,
1
) =
2
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"b"
,
2
) =
5
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"ab"
,
1
) =
1
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"ab"
,
2
) =
4
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"bc"
,
1
) = -
1
StringUtils.ordinalIndexOf(
"aabaabaa"
,
""
,
1
) =
0
StringUtils.ordinalIndexOf(
"aabaabaa"
,
""
,
2
) =
0
22
.
public
static
int
indexOf(String str, String searchStr,
int
startPos)
返回字符串 searchStr 从 startPos 开始在字符串 str 中第一次出现的位置。
举例(*代表任意字符串):
StringUtils.indexOf(
null
, *, *) = -
1
StringUtils.indexOf(*,
null
, *) = -
1
StringUtils.indexOf(
""
,
""
,
0
) =
0
StringUtils.indexOf(
"aabaabaa"
,
"a"
,
0
) =
0
StringUtils.indexOf(
"aabaabaa"
,
"b"
,
0
) =
2
StringUtils.indexOf(
"aabaabaa"
,
"ab"
,
0
) =
1
StringUtils.indexOf(
"aabaabaa"
,
"b"
,
3
) =
5
StringUtils.indexOf(
"aabaabaa"
,
"b"
,
9
) = -
1
StringUtils.indexOf(
"aabaabaa"
,
"b"
, -
1
) =
2
StringUtils.indexOf(
"aabaabaa"
,
""
,
2
) =
2
StringUtils.indexOf(
"abc"
,
""
,
9
) =
3
23
.
public
static
int
lastIndexOf(String str,
char
searchChar)
基本原理同
18
24
.
public
static
int
lastIndexOf(String str,
char
searchChar,
int
startPos)
基本原理同
19
25
.
public
static
int
lastIndexOf(String str, String searchStr)
基本原理同
20
26
.
public
static
int
lastIndexOf(String str, String searchStr,
int
startPos)
List和String的非空判断的更多相关文章
- String的非空判断、Integer的非空判断、list的大小判断,对象的非空判断
1.String的非空判断. StringUtils.isNotEmpty(String str); 2.Integer的非空判断. null != Integer ; 3.list的大小判断. li ...
- String的非空判断:str!=""的为空判断出错问题
if(str!=null && str!= ""){}这是错误的判断 String str1 = ""; String str2 = new S ...
- java8 Optional优雅非空判断
java8 Optional优雅非空判断 import java.util.ArrayList;import java.util.List;import java.util.Optional; pub ...
- java基础之----非空判断
大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...
- 异常分类和异常的产生过程解析和Objects非空判断
java.lang.Throwable类是java语言中所有错误的异常的超类. Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeExeption:运行期异常,j ...
- C/C++ 指针的非空判断
一定要分得清楚C和C++的“空指针常量”不是一样的.C标准不保证NULL等于0,所以做指针非空判断时,应该用if(p != NULL):因为“上下文转换到bool值”的统一性,C++就应该用if(p) ...
- JAVAWEB servlet验证登录时进行完全的非空判断防止空值登录
如果不进行完全的非空判断,那么对 "" 这种类型的空值就会导致直接登录 所以需要用下面的字符串处理方法对其进行判断 这样就可以防止空值登录了 容易出现的混淆错误: 这里的空值登录容 ...
- python字符串非空判断
1. 字符串非空判断 2. list 非空判断
- proto3 不支持内建类型的非空判断即 hasXXX
proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...
随机推荐
- 详解MySQL事务原理
老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...
- springboot中扩展ModelAndView实现net mvc的ActionResult效果
最近在写spring boot项目,写起来感觉有点繁琐,为了简化spring boot中的Controller开发,对ModelAndView进行简单的扩展,实现net mvc中ActionResul ...
- Scala面向对象—类详解2(继承相关)
1.单例类 package com.zzzy class AAA {//单例 /*//java 思路--私有化构造方法,提供公开的getAAA 行不通 private def this(){ this ...
- 搜索Ex (洛谷提高历练地)
搜索Ex P1120 小木棍 题意:不超过65根长度小于50的小木棍(是由一批等长木棍砍断得到的),求原始木棍的最小可能长度 分析:优化+减枝爆搜 搜索状态要记录当前尝试的已经填好的长度,当前尝试填的 ...
- HDU6661 Acesrc and String Theory【SA】
Acesrc and String Theory Problem Description Acesrc is a famous string theorist at Nanjing Universit ...
- zoj3494 BCD Code(AC自动机+数位dp)
Binary-coded decimal (BCD) is an encoding for decimal numbers in which each digit is represented by ...
- hdu 6863 Isomorphic Strings 哈希+求公因子
题意: t组输入,每组数据输入一个整数n,代表字符串长度.下面再输入一个字符串 你需要判断这个字符串能不能分成大于1段,且这些段的最小表示法是一样的 例如:abccab,它可以分成2段,分别是abc和 ...
- HihoCoder - 1055 树形dp
vj链接:https://vjudge.net/contest/367007#problem/G 题意: 给你一棵树,树上有n个节点,每一个节点有一个权值,树根节点是1,你需要找到以1为起点连通的m个 ...
- Codeforces Round #479 (Div. 3) D. Divide by three, multiply by two (DFS)
题意:给你一个长度为\(n\)的序列\(a\).对它重新排列,使得\(a_{i+1}=a_{i}/3\)或\(a_{i+1}=2*a_{i}\).输出重新排列后的序列. 题解:经典DFS,遍历这个序列 ...
- Codeforces Round #653 (Div. 3) E1. Reading Books (easy version) (贪心,模拟)
题意:有\(n\)本书,A和B都至少要从喜欢的书里面读\(k\)本书,如果一本书两人都喜欢的话,那么他们就可以一起读来节省时间,问最少多长时间两人都能够读完\(k\)本书. 题解:我们可以分\(3\) ...