1. 程式人生 > >Java-String方法的使用說明

Java-String方法的使用說明

package day01;
import java.util.Random;
import java.util.Scanner;

import org.junit.Test;
/**
 * 
 *@author Administrator
 *@version 1.0
 *@since JDK 1.7
 */
public class Demo01 {
	@Test
	//字串的基本概念和在進行字串基本操作的時候所應該注意的問題;
	public void test(){
		/**
		 * (1)java中只要給定字串的型別就是不能夠進行改變的;
		 * (2)所有的引用型別是儲存的是地址,是不可變的,是通過建立的物件來實現的;
		 * (3)String在建立的時候使用的final修飾的,不能夠被繼承;
		 * (4)java字串採用的是Unicode編碼方式的;
		 * (5)類似於Hello的字串為字面量;
		 * (6)字串緩衝池(起到去除重複的東西,先從字串緩衝池中去尋找,如果有相同的則直接呼叫,只有使用字面量的時候一般才從常量池中進行查詢),
		 * 減少記憶體的使用空間;
		 * (7)字串是不利於去頻繁的去修改的;
		 * (8)在進行字串的練習的時候,如果都是字面量的時候,使用“==”進行判斷的時候,是相同的;
		 * (是屬於java編譯器的原理,在編譯的時候會進行計算)
		 * (9)使用new關鍵字的時候,是在記憶體中建立實際的物件;
		 */
		String str = "Hello world!";
		System.out.println(str);
	}
	@Test
	public void test2(){
		//indexOf方法的使用;
		String str = "Thinking in java";
		//查詢給定的字串在當前字串中的位置;
		int index = str.indexOf("in");
		System.out.println(index);
		//根據所給的引數從指定的位置查詢當前的字串所出現的位置;
		index = str.indexOf("in", 3);
		System.out.println(index);
		//使用lastIndexOf方法,查詢整個字串中最後一次出現的位置;
		index = str.lastIndexOf("in");
		System.out.println(index);
	}
	@Test
	public void test3(){
		//substring字串擷取操作;一般來說當我們使用數字來表示字串的位置的時候,預設的是包頭不包尾;
		String str = "http://www.oracle.com";
		/*//從指定的位置開始擷取字串,到指定的位置保留字串;
		System.out.println(str.substring(11, 17));*/
		/**
		 * 獲取域名操作
		 * (1)獲取第一個.的位置,使用下標加1就可以;
		 * (2)獲取第二個.的位置
		 */
		//首先說去第次出現的位置,將其設為擷取字串的操作的開始位置;
		int start = str.indexOf(".");
		//獲取最後一次出現的位置,將其位置進行加1即可;
		int end = str.indexOf(".", start+1);
		String sub = str.substring(start+1,end);
		System.out.println(sub);
	}
	@Test
	public void test4(){
		//去除字串中所出現的的空白項,使用trim()方法進行字串兩邊空白的去除;
		String str = "    Hello World    ";
		System.out.println(str);
		System.out.println(str.trim());
	}
	@Test
	public void test5(){
		//使用charAt()來檢索當前位置的字元;
		/*String str = "Hello World";
		char c = str.charAt(8);
		System.out.println(c);*/
		String str = "上海自來水來自海上";
		//檢查迴文操作
		//上海自來水來自海上
		//思路:先是進行整個字串的便利操作,根據迴文的規則,如果一個字串是迴文的話則需要對原有的字串進行擇半從操作,
		//根據便利的條件進行判斷,如果前後對應的字串相同,則表示為迴文操作;反之
		for(int i = 0;i<str.length()/2;i++){
			if(str.charAt(i)!=str.charAt(str.length()-1-i)){
				System.out.println("不是迴文!");
				break;
			}
		}
		System.out.println("是迴文!");
	}
	
	
	@Test
	public void test6(){
		/*//英文的大小寫轉換,主要用於驗證碼之間的轉換,實現大小寫的輸入能夠同時去滿足
		String str = "Hello World!";
		//將字串中的字元全部轉換成大寫字元;
		System.out.println(str.toUpperCase());
		//講字串中所有的字元轉換成小寫字元;
		System.out.println(str.toLowerCase());
		*/
		/*String str1 = "WA3fd";
		System.out.println("請輸入驗證碼......"+str1);
		//建建立Scanner物件
		Scanner scan = new Scanner(System.in);
		//獲取當前控制檯輸入的字串操作;
		String input = scan.nextLine();
		str1 = str1.toLowerCase();
		input = input.toLowerCase();
		if(str1.equals(input)){
			System.out.println("驗證成功!");
		}else{
			System.out.println("驗證失敗!");
		}*/
		//建立Random物件產生隨機數量;
		Random r = new Random();
		//使用for迴圈進行驗證碼個數的判斷;
		for(int i=0;i<4;i++){
			//這隻一個狀態標誌,分別為大寫、小寫和數字三種狀態;
			int num = r.nextInt(3);
			//定義當前需要輸出的字串;
			String str = "";
			switch(num){
				case 0:
					//表示小寫狀態
					char c= (char) (r.nextInt(26)+'a');
					str+=c;
					break;
				case 1:
					//表示大寫狀態
					char c1= (char) (r.nextInt(26)+'A');
					str+=c1;
					break;
				case 2:
					//產生數字
					str += r.nextInt(10);
					break;
			}
			System.out.print(str);
		}
	}
	@Test
	public void test7(){
		String str = "Thinking in java";
		//判斷指定的字串是否已指定的字元開始;
		/**
		 * 該方法主要用來判斷指定的字串是否滿足當前的輸入要求,使用者是否按照當前的指定輸入進行基本的操作;
		 */
		 boolean b = str.startsWith("Think");
		 if(b){
			 System.out.println("是");
		 }else{
			 System.out.println("否");
		 }
		boolean b1 = str.endsWith("java");
		if(b1){
			System.out.println("是");
		}else{
			System.out.println("否");
		}
		
		
	}
	@Test
	public void test8(){
		//valueOf()方法的使用,將引數中的之轉換成字串操作。但是我們一把使用加" "空字串進行轉換的;字串是一個不變的物件;
		int i = 100;
		double d = 123.334;
		String str= String.valueOf(i);
		System.out.println(str+d);
	}

	@Test
	public void test9(){
		/**
		 * StringBuilder進行字串的修改操作,用來解決字串頻繁的修改帶來的記憶體的消耗
		 * 所以我們有頻繁的修改字串的時候,首選使用StringBuilder建立物件;當我們使用StringBuilder建立空的字串的時候,我們預設建立的
		 * 是一個空的字串;
		 * StringBuilder各個方法的使用;
		 * append(),在當前的字串末尾新增相應的字串;
		 * insert()方法,將所新增的字串新增到指定的位置,後面的字串向後移動;
		 * delete()
		 * replace()
		 * reserve()方法,字串的反轉操作;
		 * StringBuffer和StringBuilder的區別
		 * (1)StringBuffer是執行緒安全的,同步處理的新能稍慢,而StringBuilder是執行緒不安全的,能夠進行併發處理,效能稍快;
		 */
		StringBuilder sb = new StringBuilder("sdcsdcsdc");
		//sb.append("-sdc");
		//在使用replace方法的時候,在設定範圍的時候,前包括後不包括,是前半開區間;
		//進行程式碼優化的時候,從下面往上面進行程式碼的等量優化;
		sb.replace(2, 4, "@@");
		System.out.println(sb);
	}
}