12、String類


十二、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)
	{
		//以空格爲分割切割Numstr
		String[] 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);
			else
				sb.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);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章