首页 > 其他分享 >《数据篇》String

《数据篇》String

时间:2024-01-16 09:22:35浏览次数:27  
标签:false String 数据 str null true StringUtils

生成UUID

下面是一个简单的生成代码:把生成的UUID简单的处理了一下

import java.util.UUID;

public class Uuid {
	public static void main(String[] args) {
		for (int i = 0; i < 5; i++) {
			//注意replaceAll前面的是正则表达式
			String uuid = UUID.randomUUID().toString().replaceAll("-","");
			System.out.println(uuid);
//            System.out.println(uuid.length());
		}
	}
}

判断字符串是否为空

原文链接:https://blog.csdn.net/w05980598/article/details/79925097

null,表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;
"",表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

public class String_Demo01 {
	public static void main(String[] args) {
		String str1 = new String() ;
		String str2 = null ;
		String str3 = "" ;
		System.out.println(str1==str2);                //内存地址的比较,返回false
		System.out.println(str1.equals(str2));         //值的比较,返回false
		System.out.println(str2==str3);                //内存地址的比较,返回false
		System.out.println(str3.equals(str2));         //值的比较,返回false
		System.out.println(str1==str3);                //内存地址的比较,返回false
		System.out.println(str1.equals(str3));         //值的比较,返回true
	}

}

通过如上的程序可以得出如下结论:

  • 字符串对象与null的值不相等,且内存地址也不相等;
  • 空字符串对象与null的值不相等,且内存地址也不相等;
  • new String()创建一个字符串对象的默认值为"" (此外,String类型成员变量的初始值为null)

方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:

if(s == null || s.equals(""));

方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法:

 if(s == null || s.length() == 0);

方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二.

if(s == null || s.isEmpty());

方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多:

if (s == null || s == "");

注意:s == null 是有必要存在的.

如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException.
并且s==null 的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException.
如下Java代码:

String str = null;
  if(str.equals("") || str == null){//会抛出异常
			System.out.println("success");
  }

StringUtils的isBlank与isEmply

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

String.replace及String.replaceAll不生效

问题:

String aa = "aa";

aa.replace("a", "b");
System.out.println(aa);
aa.replace("b", "a");
System.out.println(aa);

aa.replaceAll("a", "b");
System.out.println(aa);
aa.replaceAll("b", "a");
System.out.println(aa);// 输出结果都是aa

解决:

// 因為 String是不可改變的 你要用新建一個變量去接受他
String aa = aa.replace("a", "b");

String试题

1

java中 String str = "hello world"下列语句错误的是?

  • A str+=' a'
  • B int strlen = str.length
  • C str=100
  • D str=str+100

正确答案:A B C
A str += 'a' 和 str +="a"都是对的,但是如果a前面加一个空格,那么只能用双引号了。代表字符串
B 数组有length属性,字符串只有length()方法
C int 无法直接转成String类型

2

下面代码将输出什么内容:()

public class SystemUtil{
	public static boolean isAdmin(String userId){
		return userId.toLowerCase()=="admin";
	}
	public static void main(String[] args){
		System.out.println(isAdmin("Admin"));
	}
}
  • A true
  • B false
  • C 1
  • D 编译错误

答案:B
字符串比较相等一定用equals,这个题Admin 的A是大写,所以toLowerCase 时会重新new一个字符串,不是同一块地址,返回false。

3

有如下一段代码,请选择其运行结果()

public class StringDemo{
  private static final String MESSAGE="taobao";
  public static void main(String [] args) {
	String a ="tao"+"bao";
	String b="tao";
	String c="bao";
	System.out.println(a==MESSAGE);
	System.out.println((b+c)==MESSAGE);
  }
}

A true true
B false false
C true false
D false true

答案:C
要注意两个问题:

1,字符串在java中存储在字符串常量区中
2,==判断的是对象引用是否是同一个引用,判断字符串相等要用equals方法
首先判断a==MESSAGE 同一份字符串常量在内存中只有一份,因此是同一地址,返回true
再次比较(b+c)==MESSAGE 这相当于 new String(b+c)==MESSAGE 这里new了一个String对象,所以返回false

验证如下:
image

标签:false,String,数据,str,null,true,StringUtils
From: https://www.cnblogs.com/fusio/p/17265019.html

相关文章

  • 激光雷达技术、数据和应用简介
    激光雷达技术、数据和应用简介介绍光探测和测距(激光雷达)测绘是一种公认的生成关于地球形状和表面特征的精确和直接地理参考空间信息的方法。激光雷达测绘系统及其赋能技术的最新进展使科学家和测绘专业人员能够以比以往任何时候都更高的精度、精度和灵活性,在大范围内检查自然和......
  • 【专题】保险行业数字化洞察白皮书报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33203原文出处:拓端数据部落公众号近年来,"养老"、"三胎政策"、"医疗成本"等一系列备受关注的民生话题,使得保险服务备受瞩目,并逐渐渗透到每个人的生活中。自2020年以来,由于多种因素的影响,人们对健康的意识不断提高,这正在重新塑造中国消费者对保险的......
  • R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化
    原文链接:http://tecdat.cn/?p=22732 原文出处:拓端数据部落公众号 关联规则挖掘是一种无监督的学习方法,从交易数据中挖掘规则。它有助于找出数据集中的关系和一起出现的项目。在这篇文章中,我将解释如何在R中提取关联规则。关联规则模型适用于交易数据。交易数据的一个例子可以......
  • 数据报告分享|WEKA贝叶斯网络挖掘学校在校人数影响因素数据分类模型
    全文链接:https://tecdat.cn/?p=33159原文出处:拓端数据部落公众号本文着眼普通高等学校在校学生人数,提出了不同种类学校的在校人数可能存在的影响关系从而探究教育现状的因素,建立分类模型,探求这几个因素间的数量关系。本文试图帮助客户通过研究不同种类学校的在校人数的关系,......
  • PostgreSQL优化数据库参数
    开箱即用的默认PostgreSQL配置并未针对任何特定工作负载进行调整。设置默认值以确保PostgreSQL在任何地方运行,消耗最少的资源,并且不会导致任何漏洞。它具有所有数据库参数的默认设置。数据库管理员或开发人员主要负责根据系统的工作负载调整PostgreSQL。在这篇博文中,我们将深......
  • 数据库查询如何优化?
    索引优化:索引可以加速查询速度,但是索引的使用也会带来一些开销。因此,需要根据查询的情况对索引进行优化,比如对经常使用的字段进行索引,或者使用覆盖索引等。数据库设计优化:数据库的设计也会影响查询的性能。比如对于经常需要联表查询的情况,可以将需要联表的字段放在同一张表中,或......
  • MySQL-12.MySQL数据类型
    1.MySQL中的数据类型常见数据类型的属性,如下2.整数类型2.1类型介绍整数类型一共有5种,包括TINYINT,SMALLINT,MEDIUMINT,INT(INTEGER)和BIGINT。它们的区别如下表所示2.2可选属性整数类型的可选属性有三个2.2.1MM:显示宽度,M的取值范围是(0,255)。例如,int(5):当数据宽度小......
  • 可变数据类型与不可变数据类型区别?哪些是可变?哪些不可变?
    可变数据类型:对该数据类型值做修改(增删改查),若它对应的内存地址没有发生变化,那么这种类型的数据就称为可变数据类型。若对变量进行重新赋值,那么变量的内存地址会发生变化。不可变数据类型:对该数据类型值做修改(增删改查),若它对应的内存地址发生变化,那么这种数据类型就称为不可变数......
  • SparkStreaming 连接 Kafka数据源
    本文的前提条件:SparkStreaminginJava参考地址:SparkStreaming+KafkaIntegrationGuide(Kafkabrokerversion0.10.0orhigher)1.添加POM依赖<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>......
  • FastAPI学习-28 alembic数据迁移报错:Target database is not up to date 报错解决办法
    前言当表结构有变更,数据迁移时,出现报错:Targetdatabaseisnotuptodate遇到的问题执行迁移命令alembicrevision--autogenerate-m"testv4"出现如下报错>alembicrevision--autogenerate-m"testv4"INFO[alembic.runtime.migration]ContextimplMySQLImpl.INF......