一、创建
字符串常量,字符串长度不可变。
1.1 直接创建
语法:String 字符串名 = “字符串内容”;
特点:
(1)用法同基本类型。因为,此处未创建对象。
String str1 = "bjh";
String str2 = "bjh";
String str3 = new String("bjh");
String str4 = new String("bjh");
System.out.println(str1 == str2); // 结果:true。
System.out.println(str3 == str4); // 结果:false。
System.out.println(str1 == str4); // 结果:false。
System.out.println(str1.equals(str2)); // 结果:true。
System.out.println(str3.equals(str4)); // 结果:true。
System.out.println(str1.equals(str4)); // 结果:true。
1.2 构造函数创建
语法:String 字符串名 = new String(“字符串内容”)
注意:此种方式创建了两个对象。
String str = new String("bjh"); // 注意:此种方式创建了两个对象。
System.out.println(str);
1.3 字符数组转换
语法: String 字符串名 = new String(字符数组名)
char[] charstr = { 'b', 'a', 'i', 'd', 'u'};
String str = new String(charstr);
System.out.println(str);
二、长度
2.1 字符串.length()
语法:字符串.length();
System.out.println("123".lenth());
2.2 字符串名.length()
语法:字符串名.length();
String str = new String("123");
System.out.println(str.length());
三、格式化
3.1 printf()
语法:
作用:
String f = "浮点型变量的值为%f,整型变量的值为%d,字符串变量的值为%s"
float floatVar = 1.0f;
int intVar = 2;
String stringVar = "we";
System.out.printf(f, floatVar, intVar, stringVar);
3.2 format()
语法:
作用:
String f = "浮点型变量的值为%f,整型变量的值为%d,字符串变量的值为%s"
float floatVar = 1.0f;
int intVar = 2;
String stringVar = "we";
String fs = String.format(f, floatVar, intVar, stringVar);
System.out.println(fs);
3.3 trim()
作用:去除字符串两端的空格。
适用场景:多用于获取用户输入的字符串。
String str = " 123 ";
String str2 = str.trim();
System.out.println(str2);
四、获取
4.1 知索引
4.1.1 单字符——charAt()
语法:字符串名.charAt(索引);
// 需求:获取第二个字符。
String str = "abcde";
System.out.println(str.charAt(1));
// 结果:b
4.1.2 多字符——substring()
语法一:字符串名.substring(beginindex,endindex);
// 需求:知索引1,3,获取之间的字符,遵循[1,3)。
String str = "abcde";
System.out.println(str.substring(1,3));
// 结果:bc
语法二:字符串名.substring(beginindex,beginindex + length);
// 需求:知索引1,长度为3,获取之间的字符,则遵循[1,1+3)。
String str = "abcde";
System.out.println(str.substring(1,4));
// 结果:bcd。
语法三:字符串名.substring(beginindex);
// 需求:知索引1,获取之后所有字符。
String str = "abcde";
System.out.println(str.substring(1));
// 结果:bcde。
4.2 知字符
语法:字符串名.indexOf(“待查字符串”);
注意:获取第一次出现的索引。
语法:字符串名.lastIndexOf(“待查字符串”);
注意:获取最后一次出现的索引。
// 需求:获取ce第一次出现的索引。
String str = "abcedecedece";
System.out.println(str.indexOf("ce"));
// 结果:2。
// 需求:获取ce最后一次出现的索引。
String str = "abcedecedece";
System.out.println(str.lastIndexOf("ce"));
// 结果:10。
五、增加
5.1 最后(前)面增加——拼接
5.1.1 +
语法:字符串名 + 字符串名 + 字符串名;
String str1 = new String("123");
String str2 = new String("45");
str1 = str1 + str2;
System.out.println(str1);
5.1.2 concat
语法:字符串名.concat(字符串名);
缺点:一次只能操作两个字符串。
String str1 = new String("123");
String str2 = new String("45");
str1.concat(str2);
System.out.println(str1);
5.2 任意位置增加
参见《Java学习-常用类(StringBuilder)》
StringBuilder str = new StringBuilder("123");
str.insert(1,"a");
Stystem.out.println(str);
六、替换
6.1 替换全部——replace
语法:字符串名.replace(原字符,新字符);
语法:字符串名.replaceAll(正则表达式,新字符);
String str = "ab123ca";
System.out.println(str.replace("a","A")); // 结果:Ab123cA
System.out.println(str.replaceAll("a","A")); // 结果:Ab123cA
System.out.println(str.repalceAll("\\d","A")); // 结果:abAAAca。
6.2 替换第一个——replaceFirst
语法:字符串名.replaceFirst(正则表达式,新字符);
String str = "12a3a";
System.out.println(str.replaceFirst("a","A")); // 结果:12A3a
System.out.println(str.replaceFirst("\\d","A")); // 结果:A2a3a
6.3 替换指定位置
思路:先转化为数组,再替换,再转换为字符串。
// 替换第二个字符。为A。1Aa3a。
String str = "12a3a";
char[] arr1 = str.toCharArray();
System.out.println(Arrays.toString(arr1));
arr1[1] = 'A';
System.out.println(Arrays.toString(arr1));
String str2 = new String(arr1);
System.out.println(str2);
七、删除
7.1 知字符——replace
参见 六、替换
String str = "123a123a";
System.out.println(str.replace("a",""));
7.2 知索引
思路:先转化为数组,再删除,再转换为字符串。
// 替换第二个字符。为A。1Aa3a。
public static void main(String[] args){
String str = "12a3a";
System.out.println(delChar(str,1));
}
public static String delChar(String str,int index){
char[] arr1 = str.toCharArray();
char[] arr2 = new char[arr1.length-1];
int j = 0;
for(int i = 0; i < arr1.length; i++){
if( i == index){
continue;
}else{
arr2[j] = arr1[i];
j++;
}
}
return new String(arr2);
}
八、拆分——split()
拆分结果:字符串数组。
8.1 全部拆分
语法:字符串名.split(正则表达式);
String str = "Aabcedaefagce";
String[] arr1 = str.split("a");
for (String s: arr1){
System.out.println(s);// 结果:A bced ef gce
}
8.2 限制次数拆分
语法:字符串名.split(正则表达式,拆分次数);
String str = "Aabcedaefagce";
String[] arr2 = str.split("a",2);
for (String s: arr2){
System.out.println(s);// 结果:A bcedaefagce
}
九、比较
9.1 equals()或==
equals:只比较内容是否相等。
==:即比较内容是否相等,又比较内存地址是否相等。
语法:字符串名.equals(待比较字符串名);
语法:字符串名==待比较字符串名;
String str1 = "bjh";
String str2 = "bjh";
String str3 = new String("bjh");
String str4 = new String("bjh");
System.out.println(str1 == str2); // 结果:true。
System.out.println(str3 == str4); // 结果:false。
System.out.println(str1 == str4); // 结果:false。
System.out.println(str1.equals(str2)); // 结果:true。
System.out.println(str3.equals(str4)); // 结果:true。
System.out.println(str1.equals(str4)); // 结果:true。
9.2 compareTo()
语法:字符串名.compareTo(待比较字符串名);
注意:考虑大小写。
语法:字符串名.compareToIgnoreCase(待比较字符串名);
注意:不考虑大小写。
String str = "abcedefgce";
// 包含时,且小于,返回1
System.out.println(str.compareTo("a"));// 结果:1
// 等于时,返回0
System.out.println(str.compareTo("abcedefgce"));// 结果:0
// 被包含时,即大于时,返回-1
System.out.println(str.compareTo("abcedefgcem"));// 结果:-1
// 无关系时,返回字符串第一个字母和m的ASCII码的差值。
System.out.println(str.compareTo("m"));// 结果:-12。
9.3 startsWith()或endsWith()
语法:字符串名.startsWith(待比较字符串名);
语法:字符串名.endsWith(待比较字符串名);
String str = "abcedefgce";
String str2 = "abcedefgce";
System.out.println(str.startsWith("ab")); // 开头为true,不开头为false。
System.out.println(str.endsWith("ce")); // 结尾为true,不结尾为false。
9.4 matches()
参见《Java学习-正则表达式》
语法: 字符串名.matches(正则表达式);
十、字母大小写互转
10.1 转大写——toUpperCase()
String str = "abcedaefagce";
String strA = str.toUpperCase();
System.out.println(strA);
10.2 转小写——toLowerCase()
String str = "abcedaefagce";
String strA = str.toUpperCase();
String stra = strA.toLowerCase();
System.out.println(stra);
十一、与数组互转
11.1 转化为数组
11.1.1 转换为字符数组——toCharArray()
语法: 字符串名.toCharArray();
String str = "abc,eda,efa,gce";
char[] arr2 = str.toCharArray();
for (char s: arr2){
System.out.println(s);// 结果:a b c , e d a , e f a , g c e
}
11.1.2 根据字符转化为字符串数组——split()
语法:字符串名.split(“分割符”);
String str = "abc,eda,efa,gce";
String[] arr1 = str.split(",");
for (String s: arr1){
System.out.println(s);// 结果:abc,eda,efa,gce
}
11.2 数组转化为字符串
11.2.1 字符串数组——拼接转化
String[] arr1 = {"23","34","23"};
String str = "";
for(int i = 0; i < arr1.length; i++){
str = str + arr1[i];
}
11.2.2 字符数组——new String(charArray)
char[] arr1 = {'1','2','3'};
String str = new String(arr1);
十二、与数字互转
12.1 字符串转数字——parse数据类型()
语法:数据类型类.parse数据类型(字符串)
String str = "345";
System.out.println(Integer.parseInt(str) + 1); // 结果:346。
12.2 数字转字符串——toString()
语法一:数字名.toString();
语法二:数字名 + “”;
语法三:String.valueOf(数字名);
Integer num = 345;
System.out.println(num.toString());
System.out.println(num + "");
System.out.println(String.valueOf(num));