String是一个引用数据类型默认为null;
String 为final类型不可更改,不能被继承;
基本类型与String结合都会转换为String类型;
1、使用String类的length()方法可获得声明的字符串对象的长度。
//空格也被视为字符参与长度计算 String str = "We are students"; int size = srt.length();//此时size的值为15;
length()方法也可以用于数组输出时控制for循环
//空格也被视为字符参与长度计算 int [] a = {1,2,3,4,5}; for(int i = 0; i<a.length; i++) { System.out.print(a[i]);//输出结果为:12345 }
indexOf(String s)
该方法用于返回参数字符s在指定字符串中首次出现的索引位置。当调用字符串的indexOf()方法时,会从当前字符串开始位置搜索s的位置;若果未检索到该字符字符串s,该方法的返回值为-1.
//索引是从0到length()-1。 String str = "We are students"; int size = str.indexOf("a");//size的值为3
该方法与indexOf()方法用法相同,但查询的方向不同,lastIndexOf()方法是从最后一次出现的索引位置开始查找。
注意:
lastIndexOf()方法中参数是空字符串“”,空格除外,则返回的结果与调用length()方法返回结果相同。
该方法可将指定索引处的字符返回。
String str = "We are students"; char mychar = str.charAt(5);//mychar变量的值为字符r。
该方法返回的是从指定的索引处开始截取直到该字符串的结尾处。
//substring(int beginIndex) String str = "We are students"; String substr = str.substring(5);//此时substr值为e students
该方法返回的是从某一个索引处开始截取至某一个索引处结束。
//substring(int beginIndex , int endIndex) String str = "We are students"; String substr = str.substring(5,12);//此时substr值为e stude
该方法返回字符串的副本,忽略前导空格和尾部空格。
String str = " Students "; String substr = str.trim();//此时substr的值为Students
该方法将指定的字符或字符串替换成指新的字符或字符串。
//replace(char newChar , char oldChar); String str = "java project"; String substr = str.replace("j" , "J");//此时substr的值为Java proJect //oldChar在字符串中多次重复出现,该方法会将全部的oldChar替换成newChar
注意:
要替换的字符oldChar的大小写要与元字符中的大小写保持一致,否则会不能成功的替换。
String str = "java project"; String substr = str.replace("P" , "t");//此时就会替换失败
一、参数不同
replace的参bai数是char和CharSequence,既可以支持字du符的替换,也zhi支持字符串的替换。
replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("d", “*”)把一个字符串所有的数字字符都换成星号。
二、替换结果不同
replace只替换第一个出现的字符(受javascript的影响),replaceAll替换所有的字符,简而言之,replace用新串序列替换旧串序列,而replaceAll是用新串替换与前面正则表达式相匹配的位置的字符串。
三、用法不同
replaceAll支持正则表达式,replace不支持。
String s = "e ccccc l"; System.out.println(s.replaceAll(" |c", ""));//输出结果为el System.out.println(s.replaceAll(" ", ""));//输出结果为ecccccl System.out.println(s.replace(" ", ""));//输出结果为ecccccl System.out.println(s.replace(" |c", ""));//输出结果为e ccccc l System.out.println(+s.replaceAll(" +|c", ""));//输出结果为el System.out.println(+ s.replace(" +", ""));//输出结果为e ccccc l
该方法用于判定当前字符串对象的前缀是否为参数指定的字符串。
该方法用于判定当前字符串对象的后缀是否为参数指定的字符串。
String num1 = "22045612"; String num2 = "21304578"; boolean b = num1.startsWith("22");//b的值为true boolean b1 = num2.endsWith("78");//b1的值为true boolean b2 = num1.startsWith("30");//b2的值为false boolean b3 = num2.endsWith("45");//b3的值为false
如果两个字符串具有相同的字符和长度,则用该方法进行比较是返回true
该方法与equlas()方法用法相同,但equlas()方法区分大小写,而equalslgnoreCase()忽略大小写。
String s1 = "abc; String s2 = "abc"; String s3 = "ABC" boolean b = s1.equlas(s2);//b的值为true boolean b1 = s1.equalslgnoreCase(s3)//b1的值为true boolean b2 = s1.equlas(s1);//b2的值为false boolean b3 = s1.equalslgnoreCase(s2)//b1的值为true
注意: 在比较除String类的字符或数字是不能用equals()方法,不是String类的是equals()会比较他们的地址。
compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.
String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdfg"; String s4 = "1bcdfg"; String s5 = "cdfg"; System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1) System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3) System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48) System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
注意
compareTo()方法只有在equals(Object)方法返回true是才返回0.
将String转换为小写。如果没有用该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原来的字符串中每个改进行小写转换的字符都转换成等价的小写字符。字符长度不变。
将String转换为大写。如果没有用该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原来的字符串中每个改进行大写转换的字符都转换成等价的大写字符。字符长度不变。
String str = "abc ABC"; String newstr1 = str.toLowerCase();//newstr1的值为abc abc String newstr2 = str.toUpperCase();//newstr2的值为ABC ABC
该方法可根据给定的分割符对字符串进行分割
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数
String str ="192.18.0.1"; // 按照"."进行分割 String[] firstArray = str.split("//.");//firstArray字符数组的值为:{192,168,0,1} // 按照"."进行两次分割 String[] secondArray = str.split("//.", 2);//secondArray字符数组的值为:{192,168.0.1}
字符串中包含相等的字符或字符串时,如果包含返回true,如果不包含返回false。
public static void main(String[] args) { String str1 = "hello,world!", str2 = "what?"; CharSequence a = "llo"; boolean b = str1.contains(a); System.out.println("第一条返回结果是 : " + b); //返回结果为true b= str2.contains("!"); System.out.println("第二条返回结果是: " + b); //返回结果为false }
与 String 类不同的是,StringBuffer 类的对象能够被多次的修改,并且不产生新的未使用对象,还保障了线程安全。
//StringBuffer只能用new的方法创建新的对象 StringBuffer sbf = new StringBuffer();//无初始值 StringBuffer sbf = new StringBuffer(""abc);//初始值为"abc" StringBuffer sbf = new StringBuffer(32);//初始容量为32个字符
改方法用于字符转生成器的内容追加。通过该方法的多个重载形式,可以实现接受任何类型的数据,如 int、boolean、char、String、double或者另一个字符串生成器。
//insert(int offset,age) StringBuffer sbf = new StringBuffer("hello"); sbf.append("world");//此时sbf的内容为:hello world
该方法用于向字符串生成器中的指定位置插入数据。通过该方法的多个重载形式,可以实现向字符串生成器中插入int、boolean、char、float、double等基本数据类型或其他对象。
//insert(int offset,age) StringBuffer sbf = new StringBuffer("hello"); sbf.insert(5,"world");//此时sbf的内容为:hello world
移除此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引 end-1处的字符,如果不存在这种字符,则一直到序列尾部。如果start与end相等,则不发生任何更改。
//delete(int start,int end) StringBuffer sbf = new StringBuffer("StringBuffer"); sbf.selete(5,10);//此时sbf的内容为:Strinr
该方法可以将字符串反序输出。
StringBuffer sbf = new StringBuffer("StringBuffer"); sbf.reverse();//此时sbf的内容为:reffuBgnirtS