String判断是否为空的方式

2024-06-22 16:18

本文主要是介绍String判断是否为空的方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、判断一个字符串str不为空的方法有:

  1、str == null;

  2、"".equals(str);

  3、str.length <= 0;

  4、str.isEmpty();

  注意:length是属性,一般集合类对象拥有的属性,取得集合的大小。

  例如:数组。length就是取得数组的长度。

  length()是方法,一般字符串类对象有该方法,也是取得字符串长度。

  例如:字符串。length();

  说明:

  1、null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。

  2、""表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。

  3.、null不是对象,""是对象,所以null没有分配空间,""分配了空间,例如:

  String str1 = null; str引用为空

  String str2 = ""; str引用一个空串

  str1还不是一个实例化的对象,而str2已经实例化。

  对象用equals比较,null用等号比较。

  如果str1=null;下面的写法错误:

  if(str1.equals("")||str1==null){ }

  正确的写法是 if(str1==null||str1.equals("")){ //所以在判断字符串是否为空时,先判断是不是对象,如果是,再判断是不是空字符串 }

  4. 所以,判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。

  String str = xxx;

  if(str != null && str.length() != 0) { }

  二、以下是java 判断字符串是否为空的四种方法:

  四种方法执行的效率分别如下:

  JudgeString1耗时:625ms

  JudgeString2耗时:125ms

  JudgeString3耗时:234ms

  JudgeString4耗时:109ms

复制代码
 1  /**
 2 
 3   * 判断字符串是否为空的效率问题
 4 
 5   */
 6 
 7 public class JudgeStringIsEmptyOrNot {
 8 
 9   public static void main(String[] args) {
10 
11       JudgeString1("w_basketboy", 10000);
12 
13       JudgeString2("w_basketboy", 10000);
14 
15       JudgeString3("w_basketboy", 10000);
16 
17       JudgeString4("w_basketboy", 10000);
18 
19   }
20 
21   /**
22 
23   * 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低;
24 
25   * 方法二: 比较字符串长度, 效率高, 是最好的一个方法;
26 
27   * 方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二;
28 
29   * 方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多;
30 
31   */
32 
33 public static void JudgeString1(String str, long num) {
34   long startTiem = System.currentTimeMillis();
35   forint i = 0; i < num; i++) {
36          forint j = 0; j < num; j++) {
37           if (str == null || "".equals(str)) {
38           }
39       }
40   }
41     long endTime = System.currentTimeMillis();
42   System.out.println("function1耗时:" + (endTime - startTiem) + "ms");
43 
44 }
45 
46 public static void JudgeString2(String str, long num) {
47   long startTiem = System.currentTimeMillis();
48   forint i = 0; i < num; i++) {
49       forint j = 0; j < num; j++) {
50           if (str == null || str.length() <= 0) {
51           }
52       }
53   }
54   long endTime = System.currentTimeMillis();
55   System.out.println("function4耗时:" + (endTime - startTiem) + "ms");
56 }
57 
58 public static void JudgeString3(String str, long num) {
59   long startTiem = System.currentTimeMillis();
60   forint i = 0; i < num; i++) {
61       forint j = 0; j < num; j++) {
62           if (str == null || str.isEmpty()) {
63 
64           }
65       }
66   }
67   long endTime = System.currentTimeMillis();
68   System.out.println("function3耗时:" + (endTime - startTiem) + "ms");
69 
70   }
71 
72 public static void JudgeString4(String str, long num) {
73   long startTiem = System.currentTimeMillis();
74   forint i = 0; i < num; i++) {
75       forint j = 0; j < num; j++) {
76           if (str == null || str == "") {
77           }
78       }
79   }
80   long endTime = System.currentTimeMillis();
81   System.out.println("function4耗时:" + (endTime - startTiem) + "ms");
82   }                        

这篇关于String判断是否为空的方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084789

相关文章

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

poj 3259 uva 558 Wormholes(bellman最短路负权回路判断)

poj 3259: 题意:John的农场里n块地,m条路连接两块地,w个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。 任务是求你会不会在从某块地出发后又回来,看到了离开之前的自己。 判断树中是否存在负权回路就ok了。 bellman代码: #include<stdio.h>const int MaxN = 501;//农场数const int

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal