Java 高級應用編程 第一章 工具類
一、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 高級應用編程 第一章 工具類