1. 程式人生 > >Java 高級應用編程 第一章 工具類

Java 高級應用編程 第一章 工具類

創建 類名 www 完成 安全 註意 容量 lan 地址

一、Java API

  Java API簡介

    1、API (Application Programming Interface) 應用程序接口

    2、Java中的API,就是JDK提供的各種功能的Java類

    3、JDK幫助文檔   JAVA_API_CN.chm   官網地址http://www.oracle.com/technetwork/java/api-141528.html

    如:

      java.lang
        Java語言包(包含String、Math、System等類),任何類中,該包中的類都會被自動導入。
      java.util
        包含一些實用的工具類( 包含 list, calendar, date等類)
      java.awt
        圖形用戶界面包。
      java.io
        提供多種輸入/輸出功能的類。

      java.net
        提供網絡應用功能的類。

二、Object

  (一)Object介紹及方法

    1、Object類是所有類的超類, Object是Java語言中唯一一個沒有父類的類。

     2、一個類可以不是Object類的直接子類,但一定是Object類的子類,Java中的每一個類都是從Object擴展來的。

     3、在Object類中定義的方法,在所有類中都可以使用。

  (二)Object 類常用方法

    1、public boolean equals(Object obj): 比較兩個對象引用的值是否相等(比較地址)。指出調用該方法的對象是否與obj對象相等。即地址是否相等。

    2、public int hashCode():該方法返回對象的哈希碼,哈希碼是一個代表對象的十六進制整數,比作對象的身份證號。在程序運行期間,每次調用同一個對象的hashCode()返回的哈希碼必定相同,但是多次執行同一個程序,程序的一次執行和下一次執行期間同一個對象的哈希碼不一定相同。實際上默認的哈希碼是將對象的內存地址通過某種轉換得到的,所以不同對象會有不同的哈希碼

    3、public String toString():返回 類名@hashcode ;事實上返回這樣的字符串沒有什麽實際的意義。一般子類都會覆蓋該方法,讓它返回有意義的文本。

三、equals() 與 ==的區別

  理解equals()方法和==運算符的區別是非常重要的。
    默認情況下(即沒有被重寫時)equals()只能比較引用類型,"=="既能比較引用類型又能比較基本類型。
    equals()方法從Object類繼承,即比較對象引用的值
    一般都被子類方法覆蓋,不再比較引用的值
  "=="運算符:
    比較基本數據類型:相當於算術等號
    比較引用數據類型:比較引用的值,不能被覆蓋。

四、包裝類

    1、Java編程語言不把基本數據類型看作對象。Java 編程語言提供包裝類來將基本數據類型看作對象。

    2、在功能上包裝類能夠完成數據類型之間(除boolean)的相互轉換,尤其是基本數據類型和String類型的轉換。

    3、包裝類中包含了對應基本數據類型的值,封裝了String和基本數據類型之間相互轉換的方法,還有一些處理這些基本數據類型時非常有用的屬性和方法。

  (一)包裝類簡介

    基本數據類型不是對象層次結構的組成部分。有時需要像處理對象一樣處理這些基本數據類型,可通過相應的“包裝類”來將其“包裝” 。

技術分享圖片

  (二)字符串與基本數據類型、包裝類型轉換圖

技術分享圖片

    1、基本數據類型轉換為包裝類

      int pInt = 500;
      Integer wInt = new Integer(pInt);

    2、字符串轉換為包裝類

      字符串通過構造方法轉換為包裝類

        String sInt = “500”;
        Integer wInt = new Integer(sInt);

      字符串通過包裝類的valueOf(String s)轉換為包裝類

        String sInt = “500”;
        Integer wInt = Integer.valueOf(sInt);
      註意:字符串不能通過以上兩種方式轉換為Character

    3、包裝類轉換為基本數據類型

      包裝類通過xxxValue()方法轉換為基本數據類型

        Integer wInt = new Integer(500);
        int pInt = wInt.intValue();

    4、包裝類轉換為字符串

      包裝類通過toString()方法轉換為字符串

        Integer wInt = new Integer(500);
        String sInt = wInt.toString();

    5、字符串轉換為基本數據類型

      字符串通過parseXXX(String s)方法轉換為基本數據類型

        String sInt = “500”;
        int pInt = Integer.parsetIInt(sInt);

  (三)自動的裝箱和自動拆箱

    1、在進行基本數據類型和對應的包裝類轉換時,系統將自動進行

    2、JDK自從5.0版本後引入

    3、方便程序的編寫

      int pInt = 500;
      Integer wInt = pInt;
      int n = wInt;

五、字符串類

    1、字符串表現形式可以分為兩種:String和StringBuffer。

     2、不屬於8種基本的數據類型,而是一種引用類型。

    3、String對象代表一組不可改變的Unicode字符序列,對它的任何修改實際上又產生一個新的字符串,String類對象的內容一旦被初始化就不能再改變。

    4、StringBuffer對象代表一組可改變的Unicode字符序列。

    5、String類是final類型的類。

  (一)String 對象的創建

    String類的構造方法
      1、初始化一個新創建的 String 對象,它表示一個空字符序列。

        String 變量名 = new String () ;
      2、初始化一個新創建的 String 對象,表示一個與該參數相同的字符序列

        String 變量名 = new String (String value) ;
      3、分配一個新的字符串,它包含當前包含在字符串緩沖區參數中的字符序列。

        String 變量名 = new String (StringBuffer buf) ;
      4、字符串文字常量本身是一個String對象
        String 變量名 = “hello” ;

      5、初始化一個新創建的 String 對象,通過使用指定的charset 解碼指定的 byte 數組

        String 變量名 = new String(byte[] bytes, String charsetName);

      6、初始化一個新創建的 String 對象,通過使用指定的 charset解碼指定的 byte 子數組,構造一個新的 String

        String 變量名 = new String(byte[] bytes, int offset, int length, Charset charset);

      7、連接操作符“+”,可以將其它各種類型的數據轉換成字符串,並前後連接成新的字符串

        String str1 = “hello ”;
        String str2 = “world”;
        String str = str1 + str2; //str為“hello world”;

  (二)String 類的轉換

  技術分享圖片

  (三)String 類中常用的方法

技術分享圖片

技術分享圖片     技術分享圖片

  (四)StringBuffer 類

    StringBuffer類用於內容可以改變的字符串

    可以使用StringBuffer來對字符串的內容進行動態操作,不會產生額外的對象

  (五)StringBuffer 對象的創建

    1、構造一個其中不帶字符的字符串緩沖區,其初始容量為 16 個字符

      StringBuffer 變量名 = new StringBuffer () ;

    2、構造一個不帶字符,但具有指定初始容量的字符串緩沖區。

      StringBuffer 變量名 = new StringBuffer (int capacity ) ;

    3、構造一個字符串緩沖區,並將其內容初始化為指定的字符串內容。

      StringBuffer 變量名 = new StringBuffer (String value) ;

  (六)StringBuffer 類中常用的方法

技術分享圖片

技術分享圖片

  (七)==

    在比較基本數據類型時,比較的是值

    在比較引用數據類型時,比較的是地址

  (八)equals

     原生的(未被重寫的)equals方法底層就是==,即比較兩個對象的值,通常用來判斷兩個對象是否為同一個對象,返回值為true兩個對象就為同一對象,當Object的子類重寫以後就具有了其他功能,equals方法不能用來比較基本數據類型

  (九)hashcode

    hashcode(哈希碼)哈希表記錄每個對象存儲的位置,因此可以將哈希碼作為對象內存地址的表示,通常用hashcode去比較兩個對象是否不是同一個對象,如果hashcode不同兩個對象就不是同一個對象

  (十)問:為啥不用hashcode比較兩個對象是否為同一個對象

     答:存在hashcode相同,equals返回結果為false的情況

  (十一)String、StringBuffer、StringBuilder

    String不可變字符序列
    StringBuffer、StringBuilder可變字符序列
    StringBuffer線程安全但是效率低,較早引入
    StringBuilder線程不安全但是效率高,較晚引入

六、Math 類

    Math類提供了大量用於數學運算的方法

    Math類是final類,因此不能從Math類繼承

    Math類中的方法都是static方法,因此不必創建Math類的對象就可以直接使用該類的方法

  (一)Math 類中的常量

     public static final double PI

    public static final double PI

  (二)Math 類中的常用方法

技術分享圖片

技術分享圖片

七、日期類

  (一)Date 類

     java.util.Date。

    Date 類表示指定的時間信息,可以精確到毫秒。

    不支持國際化。

    該類的許多方法已過時

    獲取當前系統時間:      

      new Date();

  (二) Calendar 類

    1、java.util.Calendar。
      java.util.GregorianCalendar
    2、常用的日期處理的對象。可以設置自己的時區和國際化格式。
    3、是一個抽象類。
    4、Calendar 抽象類定義了足夠的方法,讓我們能夠表述日歷的規則 。
    5、獲取Calendar對象的實例

      Calendar c = Calendar.getInstance();

    6、設置Calendar實例所表示的時間:

      c.set(2011,6,16);

    7、獲取指定的時間屬性

      c.get(Calendar.YEAR);

  (三)Calendar 類常用屬性

  技術分享圖片

Java 高級應用編程 第一章 工具類