JDK學習基礎入門(一)
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 中的元素都是成對出現的,鍵值對就像陣列的索引與陣列的內容的關係一樣,將一個鍵對映到一個值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。我們可以通過鍵去找到相應的值。
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 值不可重複)。
相關文章
- Pytest學習(一)- 入門及基礎
- 零基礎學習Alfred(一):入門操作Alfred
- Vue2.x學習一:基礎入門Vue
- 前端學習小結(一)—基礎入門篇前端
- mysql 基礎命令入門學習MySql
- Java基礎知識入門-JDKJavaJDK
- java入門基礎學習----泛型Java泛型
- node 學習筆記 基礎入門筆記
- Oracle學習快速入門基礎教程Oracle
- 零基礎輕鬆入門——JAVA基礎學習Java
- SpringBoot 基礎知識學習(一)——快速入門Spring Boot
- Linux入門學習(1基礎操作命令)Linux
- CTF入門學習5-> 前端JavaScript基礎前端JavaScript
- 新手入門之——Linux學習基礎(轉)Linux
- 【計理01組04號】JDK基礎入門JDK
- 組合語言零基礎入門學習筆記(一)組合語言筆記
- iOS-零基礎學習OpenGL-ES入門教程(一)iOS
- TypeScript 基礎入門(一)TypeScript
- rabbitmq(一)-基礎入門MQ
- MyBatis入門基礎(一)MyBatis
- clojure基礎入門(一)
- 分散式搜尋引擎Elasticsearch基礎入門學習分散式Elasticsearch
- CTF入門學習2->Web基礎瞭解Web
- CTF入門學習3->Web通訊基礎Web
- 新手入門前端,需要學習的基礎內容。前端
- lua學習之入門(二)----基礎語法1
- 0基礎學習Python該如何入門?Python學習方法!Python
- 通過Redux原始碼學習基礎概念一:簡單例子入門Redux原始碼單例
- 前端基礎入門一(HTML)前端HTML
- JS基礎入門篇( 一 )JS
- JS基礎入門篇(一)JS
- ios基礎之入門(一)iOS
- Linux 學習基礎入門之Linux分割槽Linux
- 前端零基礎入門學習!前端真簡單前端
- 零基礎入門web開發(4)——學習JavaScriptWebJavaScript
- Swift程式語言教程-001入門學習基礎Swift
- Shell程式設計基礎學習之六:sed 入門程式設計
- Spring入門學習手冊 6:Spring MVC基礎中的基礎SpringMVC