傳智博客JAVA基礎第十六天

1:String類的三個練習
    (1)把字符串按照字符的自然順序排序並輸出。掌握
    (2)查找大串中小串的出現次數。
    
    public static int getCount(String fuString,String ziString)
    {
        int count = 0;

        int index = fuString.indexOf(ziString);
        while(index!=-1)
        {
            count++;
            fuString = fuString.substring(index+ziString.length());
            index = fuString.indexOf(ziString);
        }

        return count;
    }

    改進後的代碼:
    public static int getCount(String fuString,String ziString)
    {
        int count = 0;

        int index = 0;
        //條件不同:在這裏做了三件事情(查,賦值,判斷)
        while((index=fuString.indexOf(ziString))!=-1)
        {
            count++;
            fuString = fuString.substring(index+ziString.length());
        }

        return count;
    }

    (3)查找兩個字符串中的最大子串。
    public static String getSubString(String s1,String s2)
    {
        String maxString,minString;

        maxString = s1.length()>s2.length()?s1:s2;
        minString = maxString.equals(s1)?s2:s1;

        for(int x=0; x<minString.length(); x++)
        {
            for(int start=0,end=minString.length()-x; end<=minString.length(); start++,end++)
            {
                String temp = minString(start,end);
                if(maxString.contains(temp))
                {
                    return temp;
                }
            }
        }

        return null;
    }

2:StringBuffer和StringBuilder(重點)
    (1)StringBuffer是字符串緩衝類。可以看成是一個容器。
        A:StringBuffer和String的區別
            StringBuffer是長度可變的,每次的操作都採用的是同一個空間。
            而String長度是固定的,每次操作都是一個新的字符串空間。
        B:StringBuffer和數組的區別
            StringBuffer是長度可變的,並且可以存儲不同類型的數據。
            而數組時長度固定的,只能存儲同一種類型的數據。
    (2)StringBuffer構造方法
        A:StringBuffer sb = new StringBuffer();
        B:StringBuffer sb = new StringBuffer(50);
        C:StringBuffer sb = new StringBuffer("hello");

        測試了兩個方法:
        capacity():指的是緩衝區能夠存儲的元素個數
        length():指的是實際存儲的元素個數
    (3)StringBuffer的功能方法
        A:添加
            append:在末尾追加元素
            insert:在指定位置添加元素,其後元素後移
        B:刪除
            deleteCharAt:刪除指定位置的單個字符
            delete:刪除從起始位置開始到結束位置的多個字符。
                   包括左邊,不包括右邊。
        C:替換
            replace:用新的字符串替換從指定位置開始到結束位置的字符串
        D:截取
            subString:默認是從指定位置截取到末尾。
                  如果指定了起始位置和結束位置,那麼就是截取指定長度的字符串。
                  包括左邊,不包括右邊。
        E:反轉
            reverse:把字符串的內容進行了反轉
    (4)StringBuffer和StringBuilder的區別
        StringBuffer是同步的。-- 線程安全的
        StringBuilder是不同步的。 -- 線程不安全的。

        JDK的升級:
        A:效率
        B:安全
        C:簡寫
    
3:基本數據類型的包裝類
    (1)爲了方便我們對象基本類型進行操作,java就對每種基本類型進行了封裝。
       對應封裝類如下
       byte Byte
       short Short
       int Integer
       long Long
       float Float
       double Double
       char Character
       boolean Boolean

       好處:舉例
        比如說int的最大值,最小值,以及進制轉換變的非常簡單。
    (2)Integer的構造方法
        A:Integer i = new Integer(100);
        B:Integer i = new Integer("100");
        
        注意:字符串變成Integer類型數據的時候,可能會有一個異常。
              NumberFormatException。
              要求是:這個字符串中只能包含數字字符。
    (3)int類型和String類型的轉換(重點)
        A:int -- String
            int num = 100;
            String s = String.valueOf(num)
            String s = Integer.toString(num)
        B:String -- int
            String s = "100";
            int i = Integer.parseInt(s);
    (4)基本類型包裝類在JDK5以後的新特性
        自動裝箱和拆箱的操作。

        Integer i = 100;  //裝箱 new Integer(100);
        i += 200;      //拆箱 i.intValue()+200 結果是300
                  //裝箱 new Integer(300)

        注意:Integer最好檢查一下是否爲null。否則會有空指針異常。
    (5)Integer的一個小細節
        在byte範圍內,直接賦值,值被重用。

        Integer i1 = 128;
        Integer i2 = 128;
        sop(i1==i2); //false

        Integer i3 = 127;
        Integer i4 = 127;
        sop(i3==i4); //true

4:Math類的使用
    (1)Math類:沒有構造方法,那麼如何使用方法呢?
        A:這個類中的所有屬性和方法都是靜態的。
        B:通過單例設計模式在類的功能中提供了一個獲取該類對象的功能。
    (2)需要掌握的屬性和方法:
         * PI:π的值
         * E:自然對數的底數
         * abs:返回某個數據的絕對值
         * max:返回兩個數中較大的那個
         * min:返回兩個數中較小的那個
         * sqrt:返回的是正平方根
         * cbrt:返回的是立方根
         * pow:返回第一個參數的第二個參數次冪的值
         * ceil:大於等於參數,的最小整數
         * floor:小於等於參數,的最大整數
         * round:返回四捨五入一個值
         * random:返回一個隨機數,範圍[0.0-1.0)
         * 獲取一個1-100直接的隨機數:
         * (int)(Math.random() * 100)+1


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