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 方法去判断消息里的值是否设置, ...
随机推荐
- UML——构件图
宏观导图: 细节探究: 一.What 构件:是一个应用很广的名词,在建筑工程.机械工程.软件工程中等都有该概念.其实,说道底表达的都是一个意思.就像是标准化生产出来的零部件一样,具有可替换性.同质性, ...
- 在 .NET Core Logging中使用 Trace和TraceSource
本文介绍了在.NET Core中如何在组件设计中使用Trace和TraceSource. 在以下方面会提供一些帮助: 1.你已经为.NET Framework和.NET Core / .NET Sta ...
- WPF 之 依赖属性与附加属性(五)
一.CLR 属性 程序的本质是"数据+算法",或者说用算法来处理数据以期得到输出结果.在程序中,数据表现为各种各样的变量,算法则表现为各种各样的函数(操作符是函数的简记法). ...
- 2018 ccpc吉林 The Tower
传送门:HDU - 6559 题意 在一个三维空间,给定一个点和他的三维速度,给定一个圆锥,问这个点最早什么时候能撞上圆锥. 题解 本来一直想着怎么求圆锥的方程,然后....队友:这不是二分吗!然后问 ...
- AtCoder Beginner Contest 176
比赛链接:https://atcoder.jp/contests/abc176 A - Takoyaki #include <bits/stdc++.h> using namespace ...
- priority_queue()大根堆和小根堆(二叉堆)
#include<iostream> #include <queue> using namespace std; int main() { //对于基础类型 默认是大顶堆 pr ...
- 【uva 10048】Audiophobia(图论--Floyd算法)
题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...
- 踏上Revit二次开发之路 0 序
0 序 近来,由于工作上的需要,开始自学Revit二次开发. Revit由欧特克公司专为BIM构建,是建筑业体系中使用最广泛的软件之一.借助欧特克公司在我国市场占有率方面的绝对优势,甚至给不少人带来& ...
- 要想用活Redis,Lua脚本是绕不过去的坎
前言 Redis 当中提供了许多重要的高级特性,比如发布与订阅,Lua 脚本等.Redis 当中也提供了自增的原子命令,但是假如我们需要同时执行好几个命令的同时又想让这些命令保持原子性,该怎么办呢?这 ...
- 国产网络损伤仪 SandStorm -- 什么是链路规则?
"链路规则"是网络损伤仪SandStorm(又名弱网测试仪)里面非常重要的功能,主要用于不同仿真链路之间的选择. 如下图的所示: ...