目录
1.字符串构造
2.String对象的比较
2.1==比较是否引用同一个对象
2. 2boolean equals(Object anObject)
2.3int compareTo(String s) 方法: 按照字典序进行比较
2.4int compareToIgnoreCase(String str)
3.字符串查找
4.2大小写转换
4.3字符串转数组
4.4 格式化
5.字符串替换
5.1把字符串中的某个字符替换成指定字符
5.2 把字符串中的某个字符串替换成指定字符串
5.3替换首个内容
6.字符串拆分
6.1String[] split(String regex)
6.2String[] split(String regex, int limit)
7 字符串截取
7.1String substring(int beginIndex)
7.2String substring(int beginIndex, int endIndex)
8.String trim()
1.字符串构造
String类提供的构造方式非常多,常用的就以下三种:
String str1="wang";
String str3 = new String("123");
char arr[]={'a','b','c'}; String str4 = new String(arr);
字符串的内存储存图(图1-1)
看下面代码回答运行结果
public class Text {public static void main(String[] args) {char arr[]={'a','b','c'};String str1 = new String(arr,1,2);System.out.println(str1);String str2=new String();System.out.println(str2);String str3 ="";System.out.printf(str3);System.out.println(str3.length());String str4=null;System.out.println(str4);}
}
运行结果:
但如果强行这串代码
运行结果:
对str3,str4经行解析:
2.String对象的比较
2.1==比较是否引用同一个对象
String s1 = new String ( "hello" );String s2 = new String ( "hello" );String s3 = new String ( "world" );String s4 = s1 ;System . out . println ( s1 == s2 ); // falseSystem . out . println ( s2 == s3 ); // falseSystem . out . println ( s1 == s4 ); // true
小结:
2. 2boolean equals(Object anObject)
方法:按照字典序比较
String s1 = new String ( "hello" );String s2 = new String ( "hello" );String s3 = new String ( "wello" );System . out . println ( s1 . equals ( s2 )); // trueSystem . out . println ( s1 . equals ( s3 )); // false
解析:
equals 比较: String 对象中的逐个字符虽然 s1 与 s2 引用的不是同一个对象,但是两个对象中放置的内容相同,因此输出 true s1与 s3 引用的不是同一个对象,而且两个对象中内容也不同,因此输出 false
2.3int compareTo(String s) 方法: 按照字典序进行比较
1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
String s1 = new String("abc"); String s2 = new String("ac"); String s3 = new String("abc"); String s4 = new String("abcdef"); System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1 System.out.println(s1.compareTo(s3)); // 相同输出 0 System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,输出长度差值 -3
2.4int compareToIgnoreCase(String str)
String s1 = new String ( "abc" );String s2 = new String ( "ABc" );System . out . println ( s1 . compareToIgnoreCase ( s2 )); // 相同输出 0
3.字符串查找
方法 | 功能 |
char charAt(int index) | 返回 index 位置上字符,如果 index 为负数或者越界,抛出 IndexOutOfBoundsException异常 |
int indexOf(int ch) | 返回 ch 第一次出现的位置,没有返回 -1 |
int indexOf(int ch, int fromIndex) | 从 fromIndex 位置开始找 ch 第一次出现的位置,没有返回 -1 |
int indexOf(String str) | 返回 str 第一次出现的位置,没有返回 -1 |
int indexOf(String str, int fromIndex) | 从 fromIndex 位置开始找 str 第一次出现的位置,没有返回 -1 |
int lastIndexOf(int ch) | 从后往前找,返回 ch 第一次出现的位置,没有返回 -1 |
int lastIndexOf(int ch, int fromIndex) | 从 fromIndex 位置开始找,从后往前找 ch 第一次出现的位置,没有返 回-1 |
int lastIndexOf(String str) | 从后往前找,返回 str 第一次出现的位置,没有返回 -1 |
int lastIndexOf(String str, int fromIndex) | 从 fromIndex 位置开始找,从后往前找 str 第一次出现的位置,没有返 回-1 |
public static void main ( String [] args ) {String s = "aaabbbcccaaabbbccc" ;System . out . println ( s . charAt ( 3 )); // 'b'System . out . println ( s . indexOf ( 'c' )); // 6System . out . println ( s . indexOf ( 'c' , 10 )); // 15System . out . println ( s . indexOf ( "bbb" )); // 3System . out . println ( s . indexOf ( "bbb" , 10 )); // 12System . out . println ( s . lastIndexOf ( 'c' )); // 17System . out . println ( s . lastIndexOf ( 'c' , 10 )); // 8System . out . println ( s . lastIndexOf ( "bbb" )); // 12System . out . println ( s . lastIndexOf ( "bbb" , 10 )); // 3
4.转化
4.2大小写转换
String toUpperCase() | 字符串转大写 |
String toLowerCase() | 字符串转小写 |
这两个函数只转换字母。
String s1 = "wang" ;String s2 = "HELLO" ;// 小写转大写System . out . println ( s1 . toUpperCase ());// 大写转小写System . out . println ( s2 . toLowerCase ());
运行结果:
4.3字符串转数组
String s = "hello" ;// 字符串转数组char [] ch = s . toCharArray ();// 数组转字符串String s2 = new String ( ch );
4.4 格式化
String s = String . format ( "%d-%d-%d" , 2002 , 5 ,2 4 );System . out . println ( s );
运行结果:
5.字符串替换
5.1把字符串中的某个字符替换成指定字符
String str="aa1212bbac"; String str1=str.replace('a','0'); System.out.println(str1);
运行结果:
5.2 把字符串中的某个字符串替换成指定字符串
String str="aa1212bbacbb"; String str2=str.replace("bb","ww"); System.out.println(str2);
运行结果:
5.3替换首个内容
String str="aa1212bbacbb"; String str3=str.replaceFirst("bb","ww"); System.out.println(str3);
运行结果:
6.字符串拆分
6.1String[] split(String regex)
String str="123 0 456 789"; String arr[]=str.split(" "); for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]); }
运行结果:
6.2String[] split(String regex, int limit)
String str="123 0 456 789"; String arr[]=str.split(" ",2); for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]); }
运行结果:
拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义.
1. 字符 "|","*","+" 都得加上转义字符,前面加上 "\\" .2. 而如果是 "\\" ,那么就得写成 "\\\\" .3. 如果一个字符串中有多个分隔符,可以用 "|" 作为连字符 .
String str = "name\\wang*age=21"; String arr1[]=str.split("\\*|\\\\"); for (int i = 0; i < arr1.length; i++) {System.out.println(arr1[i]); }
运行结果:
7 字符串截取
7.1String substring(int beginIndex)
String str="123abcwang"; System.out.println(str.substring(4));
运行结果:
7.2String substring(int beginIndex, int endIndex)
String str="123abcwang"; System.out.println(str.substring(4,7));
运行结果:
1. 索引从 0 开始2. 注意前闭后开区间的写法 , substring(0, 5) 表示包含 0 号下标的字符 , 不包含 5 号下标
8.String trim()
String str = " hello world " ;System . out . println ( "[" + str + "]" );System . out . println ( "[" + str . trim () + "]" );
运行结果:
以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞