StringBuilder类型
StringBuilder类型
- 概述:用来表示字符串的类型
- 特点:
(1)是一个可变的字符序列
(2)在lang包不需要导包
(3)此类中维护也是一个字符数组,用来存储字符串数据 - String类型和StringBuilder类型的区别:
相同点:
(1)两个类型都可以表示字符串
不同点:
(1)String是不可以变的字符序列,本类中没有提供修改成员变量的方法
(2)StringBuilder是可变的字符序列,因为类中提供了修改成员变量的方法
StringBuilder构造方法
- StringBuilder() :
创建一个初始值为空的字符串对象,数组的初始大小为 16 - StringBuilder(int c) :
创建一个初始值为空的字符串对象,数组的初始大小是c - StringBuilder(String str) :
创建一个初始值为str的字符串对象,数组初始大小为str.len+16
StringBuilder获取长度的方法
- 概述:StringBuilder对象中维护的是一个字符数组,所以可以获取字符数组的长度和元素的个数。
(1)capacity() :返回对象的初始容量
(2)length():返回字符串对象长度
StringBuilder类型中常用的方法
- 增加方法:
append(int i) :在字符串基础上追加数据,可以加任何类型的数据
insert(int offset, char c) :在指定索引添加数据 索引的范围:0-length()
注意事项:
如果初始容量不够使用,会自动扩充空间,当前容量*2 + 2 - 删除方法:
delete(int start, int end) :删除从start开始到end-1结束的字符
deleteCharAt(int index) :删除指定索引位置上的字符 - 替换方法:
replace(int start, int end, String str) :将指定索引范围的字符换成新的字符串 - 反转方法:
reverse() :将字符串在本身的基础进行反转
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
System.out.println(sb.capacity());//16
System.out.println(sb.length());//0
sb.append("abcdefg");
System.out.println(sb);//abcdefg
sb.insert(0, "heihei");
System.out.println(sb);//heiheiabcdefg
sb.insert(3, 100);
System.out.println(sb);//hei100heiabcdefg
sb.delete(0, 3);
System.out.println(sb);//100heiabcdefg
sb.deleteCharAt(0);
System.out.println(sb);//00heiabcdefg
sb.replace(0, 2,"ha");
System.out.println(sb);//haheiabcdefg
sb.reverse();
System.out.println(sb);//gfedcbaiehah
}
String类型和StringBuilder类型拼接的效率的区别
- 效果:
(1)使用String类型拼接字符串效率低
(2)使用StringBuilder类型拼接字符串效率高 - 原因:
(1)String类型是一个不可变的字符序列,不能在对象本身基础上进行拼接数据
系统会默认提供一个StringBuilder对象,拼接,拼接之后转为String对象
(2)StringBuilder类型是一个可变的字符序列,可以在对象本身基础上拼接数据
StringBuilder和StringBuffer的区别
- 共同点:
(1)都可以表示可变的字符序列
(2)两个类型中的方法都一样 - 不同点:
(1)版本不同:
前者是jdk1.5出现
后者jdk1.0出现
(2)线程安全性不同:
前者是线程不安全
后者是线程安全
如果在单线程中,使用StringBuilder多一点
如果在多线程中,使用StringBuffer多一点
(3)效率问题:
前者使用效率高
后者使用效率低
基本类型的包装类
基本类型的包装类
- 基本数据类型:四类八种。变量中存储的是数值本身而不是数据的地址。
- 基本类型数据类型特点:
(1)基本数据类型只能表示一个数据,类型中并没有一些特殊的方法来操作数据。
(2)需要对基本数据类型进行包装升级,包装之后,不仅可以表示数据,也有一 些方法来操作数据。 - 包装类型罗列:
1 | 2 |
---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer类型
- 概述:
(1)int类型只能表示一个整数
(2)Interger类型中不仅维护一个整数,还有一些操作该整数的方法
Integer构造方法
- Integer(int value) :通过有参构造给类型中维护的整数赋值
- Integer(String s) :通过字符串给整数赋值,但是字符串只能是数字类型的字符串
Integer类型中维护的静态常量
- static int BYTES
用于表示二进制补码二进制形式的 int值的字节数。 - static int MAX_VALUE
一个持有最大值一个 int可以有2^31 -1。 - static int MIN_VALUE
的常量保持的最小值的 int可以具有,-2^31。 - static int SIZE
用于表示二进制补码二进制形式的 int值的位数。 - static TYPE
类原始类型 int的 类实例。
Integer类型中常用的方法
- 非静态方法:xxxvalue():将包装类型的对象转为基本数据类型
- 静态方法:
parseInt(String s) :将字符串s通过十进制转为基本数据类型的整数
parseInt(String s, int radix) :将字符串s当做radix进制转为一个基本数据类型整数
toBinaryString(int i) :将i通过二进制转为字符串
toHexString(int i) :将i通过十六进制转为字符串
toOctalString(int i) :将i通过8进制转为字符串
toString(int i, int radix) :将i通过指定进制进行转换,转成字符串
valueOf(String s, int radix) :将字符串s通过指定进制转为一个包装类的对象
自动装箱和自动拆箱(jdk1.5)
- 装箱:将基本数据类型包装为引用数据类型的对象
- 拆箱:将引用数据类型的对象转为基本数据类型
- 自动装箱:直接使用引用数据类型的变量,接收基本数据类型的元素
- 自动拆箱:直接使用基本数据类型的变量,接收引用数据类型的对象
直接使用引用数据类型的对象进行数据的运算
正则表达式
正则表达式
- 概念:正则表达式其实就是使用一个字符串表示一类规则
- 作用:
普通的字符串只能表示和本身所表示的数据,但是正则表达式不仅可以表示字符串本身数据,还可以表示一类字符串,可以做为一类字符串的依据 - 好处:可以使用简单的代码完成发杂的逻辑
正则表达式中的字符类
- 字符类型:使用单引号引起来的单个字符 char
- 字符类:
(1)使用 [] 表示某一个单个符号 [abcdefg]
(2)不管 [] 中定义多少个字符,都只能表示其中一个字符 - 使用方式:要判断一个字符串是否满足某个正则表达式,需要使用matches方法
- 注意事项:
(1)方法的参数中定义的是一个字符串规则
(2)不管中括号中定义了多少个字符,只能表示其中一个 - 举例:
[abc]:a,b,c其中一个
[^abc]:除了abc之外的其中一个
[a-f]:a-f之间的其中一个
正则表达式中的预定义字符
- 预定义字符:如果某些字符经常使用,就将这些字符定义为预定义字符
- 特点:预定义字符只能表示单个字符
- 罗列:
. :表示所有的单个字符
\d :所有的数字字符
\D :所有的非数字字符
\s :所有的空格字符
\S:所有的非空格字符
\w:表示0-9a-zA-Z_
\W:除了\w的其中一个字符
正则表达式中的数量词
- 字符类和预定义字符类都只能表示单个符号,如果需要表示多个符号,需要通过数量词来修饰。
- 特点:数量词只能修饰前面的那一个字符
- 分类:
模糊的数量词
精确的数量词 - 模糊的数量词
X?:x这个字符可以出现0次或者1次
X+:x这个字符出现1次或者多次
X*:x这个字符可以出现0次1次或者多次 - 精确的数量词
X{n}:表示x这个字符正好出现n次
X{n,}:表示x这个字符至少出现n次
X{n,m}:表示x这个字符出现n-m次
正则相关的三个方法
- matches(String s):判断调用者字符串是否和s匹配
- split(String s):切割调用者字符串,只要调用者字符串中满足s这个规则都可以进行切割返回值是一个字符串数组,将切割后的内容存入到字符串数组中
- replaceAll(String s1,String s):将满足s1的字符串全部替换成s字符串