java API(1)-lang包
java API(1)
什麼是 API ?
百度百科:API(Application Programming Interface,應用程式程式設計介面)是一些預先定義的函式,目的是提供應用程式與開發人員基於某軟體或硬體的以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。
lang包
- lang包中提供了幾乎每個應用程式都會用的基本類,例如:包裝類,Object,Math,System,String等。
- lang包在使用時會自動匯入,因此不需要手動使用import進行匯入。
System類
這個類中提供了很多類屬性和類方法,用於實現每個程式最基本的操作
- System.out: 標準輸出流
- System.err:錯誤資訊輸出流
- System.in:標準輸入流
- System.exit(0):退出java虛擬機器
- System.currentTimeMillis:獲得當前時間的毫秒值
- System.arrayCopy():複製陣列元素的方法
包裝類
- java為每個基本資料型別都提供了一個對應的包裝類;Integer,Short,Byte,Long,Float,Double,Boolean,Character;
- 每個包裝類都提供了用於處理此型別的多個方法
- 基本資料型別和包裝類可以直接轉換,這個過程叫自動拆裝包
Integer常用方法
- valueOf()
- toString()
- parsetInt()
- floatValue()
- byteValue()
- shortValue()
引用資料型別之間的轉換
- 向上轉型:有繼承關係,直接賦值即可
- 向下轉型: 有繼承關係,需要強轉,可能造成ClassCastException
- 利用方法:可以無繼承關係,如Integer.valueOf()
Math
這個類有包含了很多關係數學操作的方法(三角函式,指數,物件,基本);
這個類不能例項化,所有方法都有靜態的
Object
所有類的父類,定義了所有類都實現的方法;
class Animal{
}
等價於下面這種寫法:
class Animal extends Object{
}
Object中的方法共有11個:
- clone():克隆
- equals():比較是否相等
- toString():轉換成String
- hashcode():生成雜湊碼
- fanalize():垃圾回收前執行的程式碼
- getClass():獲得當前物件的類物件
- wait()
- notify()
- notifyAll()
toString方法
將物件轉成字串,通常的寫法是將所有屬性值都連成一個完整的字串。
當使用System.out.println(物件);會自動呼叫物件的toString()方法
hashcode
hash演算法是將長度不一的數值轉成長度相等的數值的一種演算法
hashCode 的常規協定是:
- 在 Java 應用程式執行期間,在對同一物件多次呼叫 hashCode 方法時,必須一致地返回相同的整數,前提是將物件進行 equals 比較時所用的資訊沒有被修改。從某一應用程式的一次執行到同一應用程式的另一次執行,該整數無需保持一致。
- 如果根據 equals(Object) 方法,兩個物件是相等的,那麼對這兩個物件中的每個物件呼叫 hashCode 方法都必須生成相同的整數結果。
- 如果根據 equals(java.lang.Object) 方法,兩個物件不相等,那麼對這兩個物件中的任一物件上呼叫 hashCode 方法不 要求一定生成不同的整數結果。但是,程式設計師應該意識到,為不相等的物件生成不同整數結果可以提高雜湊表的效能。
equals方法
指示其他某個物件是否與此物件“相等”。
equals 方法在非空物件引用上實現相等關係:
- 自反性:對於任何非空引用值 x,x.equals(x) 都應返回 true。
- 對稱性:對於任何非空引用值 x 和 y,當且僅當 y.equals(x) 返回 true 時,x.equals(y) 才應返回 true。
- 傳遞性:對於任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,並且 y.equals(z) 返回 true,那麼 x.equals(z) 應返回 true。
- 一致性:對於任何非空引用值 x 和 y,多次呼叫 x.equals(y) 始終返回 true 或始終返回 false,前提是物件上 equals 比較中所用的資訊沒有被修改。
- 對於任何非空引用值 x,x.equals(null) 都應返回 false。
String
String 類代表字串。Java 程式中的所有字串字面值(如 “abc” )都作為此類的例項實現。 字串是常量;它們的值在建立之後不能更改。字串緩衝區支援可變的字串。因為 String 物件是不可變的,所以可以共享。
如何建立一個字串:
最常用的 :字面值 String str=“hello world”;
構造方法。
字串的方法
- charAt():根據索引獲得字元
- length():獲得字元數
- getBytes():獲得位元組陣列
- compareTo():與另外一個字串比較大小
- contains(): 判斷是否包含另一個子串
- equals():判斷兩個字串的值是否相等
- startsWith():是否以某個字串開頭
- endsWith():是否以某個字串結尾
- replace():替換原有字串,並返回新的
- replaceAll():替換原有字串,並返回新的(可以用正則表示式)
- replaceFirst():替換第一次出現的原有字串,並返回新的
- isEmpty():判斷是否是空串
- substring():根據索引獲得子串
- split():根據字元進行拆分子符串
- trim():去除左右空格
- valueOf():將其它型別的資料轉成String
字串池
因為字串是不可變的,為了提升效能;java對字串做了特殊的處理,如果使用"字串"形式定義一個字串,那麼將會在字串池(String Pool)定義字串(若字串池中已經存在該字串,返回引用例項,不存在,例項化該字串並放入池中),而不是在堆中每次建立新的字串;
字串是方法區的一個組成部分。
StringBuffer
執行緒安全的可變字元序列。一個類似於 String 的字串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字元序列,但通過某些方法呼叫可以改變該序列的長度和內容。
特點:支援鏈式程式設計;適合做CURD操作
方法:
- append()
- insert()
- delete()
- replace()
- substring
String與StringBuffer的轉換:
- String->StringBuffer : new StringBuffer(String);
- StringBuffer->String : StringBuffer.toString();
StringBuilder
與StringBuffer作用相同,只是它是執行緒不安全的