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