1.概述
String 类适用于描述字符串事务。提供了多种对字符串进行操作的方法。
> 字符串的最大的特点:一旦被初始化就不能被改变。
2.常见的操作方法:
2.1 获取:
1 public class StringText1 { 2 public static void main(String srgs[]) 3 { 4 // str 是一个类类型变量,"abc"是一个对象。 5 String str = "hello java!" ; 6 // str 和 str1 的区别在于:str 内存中有一个对象,而str1 内存中有两个对象。 7 String str1 = new String("hello java!") ; 8 9 sop(str.length()) ; 10 for(int i = 0 ; i < str.length() ; i ++ ) 11 sop(str.charAt(i)) ; 12 sop(str.indexOf('a')) ; 13 sop(str.indexOf('a',7)) ; 14 15 sop(str.indexOf("java")) ; 16 sop(str.lastIndexOf('a')) ; 17 } 18 // 打印函数: 19 public static void sop(Object obj) 20 { 21 System.out.println(obj); 22 } 23 }
1、字符串中包含的字符数,即字符串的长度; int length() ;
注意:String 类的 length() 是一个方法; 而 char 类型数组调用的length , 是属性。
2、 根据位置获取位置上某个字符。 char charAt(int index) ; index 是下标。
3 、根据字符获取该字符在字符串中的位置。
int indexOf(int ch) ; 返回的是 ch 在字符串中第一次出现的位置。其中 ch 是字符的ASCII 码。
int indexOf(int ch , int fromIndex) ; 从fromIndex 指定位置开始,在字符串中第一次出现的位置.
int indexOf(String st) ; 返回的是 st 在字符串中第一次出现的位置。
int indexOf(String st , int fromIndex) ; 从fromIndex 指定位置开始,在字符串中第一次出现的位置.
int lastIndexOf(int ch) ; 返回指定字符在此字符串中最后一次出现处的索引。
2.2 判断:
1 public class String2 { 2 public static void main(String args[]) 3 { 4 String str1 = "hello java!" ; 5 String str2 = new String("hello java!") ; 6 7 System.out.println(str1.equals(str2)); 8 System.out.println(str1 == str2); 9 } 10 }
上面代码第7行和第8行打印结果是不一样的。用equals 方法判断的结果是true , 因为 String 类 重写了Object类的equals 方法,是equals 方法有独特的判断方法。
判断常用的方法有:
1、判断字符串中是否包含某一个字串。
boolean contains(CharSequence cs) ;
2、字符串中是否为空:
boolean isEmpty() ; 其原理就是判断字符长度是否为0。
3、判断字符串是否以指定类容开头:
boolean startsWith(String str) ;
4、判断字符串是否以指定类容结尾:
boolean endsWith(String cs) ;
5、判断字符串内容是否相等:
boolean equals(Obeject obj) ;
6、 判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase(String str)
2.3 转换
1 public class String3 { 2 public static void main(String args[]) 3 { 4 char[] ch = {'h','e' ,'l' ,'l' ,'o' ,' ' , 'j' , 'a' , 'v' ,'a'} ; 5 // 构造函数转换: 6 // 将字符数组转换成字符串: 7 String str1 = new String (ch) ; 8 System.out.println(str1); 9 // 从ch[] 下标 6开始,后的4个字符 ,转换成字符串。 10 String str2 = new String (ch,6,4) ; 11 System.out.println(str2); 12 13 // 静态方法: 14 // 将字符数组转换成字符串: 15 String str3 = String.copyValueOf(ch) ; 16 System.out.println(str3); 17 // 从ch[] 下标 6开始,后的4个字符 ,转换成字符串。 18 String str4 = String.copyValueOf(ch,0,5) ; 19 System.out.println(str4); 20 21 String str = "hello java" ; 22 // 将字符串转换成字符数组; 23 char[] ch1 = str.toCharArray() ; 24 for(int i = 0 ; i < ch1.length ; i ++) 25 System.out.print("'"+ch1[i] +"'"); 26 System.out.println(); 27 } 28 }
1、将字符数组转换成字符串:
构造方法:String(char[] ch)
String(char[] ch , int offset , int count ) ; 将字符数组中的一部分转成字符串。
其中:offset 参数是子数组第一个字符的索引;count 参数指定子数组的长度。如果从offset 后面的字符数小于count 则会异常。
注意:该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。
2、将字符串转换成字符数组。
char[] toCharArray() ;
3、将字节数转成字符串。
构造方法:String(byte[] by) ;
String(byte[] by , int offset , int count) ;
4、将字符串转成字节数组。
byte[] getByte() ;
5、将基本数据类型转换成字符串。
static String valueOf(基本数据类型) .........
2.4 替换和切割
String replace(char oldChar , char newChar) ; 返回一个新的字符串,它是通过用 newChar
替换此字符串中出现的所有 oldChar
得到的。
String[] split(String regex) ; 根据给定正则表达式的匹配拆分此字符串。
public class String4 { public static void main(String args[]) { String str = "hello,java,String" ; System.out.println(str); // 替换字符 String str1 = str.replace(',', ' ') ; System.out.println(str1); // 切割 String[] str2 = str.split(",") ; for(int i = 0 ; i < str2.length ; i++ ) System.out.println(str2[i]); } }
2.5.子串、转换,去除空格和比较。
1、子串:获取字符串中的一部分。
String substring(int begin) ; 从指定位置开始到结尾。如果角标不存在,或出现字符串角标异常。
String substring(int begin , int end) ; 包含开头,不包含尾。
2、将字符串大小写转换:
String toUpperCase() ; 将字符串转成大写。
String toLowerCase() ; 将字符串转成小写。
3、将字符串两端的多个空格去除: String trim() ;
4、对两个字符串进行自然顺序的比较。 int compareTo(String str) ; 当另一个字符串大于该字符串时,返回负数;相等,则返回0;否则返回正数。
1 public class String5 { 2 public static void main(String args[]) 3 { 4 String str = "hello java " ; 5 // 获取字符串中的一部分: 6 System.out.println(str.substring(0, 6)); 7 System.out.println(str.toUpperCase()); 8 String str1 = " HELLO WORLD " ; 9 System.out.println(str1.toLowerCase()); 10 // 除去字符串两端的多个空格: 11 System.out.println(str1.trim()); 12 String str2 = "hello world " ; 13 // 对比两个字符串进行自然顺序的比较 14 System.out.println(str.compareTo(str2)); 15 System.out.println('j'- 'w'); 16 } 17 }
在第14行和第15行打印的结果是一样的。