目录
2.7、 substring(int beginIndex,int endIndex)
3、StringBuffer 和 StringBuilder 类
1、String
基本数据类型(四类八种) :不属于Object类型的继承体系之下
引用数据类型(字符串,数组,自定义类型) :属于对象类型 Object类型的继承体系之下。
1.1、什么是String
字符串 , 引用类型。(基本类型的变量存储的是数据,引用类型的变量存储的是数据的地址)字符串对象。
1.2、String的特点:
字符串不可变
每一个字符串都是String类的实例对象
正是因为字符串是不可变的,所以字符串是共享的。
字符串的效果上相当于一个char[] 数组,但是它的底层原理是byte[] 字节数组。
1.3、创建字符串的2种常用方法
最常用的直接创建 String str = "aaa";
注意:直接使用双引号的就是字符串对象。虽然没有new
通过构造方法创建
String str = new String("aaa");
两者的区别:
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:
2、常用字符串方法
2.1、字符串长度
用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
String str = "aaaaaaaa";
int len = str.length();//len代表此字符串的长度
2.2、连接字符串
String 类提供了连接两个字符串的方法:
1、cancat()
String string1="我的名字是:";
String string2="小花";
string1.concat(string2);//此时打印结果为:我的名字是:小花
2 、使用'+'操作符来连接字符串
"Hello," + " World" + "!!!!!"
2.3、charAt(int index)
返回指定索引处的值。
String str=" hello";
System.out.println(str.charAt(3));//打印结果为e
2.4、indexOf(int ch)从前向后查找
指定字符第一次出现的字符串中的索引
String str="hello 11 wang";
System.out.println(str.indexOf("e"));//返回结果为1
2.5、lastIndexOf(int ch)从前向后查找
指定字符最后一次出现的字符串中的索引。
String str="whhng";
System.out.println(str.lastIndexOf("h"));//输出结果为2
2.6、substring(int beginIndex)
返回一个字符串,返回从起始位置(beginIndex)至字符串末尾的字符串
String str="whhng";
System.out.println(str.substring((2)));//返回结果为hng
2.7、 substring(int beginIndex,int endIndex)
返回从起始位置(beginIndex)到目标位置(endIndex)之间的字符串,但不包含目标位置(endIndex)的字符
String str="whhng";
System.out.println(str.substring(2,4));//输出结果hn
2.8、 startsWith()
用于检测字符串是否以指定的前缀开始。其语法
public boolean startsWith(String prefix, int toffset)
或
public boolean startsWith(String prefix)
prefix -- 前缀。
toffset -- 字符串中开始查找的位置。
如果字符串以指定的前缀开始,则返回 true;否则返回 false。
String str="whhng";
System.out.println(str.startsWith("w"));//结果为true
2.9、 endsWith()
测试此字符串是否以指定的后缀结尾。其语法
public boolean endsWith(String suffix)
参数
suffix - 后缀。
结果
true如果参数表示的字符序列是该对象表示的字符序列的后缀; 否则为false 。
String str="whhng";
System.out.println(str.endsWith("l"));//结果为false
2.10、 trim()
用于删除字符串的头尾空白符。
public String trim()
内部无参数
String str=" whhng";
System.out.println(str.trim());//结果为whhng
2.11、 replace()
通过用 newChar 字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串。
public String replace(char searchChar, char newChar)
参数
searchChar -- 原字符。
newChar -- 新字符。
返回值
替换后生成的新字符串。
String str=" whhng";
System.out.println(str.replace("h","a"));//输出结果为 waang
2.12、toCharArray()
将字符串转换为字符数组。
public char[] toCharArray()
无参数
返回值是字符数组。
String Str = new String("whhng");
System.out.println( Str.toCharArray() );//返回whhng
2.13、split()
根据匹配给定的正则表达式来拆分字符串
. 、 $、 | 和 * 等转义字符,必须得加 \\。
多个分隔符,可以用 | 作为连字符。
语法
public String[] split(String regex, int limit)
参数
regex -- 正则表达式分隔符。
limit -- 分割的份数。
返回值是字符串数组。
3、StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
3.1、StringBuffer经常用法
序号 | 方法 |
1 | public StringBuffer append(String s) 将指定的字符串追加到此字符序列。 |
2 | public StringBuffer reverse() 将此字符序列用其反转形式取代。 |
3 | public delete(int start, int end) 移除此序列的子字符串中的字符。 |
4 | public insert(int offset, int i) 将int 参数的字符串表示形式插入此序列中。 |
5 | insert(int offset, String str) 将 str 参数的字符串插入此序列中。 |
6 | replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
3.2、 StringBuilder经常用法
序号 | 方法 |
1 | StringBuilder append(int i); 将 |
2 | charAt(int index) 返回指定索引处的此序列中的 |
3 | StringBuilder delete(int start, int end); 删除此序列的子字符串中的字符。 |
4 | StringBuilder insert(int offset, String str); 将字符串插入此字符序列。 |
5 | StringBuilder replace(int start, int end, String str) 使用指定的 |
6 | StringBuilder reverse() 将此字符序列用其反转形式取代。 |
7 | StringBuilder substring(int start) 返回一个新的 |