1. 程式人生 > >javaSE 第十二天

javaSE 第十二天

Day12

---------------------------------------------------------------------------------

今天內容:

   (1)包裝類和數學處理類

   (2)String類

1.包裝類和數學處理類

1.1 包裝類的概念和分類(理解)

如:

    Person p = new Person();  - 宣告Person型別的引用指向Person型別的物件

    int num = 10;             - 宣告int型別的變數num初始值為10

    Java語言是一門純面向物件的程式語言。

(1)基本概念

   在某些特殊場合(集合)中要求所有的元素必須是類型別的物件,而對於基本資料型別的變數來說不滿足該要求,為了使得這些變數能夠使用則需要對變數進行打包封裝的物件化處理,此時就需要藉助包裝類。

如:

    public class A{

        private int num = 10; 

    }  

    A a = new A();

(2)基本分類

   int    => java.lang.Integer類(重點、理解)

   double => java.lang.Double類

   byte   => java.lang.Byte類

   short  => java.lang.Short類

   long   => java.lang.Long類

   float  => java.lang.Float類

   boolean=> java.lang.Boolean類

   char   => java.lang.Character類

1.2 Integer類(重點、理解)

(1)基本概念

   java.lang.Integer類是int型別的包裝類,該類由final修飾表示不能被繼承。

(2)常用的方法

   Integer(int value) - 根據引數指定的整數構造物件。

   Integer(String s)  - 根據引數指定的字串構造物件。

   該類重寫了equals()、hashCode()以及toString()方法。

   int intValue() - 用於返回呼叫物件中的int型別數值。

   static Integer valueOf(int i) - 用於根據引數指定的int數值得到Integer型別的物件。

   static int parseInt(String s) - 用於將字串轉換為int型別(記住)。

(3)裝箱和拆箱

   從int型別向Integer型別的轉換過程叫做裝箱;

   從Integer型別向int型別的轉換過程叫做拆箱;

   從jdk1.5開始Java中提供了自動裝箱和自動拆箱的機制;

(4)自動裝箱池(筆試題)

   為了提高程式的執行效率,Integer類的內部已經提前將-128到127之間的所有整數資料裝箱完畢並放入自動裝箱池中,若程式中出現該範圍的資料則直接從池中獲取並使用,否則才需要裝箱處理。

1.3 BigDecimal類(查手冊會用即可)

(1)基本概念

   由於float型別和double型別在運算時會有誤差,因此為了實現精確運算則需要藉助java.math.BigDecimal型別加以描述。

(2)常用的方法 

   BigDecimal(String val) - 根據引數指定的字串內容來構造物件。

   BigDecimal add(BigDecimal augend) 

      - 用於計算呼叫物件和引數物件的和並返回。

   BigDecimal subtract(BigDecimal subtrahend) 

      - 用於計算呼叫物件和引數物件的差並返回。

   BigDecimal multiply(BigDecimal multiplicand) 

      - 用於計算呼叫物件和引數物件的積並返回。

   BigDecimal divide(BigDecimal divisor) 

      - 用於計算呼叫物件和引數物件的商並返回。

1.4 BigInteger類(查詢手冊會用即可)

(1)基本概念

   在以後的開發中若希望表達比long型別還大的資料,則使用java.math.BigInteger型別

加以描述。      

(2)常用的方法 

   BigInteger(String val) - 根據引數指定的字串來構造物件。

   BigInteger add(BigInteger val) 

      - 用於計算呼叫物件和引數物件的和並返回。

   BigInteger subtract(BigInteger val) 

      - 用於計算呼叫物件和引數物件的差並返回。

   BigInteger multiply(BigInteger val) 

      - 用於計算呼叫物件和引數物件的積並返回。

   BigInteger divide(BigInteger val) 

      - 用於計算呼叫物件和引數物件的商並返回。

   BigInteger remainder(BigInteger val) 

      - 用於計算呼叫物件和引數物件的餘數並返回。

   BigInteger[] divideAndRemainder(BigInteger val) 

      - 用於計算呼叫物件和引數物件的商和餘數並返回。

2.String類(重中之重)

2.1 基本概念

   java.lang.String類用於描述字串,可以表示Java程式中的所有字串字面值,如:"abc"

   該類由final關鍵字,表示不能被繼承。

   該類描述的字串內容是個常量,建立後內容不可以改變,因此可以被共享。    

如:

   String s1 = "abc";

   s1 = "123";  - 表示改變變數s1的指向而不是指向的內容。

2.2 常量池(筆試題)

   由於字串字面值的內容不可以發生改變,因此Java虛擬機器會將出現的字串字面值放入常量池中,若下次出現同樣的字串字面值則直接使用池中已有的元素即可,從而提高了程式的執行效率,節省了記憶體空間。

2.3 常用的方法(練熟、記住)

(1)常用的構造方法

   String() - 使用無參的方式建立空字串物件,如: "" 和 null不一樣的。

   String(byte[] bytes, int offset, int length) 

       - 使用陣列bytes中從下標offset位置開始的length個位元組來構造物件。

   String(byte[] bytes) - 使用引數指定bytes陣列中所有內容構造字串物件。

   String(char[] value, int offset, int count)

       - 使用陣列value中從下標offset位置開始的count個字元來構造物件。

   String(char[] value) - 使用引數指定value陣列中所有內容構造字串物件。

   String(String original) 

       - 根據引數指定的字串來構造物件。    

筆試題:

   請問String s1 = "" 和 String s2 = null; 有區別嗎?

解析:

   有區別,s1指向明確字串物件,只是裡面沒有內容而已;s2沒有指向的字串物件。

(2)常用的成員方法

   該類重寫了equals()、hashCode()以及toString()方法。

   char charAt(int index) - 根據引數指定的下標返回對應的單個字元。

   int length() - 用於返回當前字串的長度。

   int compareTo(String anotherString) - 用於比較呼叫物件和引數物件的大小關係。

       - 使用呼叫物件和引數物件中第一個字元起依次做減法運算

       - 若第一個字元能確定大小,則後續字元不用比較

       - 若第一個字元不能確定大小,則使用下一個對應位置的字元比較大小。

       - 直到其中一個字串的所有字元比較完畢後也沒有確定大小,則由長度來決定大小。

       - 若當前字串大則返回正數;若當前字串小則返回負數;若相等則返回零;

   int compareToIgnoreCase(String str) - 不考慮大小寫,也就是'a'和'A'是相等的關係。

   boolean contains(CharSequence s) - 用於判斷當前字串是否包含引數指定的內容。

       - 其中引數是介面型別,因此實參需要傳遞實現類的物件,而String類就實現了該介面

   boolean endsWith(String suffix) 

       - 判斷當前字串是否以引數指定的內容為結尾。

   boolean startsWith(String prefix) 

       - 判斷當前字串中是否以引數指定的內容為開頭。

   String toLowerCase() 

       - 用於將當前字串中所有字元轉換為小寫。

   String toUpperCase() 

       - 用於將當前字串中所有字元轉換為大寫。

   String trim() 

       - 用於去除當前字串中兩端的空白字元。

   boolean equals(Object anObject) 

        - 用於比較字串內容是否相等並返回;

   boolean equalsIgnoreCase(String anotherString) 

        - 用於比較字串內容是否相等並返回,不考慮大小寫,如:'A'和'a'是相等。

   byte[] getBytes() - 用於將當前字串內容轉換為byte陣列並返回。

   char[] toCharArray() - 用於將當前字串內容轉換為char陣列並返回。

   int indexOf(int ch) - 用於返回當前字串中引數ch指定的字元第一次出現的下標。

   int indexOf(int ch, int fromIndex) - 用於從fromIndex位置開始查詢ch指定的字元。

       - 上述方法若查詢失敗,則返回-1.

   int indexOf(String str) - 用於查詢引數str指定的字串並返回下標。

   int indexOf(String str, int fromIndex) - 用於從fromIndex位置開始查詢。

   int lastIndexOf(int ch) - 用於返回引數ch指定的字元最後一次出現的下標。

   int lastIndexOf(int ch, int fromIndex) 

        - 用於從fromIndex位置開始查詢ch指定字元出現的下標,反向搜尋的第一次。

   int lastIndexOf(String str) - 用於返回str指定字串最後一次出現的下標。

   int lastIndexOf(String str, int fromIndex) 

        - 用於從fromIndex位置開始反向搜尋的第一次。

   String substring(int beginIndex) 

        - 用於獲取當前字串中從beginIndex位置開始的子字串並返回。

   String substring(int beginIndex, int endIndex) 

        - 用於獲取當前字串中從beginIndex位置開始到endIndex結尾的子字串並返回。

作業:

   1.練習和掌握上述所有String類的常用方法。

   2.自定義Person類實現封裝,屬性有:姓名和年齡,要求採用姓名作為標準來重寫equals()方法、hashCode()方法以及toString()方法。

   3.程式設計統計字串"[email protected]#$%ab"中大寫字母、小寫字母、數字、其它字元的個數並打印出來