黑馬程序員_特殊的對象---字符串 、正則表達式、基本數據類型

---------------------- android培訓 、 java培訓 、 期待與您交流! ----------------------


1、 String類:由於在實例開發中對字符串的操作非常多,所以Java就把字符串進行了封裝,描述成一個特殊的類,即String類以方便於程序員開發的方便;

2、字符串String:

        字符串是一個特殊的對象

        字符串是常量,一旦被初始化,就不可以被改變

3、 字符串常用的功能:
       a. 字符個數。length
        b.查找一個字符出現的位置。如果沒有這個字符呢?返回-1.
            int  char  indexOf
            lastIndexOf
        c. 根據位置獲取字符。如果沒有該位置呢?
            char  int
            char charAt(index);
        d. 將字符串轉成大、小寫。
            String toUpperCase();
            String toLowerCase();
        e. 判斷字符串的開頭,結尾。
            boolean startWith(string);
            boolean endsWith(string);

       f. 字符串中是否包含指定字符串。
            boolean contains(string);
        g. 截取一部分字符串。
            String substring(int start,int end)
        h. 將字符串中的c替換成n。如果字符串中沒有c呢?
            String replace(char char)      
        i. 比較大小
            記住基本數值比較大小用比較運算符 >  <
            大寫比較大小使用的是方法 其中一個就是 compareTo();返回的是 正數 、負數、0.

4、 常用功能演示:

public class StringMethodDemo {
	public static void main(String[] args) {

		String str = "abcdeabc";

                //1,獲取a字母出現的位置。
		System.out.println("indexOf('a')="+str.indexOf('a'));//0
		System.out.println("lastindexOf('a')="+str.lastIndexOf('a'));//5
		
		//2,獲取角標3上的字符。
		//System.out.println("charAt(3)="+str.charAt(30));//d//StringIndexOutOfBoundsException
		
		//3,將字符串轉成大寫
		String s1 = str.toUpperCase();
		System.out.println("uppercase="+s1);//ABCDEABC
		
		//4,該字符串是否已Demo開頭,是否以.java結束。
		boolean b1 = str.endsWith(".java");
		boolean b2 = str.startsWith("Demo");
		
		
		//5,該字符串中是否包含cd字符串。
		System.out.println("contains(\"cd\")="+str.contains("cd"));//true
		
		//6,截取2,5之間的字符串。
		System.out.println("substring(2,5)="+str.substring(2,5));//cde
		
		
		//7,將字符串中的a替換成k。
		System.out.println("replace('a','k')="+str.replace('a', 'k'));//kbcdekbc
		
		//8,字符串比較大小。
		System.out.println("compareTo(\"aaa\")="+str.compareTo("abc"));
	}

}

5、 可變數組:StringBuffer 字符串緩衝區
        特點:

        1.可以存儲任意類型的數據;

        2.長度不確定;

        3.無論存儲什麼類型的元素,最終都會變成字符串。
        容器常見功能:
        1.添加,插入,append, insert
        2.刪除  
        3.替換  
6、StringBuilder 用法與StringBuffer一模一樣
         JDK1.5版本出現了StringBuilder
        StringBuffer是線程安全的;
        StringBuilder是線程不安全的。

7、正則表達式:就是用操作字符串數據的規則表達式。
        規則:就是用一些符號組成,每個符號都代表着特有的含義。

                   其實這些符號相當於對應着底層一段代碼。對外提供符號就是簡化了操作。

         弊端:必須要先學習這些符號。符號多了,閱讀性會較差。

8、 字符範圍:[]  字符次數:{}

9、正則表達式對字符串的常見操作:

        a. 匹配:使用的是String類中的matchers方法。

        b. 切割:使用的是String類中的split方法。

        c. 替換:使用的是String類中的replaceAll方法。
        d. 獲取:將匹配的規則的內容獲取出來。

10、  正則演示:

/*
	 * 我我....我....我我..我我..我..要要..要要..要要..要要學..學學學..學學..學編編..編編編.編程程.....程...程程...程程..程程
	 * 把它還原成  我要學編程。
	 */
	public static void test1(){
		String str = "我我....我....我我..我我..我..要要..要要..要要..要要學..學學學..學學..學編編..編編編.編程程.....程...程程...程程..程程";
		/*
		 * 使用正則的替換功能。
		 * 1,將 . 去掉。
		 * 2,將疊詞變成一個。
		 */
		str = str.replaceAll("\\.+", "");
		System.out.println(str);
		str = str.replaceAll("(.)\\1+", "$1");
		System.out.println(str);
	}
	/*
	 * 10.10.10.10  192.168.1.200 3.3.3.3 127.0.0.108
	 * 對ip地址排序。
	 */
	public static void test2(){
		
		
		String ip = "10.10.10.10  192.168.1.200   3.3.3.3 127.0.0.108";
		
		/*
		 * 爲了排序方便,每一段都補兩個零。保證每一段至少三位。
		 * 替換就可以了。
		 */
		
		ip = ip.replaceAll("(\\d+)", "00$1");
		System.out.println(ip);
		
		//將每一段都保留最後三位。
		ip = ip.replaceAll("0*(\\d{3})", "$1");
		System.out.println(ip);
		
		String[] ips = ip.split(" +");
		Arrays.sort(ips);
		for(String x : ips){
			System.out.println(x.replaceAll("0*(\\d+)", "$1"));
		}	
	}
	/*
	 * 對郵件地址進行校驗。
	 */
	public static void test3(){
		
		String mail = "[email protected]";
		
		String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,}){1,3}";
		reg = "\\w+@\\w+(\\.\\w+)+";//[email protected]
		
	//mail.indexOf("@")!=-1
		boolean b = mail.matches(reg);
		System.out.println(mail+":"+b);
	}
11、使用正則表達式對象。Pattern
        實用步驟:
        a. 先將正則表達式編譯成Pattern對象。
        b. 通過Pattern對象的matcher方法獲取Matcher匹配器對象。
        c. 通過匹配器對象的方法,將正則規則作用到字符串上以便於操作。
12、 正則對象演示:

public static void getString(){
		
		String str = "da jia zhu yi la ,ming tian fang jia la!";
		System.out.println(str);
		//1,定義規則。
		String reg = "\\b[a-z]{3}\\b";
		//2,將規則編譯成正則對象。
		Pattern p = Pattern.compile(reg);
		
		//3,通過正則對象獲取匹配器對象,並和被操作的字符串相關聯。
		Matcher m = p.matcher(str);
		
		//4, 通過匹配器對象的方法對字符串進行規則的匹配。
//		boolean b = m.find();
//		System.out.println(b);
//		System.out.println(m.group());
		while(m.find()){
			System.out.println(m.start()+"..."+m.group()+"...."+m.end());	
		}	
	}

13、 基本數據類型
        byte    Byte
        short    Short
        int    Integer
        long    Long
        float    Float
        double    Double
        boolean    Boolean
        char    Character

        該對象常見場景:
        在基本數值和字符串之間做轉換。

        基本類型值--->字符串  用加好(+)連接後就是字符串   String.valueof(基本數據類型值)  static 字符串toString(基本數據類型)

        字符串--->基本類型值    返回基本類型(參數是字符串)
                static XXX parseXXX(字符串)

        十進制--->其他進制

        System.out.println(Integer.toBinaryString(-6));

        System.out.println(Integer.toHesString(-6));

        其他進制--->十進制
        System.out.println(Integer.parseInt("110",2));

        基本數據類型--->對象    裝箱

        Integer i=new Integer(23);
        Integer ii=Integer.valueof(23);

        對象--->基本數據類型    拆箱    
        int num=i.intValue();


        JDK1.5以後,基本數據類型對象包有了一個新特性。

        自動裝箱拆箱。


---------------------- android培訓 、 java培訓 、 期待與您交流! ----------------------
詳細請查看:www.itheima.com

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