Java学习-之String深入和正则表达式-20230428

文章探讨了Java中String的创建方式,强调了其不可变特性以及使用equals进行内容比较。推荐使用StringBuilder提升字符串拼接效率。还介绍了正则表达式的应用,如身份证号和邮箱合法性的验证。
摘要由CSDN通过智能技术生成

Java学习-之String深入和正则表达式



引出

String的是怎么创建的,为什么==不能用来比较比较字符串相等


一、String的创建

String str = new String(“hello”);
String str = “hello”;

1.String str = new String(“hello”);

执行上述代码,底层进行了如下工作,在栈内存里存放变量str,在堆内存新创建一个String的对象,在常量池空间中创建常量hello,如果存在则不创建;创建了一个或两个对象。
在这里插入图片描述

String str = new String("hello");

2.String str = “hello”;

栈内存中的str指向常量池中的hello
在这里插入图片描述

String str = "hello";

二、String的特点

1.String的内容

String的内容是不可写的,调用String的方法,会产生一个新的字符串

2.String的==和equals

  • 基本类型:==相等
  • 引用类型:==两个引用是否指向同一个对象
  • 字符串比较相等,用equals,比较内容是否相等

带来的问题,字符串拼接的效率问题,每次拼接都会产生新的字符串,如何优化

三、如何提高字符串拼接操作的效率?

1.StringBuilder

实现字符串高效拼接

StringBuilder str = new StringBuilder("hello");
long t1 = System.currentTimeMillis(); // 当前毫秒数
for (int i = 0; i < 100000; i++) {
            str.append(" world ");

        }
long t2 = System.currentTimeMillis();
System.out.println("耗时:"+(t2-t1)+"ms");

四、正则表达式

表达式作用
[0-9]:0-9的一个数字
[a-z]小写字母
[A-Z]大写字母
[a-zA-Z]:大小写字母
[^0-9]非数字
+最少一个
{n}只有n个
{n,m}n到m之间
?0个或一个

判断身份证号是否合法

// 判断身份证号码是否合法
String identity = "154258412707828487g";
String regex = "[1-9][0-9]{16}[0-9Xx]"; // 首位不能为0,末尾为X,x数字;
System.out.println(identity.matches(regex));

中文字符的编码范围\u4e00-\u9f85

// 输入一个随意的字符串,找出里面的所有中文字符。
String inputCinese = "你好saldf猫猫的饭盆2938930 来说较大了";
String regexChina = "[^\u4e00-\u9f85]";
String allChinese = inputCinese.replaceAll(regexChina,"");
System.out.println("找到所有中文字符如下:"+allChinese);

判断邮箱的合法性

// 判断邮箱的合法性
String email = "AWD83456a465234@qq.com";
String regex = "[0-9a-zA-Z]+[@]{1}[a-z]{1,5}[.]{1}[a-z]{3,10}";
System.out.println("邮箱合法性:"+email.matches(regex));

总结

1.String是如果实现的,拼接字符串的高效方法;
2.正则表达式初步;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值