String类的特点:字符串对象一旦被初始化就不会被改变
String s="abc" 不等于 String s=new String("abc") 前者是在字符串常量池中创建一个字符串对象,后者是在堆内存中创建两个对象,一个new 一个是字符串对象
构造函数
1.将字节数组变成字符串
byte [] arr={97,66,67,68} String s=new String(arr) //结果 s=aBCD 这是根据ASCII码表的十进制数得到的对应字符 获取指定的字符串 String t=new String(arr,1,3) //结果 t=BCD 第二个参数:开始获取的位置 第三个参数:获取的个数
2.将字符数组变成字符串
char[] arr={'w','a','p','q'} String s=new String(arr) //结果 s=wapq 获取指定的字符串 String t=new String(arr,1,3) //结果 t=apq
一般方法
一:获取
1.获取字符串的个数(长度)
String str="bcdhubcds"; System.out.println(str.length()); //结果 9
2.根据位置获取字符
String str="bcdhubcds"; System.out.println(str.charAt(3)); //结果 h
3.获取在字符串中第一次出现的位置,找不到返回-1
String str="bcdshubcds"; System.out.println(str.indexOf('c')); //1 System.out.println(str.indexOf('c',3)); //从指定位置角标3开始查 结果7 System.out.println(str.indexOf("ds")); //2 System.out.println(str.indexOf("ds",5)); //8
4.获取在字符串中最后一次出现的位置,找不到返回-1
String str="bcdshubcds"; System.out.println(str.lastIndexOf('c')); //7 System.out.println(str.lastIndexOf('c',5)); //从第五个位置往前查找c最后出现的位置 结果1 System.out.println(str.lastIndexOf("ds")); //8 System.out.println(str.lastIndexOf("ds",5)); //2
5.获取字符串中一部分字符串
String str="bcdshubcds"; System.out.println(str.substring(3)); //从第角标3到结束 结果:shubcds System.out.println(str.substring(3,6));//从第角标3开始到角标5结束,不包含角标6 结果:shu
二:转换
1.将字符串变成字符串数组(字符串切割)
String s="张三,李四,王五"; String[] arr=s.split(","); //如果涉及到正则需要进行转意 for (int i=0;i<arr.length;i++){ System.out.print("arr["+i+"]="+arr[i]+" "); //结果:arr[0]=张三 arr[1]=李四 arr[2]=王五 }
2.将字符串变成字符数组
String s="张三,李四,王五"; char[] arr=s.toCharArray(); for (int i=0;i<arr.length;i++){ System.out.print("arr["+i+"]="+arr[i]+" "); //结果:arr[0]=张 arr[1]=三 arr[2]=, arr[3]=李 arr[4]=四 arr[5]=, arr[6]=王 arr[7]=五 }
3.将字符串变成字节数组
String s="ab"; byte[] arr=s.getBytes();//查ASCII码表 for (int i=0;i<arr.length;i++){ System.out.print("arr["+i+"]="+arr[i]+" "); //结果:arr[0]=97 arr[1]=98 }
4。将字符串中的字母转换大小写
String s="abcfSAGccGP"; System.out.println(s.toUpperCase());//大写 结果:ABCFSAGCCGP System.out.println(s.toLowerCase());//小写 结果:abcfsagccgp
5.将字符串中的内容替换
String s="abcf"; System.out.println(s.replace('a','v'));//结果:vbcf System.out.println(s.replace("ab","tt"));//结果:ttcf
6.将字符串两端的空格去除
String s=" a b cf "; System.out.println(s.trim());//结果:a b cf
7.将字符串链接
String s="as"; System.out.println(s.concat("qq"));//结果:asqq 等效于加号
三:判断
1.比较两个字符串内容是否相同
String s="as"; String str="As"; System.out.println(s.equals(str));//结果:false 重写了Object中的方法 System.out.println(s.equalsIgnoreCase(str));//结果:true 忽略大小写比较
2.字符串中是否包含指定字符串
String s="asfrizxzc"; System.out.println(s.contains("riz"));//结果:true
3.判断字符串是否以指定字符串开头或结尾
String s="asfrizxzc"; System.out.println(s.startsWith("ad"));//结果:false System.out.println(s.endsWith("zc"));//结果:true
4.按字典顺序比较两个字符串
String s="ac"; System.out.println(s.compareTo("ab"));//结果:1 等于返回0,小于返回小于0的数,大于返回大于0的数