一、String类
字符串广泛运用在java编程中,在java中字符串属于对象,java提供了String类来创建和操作字符串。
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
(一)创建
public static void main(String[] args) {
//方法一:
String str = "String";
//方法二
String str2 = new String("String");
//方法三:
char[] chars = {'S','t','r','i','n','g'};
String str3 = new String(chars);
System.out.println(str);
System.out.println(str2);
System.out.println(str3);
}
输出结果:
(二)常用方法
类别 | 方法名 | 作用 |
---|---|---|
长度 | int length() | 得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符) |
数组 | byte[] getByte() | 使用平台默认的字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中 |
数组 | char[] toCharArray() | 将此字符串转换为新的字符数组 |
数组 | String[] split(String regex) | 将此字符串拆分为给定 regular expression的匹配 项 |
判断 | boolean equals (String) | 判断两个字符串的内容是否一模一样 |
判断 | boolean equalsIgnoreCase(String) | 忽略大小写的比较两个字符串的内容是否一模一样 |
判断 | boolean contains(string) | 判断一个字符串里面是否包含指定的内容 |
判断 | boolean startswith(String) | 判断一个字符串是否以指定的内容开头 |
判断 | boolean endswith(String) | 判断一个字符串是否以指定的内容结尾 |
修改字符串 | string toUpperCase() | 将一个字符串全部转换成大写 |
修改字符串 | string toLowerCase() | 将一个字符串全部转换成小写 |
修改字符串 | string replace(string,string) | 将某个内容全部替换成指定内容 |
修改字符串 | string replaceAll(String, string) | 将某个内容全部替换成指定内容,支持正则 |
修改字符串 | string repalceFirst( String,string) | 将第一次出现的某个内容替换成指定的内容 |
修改字符串 | string substring( int) | 从指定下标开始一直截取到字符串的最后 |
修改字符串 | string substring(int,int) | 从下标x截取到下标y-1对应的元素 |
修改字符串 | String trim() | 去除一个字符串的前后空格 |
位置 | char charAt( int) | 得到指定下标位置对应的字符 |
位置 | int indexOf( String) | 得到指定内容第一次出现的下标 |
位置 | int lastIndexOf( String) | 得到指定内容最后一次出现的下标 |
注意:和改变内容
有关的方法,都不会直接操作原本的字符串
(不改变原字符串),而是将符合条件的字符串返回给我们
,需要自行接收
(三)补充,构造器
更多更详细方法可以查看:https://www.runoob.com/manual/jdk11api/java.base/java/lang/String.html#charAt(int)
二、StringBuffer类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
三、StringBuilder类
StringBuilder在java5中被提出,它和StringBuffer最大的不同在于StringBuilder的方法不是线程安全的(不能同步访问)。由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
(一)创建
//空参数构造方法
StringBuilder sb1 = new StringBuilder();
System.out.println("sb1: "+sb1); // sb1:
//带字符串带构造方法
StringBuilder sb2 = new StringBuilder("abc");
System.out.println("sb2: "+sb2+" 字符串长度为:"+sb2.length()); // sb2: a
(二)常用方法
方法 | 描述 |
---|---|
public StringBuffer append(String s) | 将指定的字符串追加到此字符序列。 |
public StringBuffer reverse() | 将此字符序列用其反转形式取代。 |
public delete(int start, int end) | 移除此序列的子字符串中的字符。 |
public insert(int offset, int i) | 将 int 参数的字符串表示形式插入此序列中。 |
insert(int offset, String str) | 将 str 参数的字符串插入此序列中。 |
replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
int capacity() | 返回当前容量。 |
char charAt(int index) | 返回此序列中指定索引处的 char 值。 |
void ensureCapacity(int minimumCapacity) | 确保容量至少等于指定的最小值。 |
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 将字符从此序列复制到目标字符数组 dst。 |
int indexOf(String str) | 返回第一次出现的指定子字符串在该字符串中的索引。 |
int indexOf(String str, int fromIndex) | 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
int lastIndexOf(String str) | 返回最右边出现的指定子字符串在此字符串中的索引。 |
int lastIndexOf(String str, int fromIndex) | 返回 String 对象中子字符串最后出现的位置。 |
int length() | 返回长度(字符数)。 |
void setCharAt(int index, char ch) | 将给定索引处的字符设置为 ch。 |
void setLength(int newLength) | 设置字符序列的长度。 |
CharSequence subSequence(int start, int end) | 返回一个新的字符序列,该字符序列是此序列的子序列。 |
String substring(int start) | 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。 |
String substring(int start, int end) | 返回一个新的 String,它包含此序列当前所包含的字符子序列。 |
String toString() | 返回此序列中数据的字符串表示形式。 |