12、String类

来源:互联网 发布:算法精解 java 编辑:程序博客网 时间:2024/06/08 09:42


十二、String类

1、系统结构图(xmind)


2、String方法练习

——1

/*需求:将一个字符串反转思路:1、将字符串转换为字符数组  2、将数组反转  3、将字符数组转换为字符串*/class ReverseTest {public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {String s="abca dv daf";sop(s);//ReverseString r=new ReverseString();sop(new ReverseString().reverseString(s));}}class ReverseString{public static String  reverseString(String s,int start,int end){//将字符串变为字符数组char[] ch=s.toCharArray();//将数组进行反转charReverse(ch,start,end);//将字符数组变为字符串return new String().valueOf(ch);}//反转整个字符串public static String reverseString(String s){return reverseString(s,0,s.length());}//反转指定字符数组位置private static void charReverse(char[] ch,int start,int end){for (int x=start,y=end-1; x<y;x++,y--){swap(ch,x,y);}}//交换相应数组元素private static  void swap(char[] ch, int start,int end){char temp=ch[start];ch[start]=ch[end];ch[end]=temp;}}

运行结果:


——2

/*需求:给定一个字符串数组,按照字典顺序进行从小到大的排序。{"nba","abc","cba","zz","qq","haha"}思路:①对数组排序,可以用选择,冒泡都行。②for嵌套、比较以及换位。③使用String类中提供的用于字符串比较的功能进行比较。*/public class StringTest{public static void main(String[] args){String[] arr = {"nba","abc","cba","zz","qq","haha"};Demo.printArr(arr);Demo.sort(arr);Demo.printArr(arr);}}class Demo{//打印数组方法public static void printArr(String[] arr){System.out.print('['+arr[0]);for(int x=1;x<arr.length-1;x++){System.out.print(','+arr[x]);}System.out.println(','+arr[arr.length-1]+']');}//排序方法public static String[] sort(String[] arr){for(int x=0;x<arr.length;x++){for(int y=0;y<arr.length-1;y++){//使用comparaTo方法进行比较if(arr[y].compareTo(arr[y+1])>0){String temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}return arr;}}

运行结果:


——3

/*需求:对一个字符串中的数值进行从小到大的排序。"20 78 9 -7 88 36 29"*/import java.util.Arrays;class WrapperTest{private static final String SPACE_SEPARATOR = " ";public static void main(String[] args){String Numstr = "20 79 9 -7 88 36 29";System.out.println(Numstr);Numstr = sortStringNumber(Numstr);System.out.println(Numstr);}public static String sortStringNumber(String Numstr){//1、将字符串变成字符串数组String[] str_arr = StringtoArrays(Numstr);//2、将字符串数组变成int数组int[] arr = toIntArrays(str_arr);//3、对int数组排序sortArrays(arr);//4、将排序后的int数组变成字符串Numstr = ArraystoString(arr);return Numstr;}public static String[] StringtoArrays(String Numstr){//以空格为分割切割NumstrString[] str_arr = Numstr.split(SPACE_SEPARATOR);return str_arr;}public static int[] toIntArrays(String[] str_arr){int[] arr = new int[str_arr.length];for(int i=0;i<str_arr.length;i++){//将字符串数组转换成数组arr[i] = Integer.parseInt(str_arr[i]);}return arr;}public static void sortArrays(int[] arr){Arrays.sort(arr);}public static String ArraystoString(int[] arr){StringBuilder sb = new StringBuilder();for(int i=0;i<arr.length;i++){if(i != arr.length-1)sb.append(arr[i]).append(SPACE_SEPARATOR);elsesb.append(arr[i]);}//将arr转变为字符串再返回return sb.toString();}}

运行结果:



 3、tips

——1.StringBuffer

StringBuffer的字符串缓冲区初始容量为16个字符,其实质还是数组。

1.使用setLength设置StringBuffer中字符序列的长度。

   如果小于已有字符序列的长度,相当于清除缓冲区中的一部分内容。

   如果大于已有字符序列的长度,相当于扩充缓冲区,扩充部门内容用空格字符填充。

2.当创建的StringBuffer内容长度大于16,将会新创建一个新数组,长度比旧数组要长。然后把就数组的内容拷贝到新的数组,超出旧数组长度范围的内容将会放在新数组现在内容的后面,也可以通过StringBuffer(int capacity);构造函数自己设置StringBuffer缓冲区长度。


——1.StringBuilder

jdk1.5以后出现了功能和StringBuffer一模一样的对象,就是StringBuilder。

不同的是:

StringBuffer是线程同步的,通常用于多线程

StringBuilder是线程不同步的,通常用于单线程,它的出现能够提高程序效率。

故StringBuilder多用于多个线程是不安全的,如果需要这样的同步,则建议使用StringBuffer。


——3.基本数据类型对象包装类

为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。

用于描述该对象的类就称为基本数据类型对象包装类。

                  byte Byte
                  short Short
                  int Integer
                  long Long
                  float Float
                  double Double
                  char Character
                  boolean Boolean

该包装对象主要用于基本类型和字符串之间的转换

如果字符串被Integer进行对象的封装,可使用另一个非静态的方法,intValue。将一个Integer对象转成基本数据类型值, 用Integer的静态方法valueOf(String s);



0 0