JDK學習基礎入門(一)

qq_48987056發表於2020-09-29

Java API 簡介

Java 的核心 API 是非常龐大的,這給開發者來說帶來了很大的方便。所謂的 API 就是一些已經寫好、可直接呼叫的類庫。Java 裡有非常龐大的 API,其中有一些類庫是我們必須得掌握的,只有熟練掌握了 Java 一些核心的 API,我們才能更好的使用 Java。

我們都知道 java 是一門物件導向的語言,類將方法和屬性封裝起來,這樣就可以建立和處理相同方法和屬性的物件了。但是 java 中的基本資料型別卻不是物件導向的,不能定義基本型別的物件。那如果我們想像處理物件的方式處理基本型別的資料,呼叫一些方法怎麼辦呢?

其實 java 為每個基本型別都提供了包裝類:

原始資料型別 包裝類
byte(位元組) Byte
char(字元) Character
int(整型) Integer
long (長整型) Long
float(浮點型) Float
double (雙精度) Double
boolean (布林) Boolean
short(短整型) Short
在這八個類名中,除了 Integer 和 Character 類以後,其它六個類的類名和基本資料型別一致,只是類名的第一個字母大寫。

Integer 類

java.lang 包中的 Integer 類、Long 類和 Short 類都是 Number 的子類,他們的區別在於不同子類裡面封裝著不同的資料型別,比如 Integer 類包裝了一個基本型別 int。其包含的方法基本相同。

Integer 構造方法有兩種:

Integer(int value),以 int 型變數作為引數建立 Integer 物件。例如Integer a = new Integer(10);。
Integer(String s),以 String 型變數作為引數建立 Integer 物件,例如Integer a = new Integer(“10”)。

Character 類

Character 類在物件中包裝一個基本型別 char 的值。

Character 型別的物件包含型別為 char 的單個欄位。

Boolean 類

Boolean 類將基本型別為 boolean 的值包裝在一個物件中。一個 Boolean 型別的物件只包含一個型別為 boolean 的欄位。

Boolean 類的構造方法也有兩個:

Boolean(boolean value),建立一個表示 value 引數的 Boolean 物件,如 Boolean b = new Boolean(true)。

Boolean(String s),如果 String 引數不為 null 且在忽略大小寫時等於 “true”, 建立一個表示 true 值的 Boolean 物件,如 Boolean b = new Boolean(“ok”),為 false。

我們經常使用 String 類來定義一個字串。字串是常量,它們的值在建立之後不能更改。字串緩衝區支援可變的字串。

String 物件的初始化格式有如下兩種:·

String s0 = "abc";

String s1 = new String("abd");

字串連線

字串連線有兩種方法:

使用+,比如 String s = "Hello " + “World!”。
使用 String 類的 concat() 方法。

String 類的字串建立後是不能夠改變的

String 的不變性的機制 顯然會在 String 常量內有大量的冗餘。比如我建立一個迴圈,使字元’1’依次連線到’n’,那麼系統就得建立 n+(n-1) 個 String 物件。那有沒有可變的 String 類呢?

StringBuffer 類是可變的。它是 String 的對等類,它可以增加和編寫字元的可變序列,並且能夠將字元插入到字串中間或附加到字串末尾,當然是不用建立其他物件的,這裡建議大家去看一看 String 類與 StringBuffer 類的區別,理解一下他們在記憶體中的儲存情況。

Math 類的簡單使用

我們在程式設計的過程中,經常對一些數字進行數學操作,比如我們想要求絕對值或餘弦什麼的。那這些方法是否需要我們自己實現嗎?其實是 java.lang 裡的 Math 類。Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函式

java.lang 類 Class

Class 類的例項表示正在執行的 Java 應用程式中的類或介面。在 Java 中,每個 Class 都有一個相應的 Class 物件,即每一個類,在生成的 .class 檔案中,就會產生一個 Class 物件,用於表示這個類的型別資訊。我們獲取 Class 例項有三種方法

利用物件呼叫 getClass() 方法獲取該物件的 Class 例項

使用 Class 類的靜態方法 forName(String className),用類的名字獲取一個 Class 例項

運用.class的方式來獲取 Class 例項,對於基本資料型別的封裝類,還可以採用.TYPE來獲取相對應的基本資料型別的 Class 例項

在這裡插入圖片描述
class 類沒有共有的構造方法,它由 JVM 自動呼叫

java.lang 類 Object

Object 類是所有類的父類,所有物件(包括陣列)都實現這個類的方法。所以在預設的情況下,我們定義的類擴充套件自 Object 類,那我們當然可以呼叫和重寫 Object 類裡的所有方法了。

java.util 和 java.time 包介紹

java.util 包提供了一些實用的方法和資料結構。比如日期類 Date,日曆類 Calendar 以及隨機數類 Random,同時包裡還提供了 collection 框架,像堆疊 Stack、向量 Vector、位集合 Bitset 以及雜湊表 Hashtable 等表示資料結構的類。而 java.time 包是 java8 新提供的包,裡面對時間和日期提供了新的 api,彌補了 java.util 包對日期和時間操作的不足。

在這裡插入圖片描述

Date 類

Date 類表示日期和時間,裡面封裝了操作日期和時間的方法。Date 類經常用來獲取系統當前時間。

但是 Date 類的很多方法自 JDK 1.1 開始就已經過時了。

Random 類

Java 實用工具類庫中的類 java.util.Random 提供了產生各種型別隨機數的方法。它可以產生 int、long、float、double 以及 Gaussian 等型別的隨機數。這也是它與 java.lang.Math 中的方法 Random() 最大的不同之處,後者只產生 double 型的隨機數。

集合框架的介紹

我們在超市買東西的時候,如果沒有購物車是不是會很麻煩呢?Java 中集合類是一種工具類,就是像購物車一樣的容器,儲存任意數量的具有共同屬性的物件。

我們為什麼要用集合呢?一個類的內部有許多相同型別的屬性,並且他們的作用與意義是一樣的,我們最好用一個類似容器的東西去盛放他們,在類的內部就變得井然有序。所以集合便是在類的內部,發揮對資料進行組織的作用。這樣我們便可以簡單而快速地搜尋大量的條目。有的集合介面,提供了一系列排列有序的元素,並且可以在序列中快速地插入或者刪除有關元素。還有一些集合介面,提供了對映關係,可以通過關鍵字(key)去快速查詢到對應的唯一物件,而這個關鍵字可以是任意型別。

集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。任何集合框架都包含三大內容:對外的介面、介面的實現和對集合運算的演算法。

下圖是簡化的集合框架關係圖:

兩大介面
Collection 介面

因為集合框架中的很多類功能是相似的,所以我們用介面來規範類。Collection 介面是 java 集合框架裡的一個根介面。它也是 List、Set 和 Queue 介面的父介面。Collection 介面中定義了可用於操作 List、Set 和 Queue 的方法——增刪改查。

Map 介面

Map 介面也是一個非常重要的集合介面,用於儲存鍵/值對。Map 中的元素都是成對出現的,鍵值對就像陣列的索引與陣列的內容的關係一樣,將一個鍵對映到一個值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。我們可以通過鍵去找到相應的值。

Map 對映

value 可以儲存任意型別的物件,我們可以根據 key 鍵快速查詢 value。Map 中的鍵/值對以 Entry 型別的物件例項形式存在。

List 介面與 ArrayList 類

List 是一個介面,不能例項化,需要一個具體類來實現例項化。List 集合中的物件按照一定的順序排放,裡面的內容可以重複。List 介面實現的類有:ArrayList(實現動態陣列),Vector(實現動態陣列),LinkedList(實現連結串列),Stack(實現堆疊)。

ArrayList 類實現一個可增長的動態陣列,它可以儲存不同型別的物件,而陣列則只能存放特定資料型別的值。

List 有兩種基本的型別,除了 ArrayList 外,還有 LinkedList,LinkedList 類用於建立連結串列資料結構,兩者的對比如下:

ArrayList:它擅長於隨機訪問元素,但是插入和移除元素時較慢。

LinkedList:它通過代價較低的在 List 中進行插入和刪除操作,提供了優化的順序訪問,它在隨機訪問方面相對較慢,但是它的特性集較 ArrayList 更大。

Set 介面和 HashSet 類

Set 介面也是 Collection 介面的子介面,它有一個很重要也是很常用的實現類——HashSet,Set 是元素無序並且不包含重複元素的 collection(List 可以重複),被稱為集。

HashSet 由雜湊表(實際上是一個 HashMap 例項)支援。它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。

HashMap 類

HashMap 是基於雜湊表的 Map 介面的一個重要實現類。HashMap 中的 Entry 物件是無序排列的,Key 值和 value 值都可以為 null,但是一個 HashMap 只能有一個 key 值為 null 的對映(key 值不可重複)。

相關文章