String类
字符串的本质是一个字符的数组。
常量池:只要已将存在的就不会在创建了
String a="aaa"(看到“”就表示字符串本身对象) 有就不会创建,使用之前的内容和地址
String s4 = new String("abc");会创建 因为new 不进常量池 会匹配常量池中相同内容的地址
例:
1 public class Demo01 { 2 public static void main(String[] args) { 3 String str="aaa"; 4 str="bbb"; 5 System.out.println("str="+str); 6 int a=1; 7 a=2; 8 System.out.println("a="+a); 9 10 11 String s="abc"; 12 System.out.println("s="+s); 13 String s2=new String("abc"); 14 System.out.println("s2="+s2); 15 } 16 }
如图所示:
常用构造方法
1.获取字符串长度:str.length()
2.截取打印字符串:str.substring(7); str.substring(2,6);
3.判断字符串开头结尾。返回值true或false
public class Demo03 { public static void main(String[] args) { String str="I LOVE LUNENG"; //判断字符串开头结尾 boolean flag=str.startsWith("a"); System.out.println(flag); System.out.println(str.endsWith("G")); } }
4.是否包含另一个字符串:str.contains("LUNENG")
5.第一次出现该字符串的索引,没有就是-1 :str.indexOf("L")
6.转成一个字符数组。或者字节数组。
public class Demo03 { public static void main(String[] args) { String str="I LOVE LUNENG"; byte[] ab=str.getBytes(); for(int i=0;i<ab.length;i++){ System.out.print(ab[i]+","); } System.out.println(str.getBytes()); char[] aa=str.toCharArray(); for(int i=0;i<aa.length;i++){ System.out.print(aa[i]+","); } System.out.println(str.toCharArray()); } }
7.比较内容是否相等:str.equals(str2) str.equalsIgnoreCase(str2);//忽略大小写
8.替换:str2.replace("i love luneng"," HAHA")
应用:
1 public class Demo04 { 2 public static void main(String[] args) { 3 //获取指定字符串中,大写字母、小写字母、数字的个数。 4 String str="Zhai113"; 5 int big=0; 6 int small=0; 7 int num=0; 8 for(int i=0;i<str.length();i++){ 9 char a=str.charAt(i); 10 if(a>='A'&&a<='Z'){ 11 big++; 12 }else if(a>='a'&&a<='z'){ 13 small++; 14 }else{ 15 num++; 16 } 17 } 18 System.out.println(big); 19 System.out.println(small); 20 System.out.println(num); 21 System.out.println("========================="); 22 //第一个字母转换成大写,其他字母转换成小写 23 String str2="oRAcLE"; 24 String a1=str2.substring(0,1); 25 String a2=str2.substring(1); 26 System.out.println(a1.toUpperCase()+a2.toLowerCase()); 27 System.out.println("========================="); 28 //查询出现“java”的次数。 29 String str3="hellojava,nihaojava,javazhenbang"; 30 int count=0; 31 int index=-1; 32 while(str3.indexOf("java")!=-1){ 33 count++; 34 str3=str3.substring(str3.indexOf("java")+1); 35 36 } 37 System.out.println(count); 38 } 39 }
如图:
StringBuffer类
定义:
StringBuffer str=new StringBuffer("你好啊");
常用方法:
1.相字符串缓冲区中添加字符串
str.append("java").append(18).append(true);
2.删除指定小字符串
str.delete(3, 6);//包头不包尾
3.插入字符串
str.insert(3, "jack");
4.替换字符串
str.replace(3, 8, "tom");
5.反转字符串
str.reverse();
应用:
public static String toString_2(int[] arr) { //{34,12,89,68}变 [34,12,89,68] StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; i < arr.length; i++) { if(i!=arr.length-1){ sb.append(arr[i]+","); }else{ sb.append(arr[i]+"]"); } } return sb.toString(); }