每日一例 | String那些事

共 2768字,需浏览 6分钟

 ·

2021-05-23 16:13

前言

String是一个特别基础的类,更是我们离不开的一个类,可以说在所有项目中,不可能不用String,所以我们今天就来看下String的一些知识点,看下你到底掌握了没有。我们废话少说,直接开始。

String

不可变类

我们在第一次学习String的时候,就被告知String是不可变的类,不可以被继承。具体的原因就是String类是final修饰的:

当然,String字符串创建后,不能变化也是因为final关键字,看上图,我们发现value前面也有final,而且是私有的,没有对外提供可访问的方法,所以Stringvalue只能被赋值一次。

如果你要继承String,他会有这样的提示错误:

意思就是无法继承final的类。

常用的方法

作为一个最常用的类之一,String有着特别丰富的方法,以满足我们各种需求:

方法参数应用
length()
返回字符串长度
charAt()int索引获取string中索引对的的char
getChars(),getBytes()要复制部分的起点和终点,复制的目标数组,目标的起始索引复制char或byte到目标数组中
toCharArray()
生成一个char[],包含string的所有字符

方法比较多,时间关系,我们先写这个,等晚上了,我把其他也补充上。

格式化输出

这一块其实我以前也很少有,但是最近了解了下,发现还是方便的。以前输出字符串我们是这也操作的:

int x = 0, y = 2;
System.out.print("Row 1 :" + x + ","+ y);

但是在jdk1.5以后,我们可以这样输出了:

System.out.printf("Row 1 :%d, %d", x, y);

或者这样:

System.out.format("Row 1 :%d, %d", x, y);

上面,这些写法输出结果都是一样的:

对于prinfformat想要换行,直接在字符串后面加上换行符即可(\n

format方法

这里我们着重说下format方法。她也是jdk1.5引入的,她可以满足你的各种字符串拼接需求,特别方便:

String format = String.format("x = %d, y = %d, x + y = %d", x, y, x + y);
System.out.println(format);

结果:

x = 0, y = 2, x + y = 2

下面是format支持的参数类型:

参数说明
d整数(十进制)
cUnicode字符
bBoolean值
sString
f浮点数(十进制)
e浮点数(科学计数)
x整数(十六进制)
h散列码(十六进制)
%字符"%"

通过% + 上面这些参数,你可以实现各种字符串拼接的需求。

当然,我们也可以通过Formatter实现各种字符串的拼接,因为format方法本身就是通过formatter实现的:

正则表达式

正则表达式也算是比较重要,而且用的比较多的知识了,由于内容太多了,这里我们就简单说下的的应用。一般我们会用它来实现参数的校验,比如日期格式校验、金额格式校验、手机号校验、身份证号校验。

String str = "2021-05-20";
String pattern = "^\\d\\d\\d\\d-\\d\\d-\\d\\d";

Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
System.out.println(m.matches());

上面的代码,只有是2021-05-20这样的格式才会被匹配,结果为true,否则是false。下面这些都是不匹配的:

2021-5-20
2021-5-200
2021-05-200
2021-005-20

当然,2021-05-002021-00-202020-00-000000-00-00也是可以匹配的,但他们对java而言是合法的日期格式:

System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str));

第一个对应的日期是

Fri Apr 30 00:00:00 CST 2021

也就是2021-04-30

第二个对应的日期是

Sun Dec 20 00:00:00 CST 2020

也就是2020-12-20

第三个对应的日期是

Mon Nov 30 00:00:00 CST 2020

也就是2020-11-30

第四个对应的日期是

Mon Nov 30 00:00:00 CST 2020

也就是0002-11-30

其他的正则表达式,感兴趣的小伙伴自己去了解,在实际开发过程中,数据校验用起来很方便,比如excel导入的数据。

当然,正则这块还有一个比较强大的功能,就是数据替换,由于时间问题,我们就不在讲了,感兴趣的小伙伴自己去了解。

总结

对于String常用的方法,小伙伴肯定都比较熟悉,但是format和正则表达式这块平时用到开发中的小伙伴肯定比较少,我们希望在今天分享之后,大家能把这两个比较强大,而且用起来很方便的知识点,真正用到实际开发中,它们一定会极大提升你的开发效率的,让我们一起加油努力吧,奥里给

项目路径:

https://github.com/Syske/example-everyday

本项目会每日更新,让我们一起学习,一起进步,遇见更好的自己,加油呀

- END -


浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报