Java内容梳理(14)API学习(2)String类与正则表达式

1、String类

(1)常见的创建String对象方式

(1.1)String str1 = "123";

(1.2)String str2 = new String("123");

(1.3)char[] a = new char[] {'1','2','3'};    String str3 = new String(a);

(1.4)byte[] bytes = { '1','1','p' }; String str4 = new String( bytes,"utf-8" );

(2)String类型的特点

String类型表示不可变字符串:一旦字符串创建完毕后,这个字符串的内容就固定不能再发生改变一旦内容发生变

化,JVM会新建另外一个String对象来完成内容的变化要求。字符串在拼接的时候,会反复创建新的内存对象,浪费性能。

(3)字符串常量池

(a)字符串常量/字符串直接量:直接用""引起来的东西,如:"123"

(b)池:容器,装字符串常量

(c)运作:JVM在创建字符串常量对象时,会先搜索字符串常量池,看看该字符串是否已经存在,若存在则直接返回该字符串常量的地址,若不存在则会在字符串常量池中新建一个字符串常量对象,再返回该字符串对象的地址。

(4)String类的常用方法

charAt:获取字符串中指定位置字符

length:获取当前字符串的长度

trim:去除字符串两端的空格

indexOf:返回子字符串在整个字符串的索引位置

indexOf():从左往右找

lastIndexOf():从右往左找

split:分割字符串成一个字符串数组(支持正则表达式)

replace:替换指定的子串为新串

replace():不支持正则表达式

replaceAll():支持正则表达式

substring:截取指定长度的子串

substring(0,5);左闭右开

tartWiths:判断当前字符串是否已指定的字符开头

endWiths:判断当前字符串是否已指定的字符结尾

toLowerCase / toUpperCase:将串中所有字符转大小写

任何类型转换成字符串:加个空串

Student stu = new Student();

String str = stu + "";

(5)StringBuilder类和StringBuffer类

(1)可变字符串,字符串对象的内容可以改变;在需要大量的字符串拼接操作时使用

前者:线程不安全类 方法都未使用synchronized关键字修饰

后者:线程安全类 方法都使用synchronized关键字修饰

(2)常用方法

append:追加字符串到当前字符串

insert:在指定的位置插入指定的字符串

delete:删除指定范围的字符串

setLength:设置字符串的长度

2、正则表达式

(1)作用

正则表达式是具有语义的一段字符串,用来说明一种格式要求。主要的用途是验证某个字符串是否符合要求。

(2)语法

量词:用于说明字符可以出现的次数

* 任意次数

+ 至少一次

?最多一次

{n} 出现n次

{n,m} 出现n到m次

{n,} 至少出现n次

分组:()将括号内的内容作为一个整体

取值范围:[] 如:[0-9]:0~9范围内取值     [abc]:从a,b,c三者之内取值

逻辑或:| 该操作符两端的表达式只要满足其1即可

逻辑非:^ 如:[^0-9]:不能是数字

边界: ^ 以什么开头 $以什么结尾

Pattern p = Pattern.compile( "^[0-9]*.*[a-z]$" );

特殊符:针对特殊符进行匹配时,要进行转义

. : 任意字符

\d : 数字,即[0-9]

\D : 非数字

\s : 空格

\S : 非空格

\w : 字母

\W : 非字母

(3)类的用法

Pattern类:格式 定义一种正则表达式格式

Matcher类:匹配器 验证字符串内容是否与正则格式匹配

String str = "bbb";

Pattern p = Pattern.compile("a+");//至少一个a

Mather m = p.mather( str );

System.out.print( m.mathes() );

3、随机数类

java.util.random类

作用:生成随机数

写法:

Random random = new Random();//创建对象

int t = random.nextInt();//int范围内的随机数

int s = random.nextInt(10);//指定范围【0-10),左闭右开

Math类也能实现随机数:

Math.random();//生产(0,1)之间的双精度(double型)数:小数点后有16位

4、UUID类(生成唯一字符串)

作用:生成唯一性的字符串标识

UUID.randomUUID();//生成的是对象

所以:

System.out.println( UUID.randomUUID().toString() );//结果随机但唯一:d7c6ccb6-cc95-4723-938e-694f3fb66f75

若要去掉生成的-:

System.out.println( UUID.randomUUID().toString().replace("-","") );

5、BigDecimal类(高精度计算)

作用:提供高精度计算,因为浮点类型进行计算可能会丢失精度

如:float a = (float) 1.0;   float b = (float) 0.9;   System.out.println(a-b);

结果:0.100000024

BigDecimal a = new BigDecimal( "1.0" );//注意:参数是字符串

BigDecimal b = new BigDecimal( "0.9" );

或者

BigDecimal a = new BigDecimal.valueOf( 1.0 );也可以使用.valueOf()方法

BigDecimal b = new BigDecimal.valueOf( 0.9 );参数就可以不用写字符串

调用该对象的方法,来计算浮点型运算

BigDecimal r = a.subtract( b );

System.out.println( r.floatValue() );//结果是:0.1

猜你喜欢

转载自blog.csdn.net/Carl_changxin/article/details/82861972
今日推荐