一、String类常用构造方法:
1.
String s = new String("good"); //双引号,因为单引号为char
等价于:
char a[] = {'g','o','o','d'};
String s = new String(a);
2. 提取字符数组a中的一部分创建一个字符串对象
String(char a[], int offset, int length)
char a[] = {'g','o','o','d'};
String s = new String(a,2,2); //s为“od”
3. 通过字符串常量的引用赋值
String str1, str2;
str1 = "We are one";
str2 = "We are one";
注意:此时str1与str2引用相同的字符串常量,因此具有相同的实体。内存示意图如下:
二、String类常用操作及方法
1、连接多个字符串
String s = s1 + " " + s2;
2、连接其他数据类型
如果将字符串同其他基本数据类型进行连接,会将这些数据直接转换成字符串
int booktime = 4;
String s = "We spent " + booktime + " hours on this book";
3、获取字符串长度
str.length();
4、字符串查找
1)indexOf() 方法返回搜索的字符或字符串首次出现的位置
str.indexOf(substr); //substr为要搜索的字符串
2)lastIndexOf() 方法返回搜索的字符或字符串最后一次出现的索引的位置
str.lastIndexOf(substr);
注意:如果lastIndexOf() 方法中的参数是空字符串""(没有空格),则返回的结果与调用该字符串length()方法的返回结果相同
5、获取指定索引位置的字符
str.charAt(int index);
6、获取子字符串
1)substring(int beginIndex) 方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串
str.substring(int beginIndex); //在字符串中空格占用一个索引位置
2) substring(int beginIndex, int endIndex) 方法返回从beginIndex索引位置开始到(endIndex - 1)位置的子串
str.substring(int beginIndex, int endIndex); //截至到endIndex-1处
7、去除前导空格和尾部空格
str.trim(); //去除点到空格和尾部空格,不去除中间空格
String str = " I love Java ";
System.out.println(str.trim()); //结果为"I love Java"
8、字符串替换
replace() 方法可实现将指定的字符或字符串替换成新的字符或字符串
str.replace(char oldChar, char newChar);
String str = "address";
String newstr = str.replace("a", "A"); //结果为"Address"
注意:如果要替换的字符oldChar在字符串中重复多次出现,replace()方法会将所有的oldChar全部替换成newChar
9、判断字符串的开始与结尾
startsWith() 方法与 endsWith() 方法分别用于判断字符串是否以指定的内容开始或结尾。
返回类型为boolean类型
str.startsWith(String prefix);
str.endsWith(String suffix);
String num1 = "22034";
String num2 = "34578";
boolean b1 = num1.startsWith("22"); //b1为true
boolean b2 = num2.endsWith("56"); //b2为false
10、判断字符串是否相等
对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。
即使两个字符串的内容相同,两个队下个的内存地址也是不同的(如果String对象是new出来的,而不是字符串常量的引用),使用比较运算符仍然会返回false。
String tom = new String("I am a student");
String jerry = new String("I am a student");
boolean b = (tom == jerry); //b值为false
内存示意图为:
1)equals() 方法,如果两字符串具有相同的字符和长度,则返回true
str.equals(String otherstr);
2) equalsIgnoreCase() 方法,不区分大小写,其他与equals()相同
str.equalsIgnoreCase(String otherstr);
11、按字典顺序比较两个字符串
compareTo() 方法按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值
若String对象位于参数字符串之前,比较结果返回一个负数;若之后,返回一个正数;若两字符串相等,返回结果为0
str.compareTo(String otherstr);
12、字母大小写转换
1)toLowerCase() 方法将String转换为小写
str.toLowerCase();
2) toUpperCase() 方法将String转换为大写
str.toUpperCase();
注意:数字或非字符不受影响
13、字符串分割
使用split() 方法可以使字符串按制定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中
1)split(String sign) 方法可根据给定的分隔符对字符串进行拆分
str.split(String sign);
2)split(String sign, int limit) 方法可根据给定的分隔符对字符串进行拆分,并限定拆分次数
str.split(String sign, int limit);
String str = "192.168.0.1";
//按照“.”进行分割,使用转义字符“\\.”
String[] firstArray = str.split("\\.");
String[] secondArray = str.split("\\.",2);
for(String a : firstArray){
System.out.print("[" + a + "]");
} //输出为[192][168][0][1]
for(String a : secondArray){
System.out.print("[" + a + "]");
} //输出为[192][168.0.1]
格式化字符串
和 正则表达式
和 字符串生成器
后续再补……