1.1 简介
1.String不是基本数据类型,是一种引用类型
2.String代表一组不可改变的Unicode字符序列。String类对象的内容一旦被初始化,不能再改变
3.String类是final修饰的终结类,不能产生子类
2.创建String
1.静态方式创建:String str="abc";在方法区常量池中产生唯一一个字符串对象,如果有另外一个引用指向了相同的字符串,则两个引用变量的地址相同
2.动态方式创建:String str=new String("abc"); 在堆内存中会产生一个不同的对象,会产生两个对象
3.构造方法
1.new String();
2.new String("abc");
3.new String(char类型数组);
4.new String(char类型数组,数组下标起始位置,取出数组的长度);
5.new String(byte类型数组);
6.new String(byte类型数组,数组下标起始位置,取出数组的长度);
4. 连接操作符
可以使用"+"作为连接符,任何的数据类型和字符串使用加号连在一起,最后都会变成字符串类型
5. 常用方法
1.length():返回int类型的值,获取字符串长度
2.equals(String):判断两个字符串中的字面量值是否相等
3.equalsIgnoreCase(String):不区分大小写比较字面量值是否相等
4.indexOf(int):
5.indexOf(String):查找给定值在字符串中第一次出现的下标位置。如果值不存在,则返回-1
6.indexOf(String,int):查找给定值在字符串中给定索引位置开始,第一次出现的下标位置。如果值不存在,则返回-1
7.lastIndexOf(int):
8.lastIndexOf(String):查找给定值在字符串中最后一次出现的下标位置。如果值不存在,则返回-1
9.lastIndexOf(int,int):
10.lastIndexOf(String,int):查找给定值在字符串中给定索引位置开始,最后一次出现的下标位置。如果值不存在,则返回-1
11.oUpperCase():将字符串中所有字符都转换为大写
12.toLowerCase():将字符串中所有字符都转换为小写
13.charAt(int):返回下标引处的char值
14.substring(int):对字符串进行截取,从指定索引位置开始,一直截取到最后
15.substring(int,int): 对字符串进行截取,从指定开始位置,截取到结束位置(不包含结束位置)
16.trim():将字符串前后空格去除
17.concat(String):字符串连接 和+实现相同的功能,如果字符串是null值不能使用,并且只能传字符串参
数,其他类型不可以使用
18.getBytes():将字符串转换成byte数组
19.toCharArray():将字符串转换成char数组
20.contains(String):判断在字符串是否包含给定值,返回boolean类型的值
21.startsWith(String):判断字符串是否以给定值做为开始
22.startsWith(String,int):判断字符串从索引位置,是否以给定值做为开始
23.endsWith(String):判断字符串是否以给定值做为结束
24.replace(char,char):对字符串指定字符,使用新的字符进行替换
25.replace( CharSequence, CharSequence):对字符串指定的字符序列,使用新的字符序列进行替换
26.replaceAll(String,String):按正则表达式要求,将给定的值替换满足正则的字符串
27.split(String):按给定的正则表达式,将字符串分隔成字符串数组
28.maches(String):判断字符串是否可以匹配给定的正则表达式
29.contentEquals(CharSequence)
30.contentEquals(StringBuffer):字符串和StringBuffer或者字符序列比较内容
31.Pattern.matcher(String,String):和字符串maches()方法执行相同结果
6.StringBuffer
内容可变的字符串类,使用StringBuffer来对字符串的内容进行动态操作,不会产生额外的对象。
初始时,默认是有16个字符来做为缓冲区
6.1构造方法
new StringBuffer();
new StringBuffer(String);
new StringBuffer(int);
new StringBuffer(charSequence);
6.2常用方法
append():在当前StringBuffer对象上,追加其他内容
capacity():返回当前容量
length():返回长度
setCharAt(int,char):将给定索引位置的字符设置为第二个参数给定的值
reverse():将StringBuffer内容反转
delete(int,int):删除StringBuffer从指定索引开始(包含)到结束(不包含)的字符串
toString():将StringBuffer转成字符串
insert(int,Object):在指定索引位置,插入给定值
replace(int,int,String):将指定的字符串替换到起始位置(包含)和结束位置(不包含)中
deleteCharAt(int):删除指定索引位置的字符
7.StringBuilder
提供了和StringBuffer相同的API
StringBuffer的方法,都有synchronized修饰,是线程安全的
StringBuilder的方法,没有synchronized修饰,非线程安全的。如果是单线程操作字符串相关处理,StringBuilder的效率最高。
区别
String、StringBuffer、StringBuilder区别
String和StringBuffer区别:一个是常量,一个是变量。String 是一个final修饰的终结类,不能产生子类,是使用final的byte数组来存储值,所以一旦创建不能改变。如果经常对字符串进行修改、删除或者插入操作,建议使用StringBuffer效率更高
StringBuffer和StringBuilder区别:一个是有线程安全的,一个是非线程安全的