Java中String、StringBuffer用法总结
一.创建String对象
String str=new String()//字符串中无内容
String s=new String("we are students");//字符串中有内容
String类还有两个较常用的构造方法
(1) String(char a[])用一个字符数组a创建一个String对象。例如:
char[] a={'J','a','v','a'};
String s=new String(a);
上述过程相当于
String s=new String("Java");
(2) String(char a[ ] , int startIndex , int count)提取字符数组a中的一部分字符创建一个String对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数
char a[]={'我','们','是','学','生'};
String s=new String(a,2,3);
2.创建字符串数组
String [] str = new String [20];//20为字符串数组长度
二、String类的常用方法
1、length()方法用来获取一个String对象的字符序列的长度
String str="abccc";
int l=str.length();
2、equals(String s)方法比较当前对象的字符序列是否与参数s指定的String对象的字符序列相同
String str="你";
String str1="好";
String str2="你";
System.out.println(str.equals(str1));//false
System.out.println(str.equals(str2));//true
3、 startsWith() 、 endsWith()判断当前String对象的字符序列前缀或后缀是否是参数指定的String对象s的字符序列
String str="天干物燥,小心火烛";
String str1="天气预报,阴转小雨";
System.out.println(str1.startsWith("天气"));//true
System.out.println(str.startsWith("天气"));//false
System.out.println(str.endsWith("小雨"));//false
System.out.println(str1.endsWith("小雨"));//true
4、compareTo(String s),按字典序与参数指定的String对象s的字符序列比较大小。如果当前String对象的字符序列与s的相同,该方法返回值0;如果大于s的字符序列,该方法返回正值;如果小于s的字符序列,该方法返回负值
String str="abcde";
System.out.println(str.compareTo("boy"));//-1
System.out.println(str.compareTo("aba"));//2
System.out.println(str.compareTo("abcde"));//0
按字典序比较两个String还可以使用compareToIgnoreCase(String s)方法,该方法对比时不区分大小写
5、contains(String s)判断当前String对象的字符序列是否包含参数s的字符序列
String str="abcde";
System.out.println(str.contains("bcd"));//true
System.out.println(str.contains("bcde"));//true
System.out.println(str.contains("bcc"));//false
6、indexOf(String s)和lastIndexOf(String s)从当前String对象的字符序列的0索引位置开始检索首次或最后一次出现s的字符序列的位置,并返回该位置,如果没有检索到,返回值为-1;indexOf(String s,int startpoint)方法是一个重载方法,参数startpoint的值用来指定索引的开始位置
String str="I am a good girl";
System.out.println(str.indexOf("o"));//8
System.out.println(str.lastIndexOf("o"));//9
System.out.println(str.indexOf("good",2));//7
7、substring(int startpoint)复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列;substring(int start,int end)复制从start位置到end位置的字符序列
String str="abccc";
String s1 = str.substring(1); //返回一个新字符串bccc,内容为指定位置开始到字符串末尾的所有字符
String s2 = str.substring(2, 4);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符
8、trim()当前String对象的字符序列去掉前后空格的字符序列
String str=" I am a good girl ";
System.out.println(str.trim());
三、字符串的并置
String对象可以用’+'进行并置运算,即首尾相接得到一个新的String对象。例如:
String str="你";
String str1="好";
String s;
s=str+str1;
四、字符串拆分与拼接(split AND append)
//String str="nowcoder. a am I";
String[] str1 =str.split(" ");//以空格拆分
StringBuilder str2= new StringBuilder();//StringBuilder是一个字符拼接的工具类
int j=0;
for(int i=str1.length-1;i>=0;i--){
str2.append(str1[i]+' ');
}
return str2.toString().trim();//toString()转换为字符串,trim()去掉两边的空格
五、字符串与基本数据的相互转化
1、Integer.parseInt(String s)将由“数字”字符组成的字符序列转化为int型数据
int x;
String str="888";
x=Integer.parseInt(str);
2、String.valueOf()将数值转化为String对象
String str=String.valueOf(1234.567);
六、对象的字符串表示
1、toString()获得该对象的字符串表示
String s="adsd";
String str=s.toString();
七、字符串与字符数组与字节数组
1、toCharArray()将字符串转成一个字符数组
String str = "abccc";
char[] chs = str.toCharArray();
2、getChars(int start,int end,char c[],int offset)将当前String对象的一部分字复制到参数c指定的数组中,将字符序列中从start到end-1位置上的字符复制到c中,并从数组c的offset处开始存放这些字符
注意:必须保证数组c能容纳下要被复制的字符
String s="我爱学习lalala";
char[]a=new char[4];
s.getChars(0,4,a,0);
System.out.println(a);//我爱学习
3、String(byte[],int offset,int length)用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节,构造一个String对象
byte d[] = "abcdefgh".getBytes();
System.out.println(d.length);//8
String s=new String(d,6,2);
System.out.println(s);//gh
s=new String(d,0,6);
System.out.println(s);//abcdef
4、Integer.toBinaryString()将字符串转成一个二进制
String str=Integer.toBinaryString(n);//数字转换为二进制字符串
八、StringBuffe类的常用方法
1、append(String s)将String对象s的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用
StringBuffer str=new StringBuffer();
str.append("I am a good girl");
System.out.println(str);//I am a good girl
2、StringBuffer append(int n)将int型数据n转化为String对象
StringBuffer str=new StringBuffer();
str.append("888");
System.out.println(str);//888
3、char charAt(int n)得到StringBuffer对象的字符序列位置n上的字符
StringBuffer str=new StringBuffer("I am a good girl");
System.out.println(str.charAt(3));//m
4、setCharAt(int n,char ch)将当前StringBuffer对象的字符序列位置n处的字符用参数ch指定的字符替换
StringBuffer str=new StringBuffer("I am a good boy");
str.setCharAt(0,'H');
System.out.println(str);//H am a good boy
5、insert(int index,String str)将参数str指定的字符序列插入到参数index指定的位置并返回当前对象的引用
StringBuffer str=new StringBuffer("I a good girl");
str.setCharAt(2,'a');
str.setCharAt(3,'m');
System.out.println(str);//I am good girl
6、reverse()将该对象实体中的字符序列翻转,并返回当前对象的引用
StringBuffer str=new StringBuffer("Hello");
System.out.println(str.reverse());//olleH
7、delete(int startIndex,int endIndex)删除一个子字符序列,从startIndex位置到endIndex-1位置处的字符序列被删除
StringBuffer str=new StringBuffer("Habcello");
str.delete(1,4);
System.out.println(str);//Hello
8、replace(int startIndex,int endIndex,String str)将当前StringBuffer对象的字符序列的一个子字符序列用参数str指定的字符序列替换,从startIndex位置到endIndex-1位置处的字符序列被替换
StringBuffer str=new StringBuffer("Hello");
str.replace(1,5,"ahah");
System.out.println(str);//Hahah
9.replace() 起到了一个字符串替换的作用(修改对象中的元素)
实现代码
String s = "We are happy."
a = a.replace(" ","%20");
System.out.println(a);
输出结果:
We%20are%20happy.
空格被替换成了%20
10.copyOfRange(original,int from,int to)该方法返回一个长度为to-from的数组,其中from~min(original.length,to)之间的元素(不包括min(original.length,to))是从数组original复制的元素,剩下的值为0。
int[] str = new int[]{1, 2, 3, 4, 5, 6, 7};
int[] str1 = Arrays.copyOfRange(str, 0, 4);
for (int i = 0; i < str1.length; i++)
System.out.print(str1[i]+" ");
Output
1 2 3 4
String str="I am a girl";
char[] str2=str.toCharArray();
char[] str1 = Arrays.copyOfRange(str2, 0, 4);
for (int i = 0; i < str1.length; i++)
System.out.print(str1[i]);
Output
I am