您好,登錄后才能下訂單哦!
這篇“JAVA常用API有哪些及怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JAVA常用API有哪些及怎么使用”文章吧。
提供sin, cos, tan, exp, log, log10 等類方法,PI和E等類字段
char charAt(int index) | 返回給定位置的代碼單元 |
boolean equals(Object other) boolean equalsIngoreCase(String other) | 如果字符串與other相等,返回true 忽略大小寫 |
int length() | 返回字符串的長度 |
String substring(int beginIndex) String substring(int beginIndex, int endIndex) | 返回一個新字符串,包含原始字符串從beginIndex到串尾或到endIndex-1的所有代碼單元 |
String toLowerCase() String toUpperCase() | 返回小寫字符串 返回大寫字符串 |
int indexOf(String str[, int fromIndex]) int lastIndexOF(String str[, int fromIndex]) | 返回第一個/最后一個子串的位置,從起始位置或者fromIndex開始 |
Scanner(InputStream in) Scanner(File f) Scanner(String data) | 用給定的輸入流創建一個Scanner對象 例子:Scanner in = new Scanner(System.in) |
String nextLine() | 讀取輸入的下一行內容 |
String next() | 讀取輸入的下一個單詞(以空格作為間隔) |
int nextInt() double nextDouble() | 讀取并轉換下一個表示整數或浮點數的字符序列 |
for(variable : collection) statement
collection這一集合表達式必須是一個數組或者是一個實現了Iterable接口的類對象
static String toString(type[] a) | 返回包含a中數據元素的字符串 |
static void sort(type[] a) | 采用優化的快速排序算法對數組進行排序 |
static void binarySearch(type[] a, type v) | 使用二分搜索算法查找值v |
static Boolean equals(type[] a, type[] b) | 如果兩個數字相同,返回true |
數組名.length
數組長度
Random() | 構建一個新的隨機數生成器 |
int nextInt(int n) | 返回一個 0 ~ n-1之間的隨機數 |
String toString() | 返回描述該對象值的字符串。在自定義類中應覆蓋這個方法 |
boolean equals(Object otherObject) | 比較兩個對象是否相等。在自定義類中應覆蓋這個方法 |
Class getClass() int hashCode() | 返回包含對象信息的類對象 返回對象的散列碼 |
static wait() static notify() static notifyAll() |
String getName() | 返回這個類的名字 |
static Class forName(String className) | 返回描述類名為className的Class對象 |
Object newInstance() | 返回這個類的一個新實例 |
Field[] getFields() Field[] getDeclareFields() | getFields()返回一個包含Field對象的數組,這些對象記錄了這個類或其超類的公有域 getDeclareFields()返回的Field對象記錄了這個類的全部域 |
Method[] getMethods() Method[] getDeclareMethods() | getMethods()返回一個包含Method對象的數組,這些對象記錄了這個類或其超類的公用方法 getDeclareMethods()返回的Field對象記錄了這個類的全部方法 |
Constructor[] getConstructors() Constructor[] getDeclareConstructors() | getConstructors()返回一個包含Constructor對象的數組,這些對象記錄了這個類的公有構造器 getDeclareConstructors()返回的Constructor對象記錄了這個類的全部構造器 |
assert 條件;
assert 條件:表達式;
Java集合類庫將接口和實現分離。當程序使用集合時,一旦構建了集合就不需要知道究竟使用了哪種實現。因此,只有在構建集合對象時,使用具體的類才有意義。可以使用接口類型存放集合的引用。利用這種方法,一旦改變想法,可以輕松使用另外一種不同的實現,只需在對象創建處修改即可。
Iterator<E> iterator() | 返回一個用于訪問集合中每個元素的迭代器 |
int size() | 返回當前存儲在集合中的元素個數 |
boolean isEmpty() | 如果集合中沒有元素,返回true |
boolean contains(Object obj) boolean containAll(Collection<? extend E> other) | 如果集合中包含相等對象,返回true |
boolean add(Object element) boolean addAll(Collection<? extend E> other) | 將一個元素添加到集合中,集合改變返回true |
boolean remove(Object element) boolean removeAll(Collection<?> other) | 刪除相等元素,成功刪除返回true |
boolean hasNext() | 如果存在可訪問的元素,返回true |
E next() | 返回將要訪問的下一個對象 |
void remove() | 刪除上次訪問的元素 |
ArrayList | 一種可以動態增長和縮減的索引序列 |
LinkedList | 一種可以在任何位置進行高效插入和刪除操作的有序序列 |
ArrayDeque | 一種用循環數組實現的雙端隊列 |
HashSet | 一種沒有重復元素的無序集合 |
TreeSet | 一種有序集 |
EnumSet | 一種包含枚舉類型值的集合 |
LinkedHashSet | 一種可以記住元素插入次序的集 |
PriorityQueue | 一種允許高效刪除最小元素的集合 |
HashMap | 一種存儲鍵/值關聯的數據結構 |
TreeMap | 一種鍵值有序排列的映射表 |
EnumMap | 一種鍵值屬于枚舉類型的映射表 |
LinkedHashMap | 一種可以記住鍵/值項添加次序的映射表 |
WeakHashMap | 一種其值無用武之地后可以被垃圾回收期回收的映射表 |
IdentityHashMap | 一種用==而不是用equals比較鍵值的映射表 |
List接口擴展自Collection,它可以定義一個允許重復的有序集合,從List接口中的方法來看,List接口主要是增加了面向位置的操作,允許在指定位置上操作元素,同時增加了一個能夠雙向遍歷線性表的新列表迭代器ListIterator。List接口有動態數組(ArrayList類)和雙端鏈表(LinkedList類)兩種實現方式。
ListIterator<E> listIterator() ListIterator<E> listIterator(int index) | 返回一個列表迭代器 迭代器第一次調用next返回給定位置元素 |
void add(int i, E element) void addAll(int i, Colletion<? extend E> elements) | 向集合指定位置添加元素 |
E remove(int i) | 刪除給定位置元素并返回 |
E get(int i) | 獲得給定位置元素并返回 |
E set(int i, E element) | 設置給定位置元素并返回原來的元素 |
int indexOf(Object element) int lastIndexOf(Object element) | 返回與指定元素相等元素在列表中第一次出現的位置 返回與指定元素相等元素在列表中最后一次出現的位置 |
void add(E Element) | 在當前位置添加一個元素 |
void set(E Element) | 用新元素代替next或previous上次訪問的元素 |
boolean havaPrevious() | 反向迭代列表時是否還有可供訪問的值 |
E previous() | 返回前一個對象 |
int nextIndex() | 返回下一次調用next時返回的元素索引 |
int previousIndex() | 返回下一次調用previous時返回的元素索引 |
ArrayList<E>() | 構造一個空數組列表 |
boolean add(E obj) | 在數組列表尾端添加一個元素,永遠返回true |
int size() | 返回存儲在數組中的當前元素數量 |
void set(int index, E obj) | 設置數組列表指定位置的值 |
E get(int index) | 獲的指定位置的元素值 |
void add(int index, E obj) | 向后移動元素,插入元素 |
E remove(int index) | 刪除一個元素,并將后面元素前移 |
LinkedList() LinkedList(Colletion<? extend E> elements) | 構造一個鏈表 |
void addFirst(E element) void addLast(E element) | 添加元素到表頭或表尾 |
E getFirst() E getLast() | 返回表頭或表尾的元素 |
E removeFirst() E removeLast() | 刪除表頭或表尾的元素并返回 |
Set接口擴展自Collection,它與List的不同之處在于,規定Set的實例不包含重復的元素。在一個規則集內,一定不存在兩個相等的元素。AbstractSet是一個實現Set接口的抽象類,Set接口有三個具體實現類,分別是散列集HashSet、鏈式散列集LinkedHashSet和樹形集TreeSet。
HashSet() HashSet(Colletion<? extend E> elements) HashSet(int initialCapacity) | 構造散列表 |
LinkedHashSet是用一個鏈表實現來擴展HashSet類,它支持對規則集內的元素排序。HashSet中的元素是沒有被排序的,而LinkedHashSet中的元素可以按照它們插入規則集的順序提取。
java.util.TreeSet<E>TreeSet擴展自AbstractSet,并實現了NavigableSet,AbstractSet擴展自AbstractCollection,樹形集是一個有序的Set,其底層是一顆樹,用紅黑樹實現,這樣就能從Set里面提取一個有序序列了。在實例化TreeSet時,我們可以給TreeSet指定一個比較器Comparator來指定樹形集中的元素順序。樹形集中提供了很多便捷的方法。
boolean add(E element) boolean offer(E element) | 如果隊列沒有滿,將元素添加到隊列尾部 |
E remove() E poll() | 如果隊列不為空,刪除并返回這個隊列頭部元素 |
E element() E peek() | 如果隊列不為空,返回這個隊列頭部元素 |
接口Deque,是一個擴展自Queue的雙端隊列,它支持在兩端插入和刪除元素,Deque接口由ArrayDeque和LinkedList這兩個類實現,所以通常我們可以使用LinkedList來創建一個隊列。PriorityQueue類實現了一個優先隊列,優先隊列中元素被賦予優先級,擁有高優先級的先被刪除。
優先級隊列中的元素可以按任意順序插入,卻總是按照排序的順序進行檢索。優先級隊列由堆實現。堆是一個可以自我調整的二叉樹,對樹執行添加和刪除操作,可以讓最小元素移動到根(最小堆),而不必花費時間對元素進行排序
Map,圖,是一種存儲鍵值對映射的容器類,在Map中鍵可以是任意類型的對象,但不能有重復的鍵,每個鍵都對應一個值,真正存儲在圖中的是鍵值構成的條目。
V get(Object key) | 獲得與鍵對應的值 |
V put(K key, V value) V putAll(Map<? extends K, ? extends V> entries) | 將鍵與對應的值關系插入到映射中 |
boolean containKey(Object key) boolean containValue(Object value) | 查詢 |
HashMap是基于哈希表的Map接口的非同步實現,繼承自AbstractMap,AbstractMap是部分實現Map接口的抽象類。在之前的版本中,HashMap采用數組+鏈表實現,即使用鏈表處理沖突,同一hash值的鏈表都存儲在一個鏈表里。但是當鏈表中的元素較多,即hash值相等的元素較多時,通過key值依次查找的效率較低。而JDK1.8中,HashMap采用數組+鏈表+紅黑樹實現,當鏈表長度超過閾值(8)時,將鏈表轉換為紅黑樹,這樣大大減少了查找時間。
LinkedHashMap繼承自HashMap,它主要是用鏈表實現來擴展HashMap類,HashMap中條目是沒有順序的,但是在LinkedHashMap中元素既可以按照它們插入圖的順序排序,也可以按它們最后一次被訪問的順序排序。
TreeMap基于紅黑樹數據結構的實現,鍵值可以使用Comparable或Comparator接口來排序。TreeMap繼承自AbstractMap,同時實現了接口NavigableMap,而接口NavigableMap則繼承自SortedMap。SortedMap是Map的子接口,使用它可以確保圖中的條目是排好序的。在實際使用中,如果更新圖時不需要保持圖中元素的順序,就使用HashMap,如果需要保持圖中元素的插入順序或者訪問順序,就使用LinkedHashMap,如果需要使圖按照鍵值排序,就使用TreeMap。
下面主要介紹一下其它幾個特殊的集合類,Vector、Stack、HashTable、ConcurrentHashMap以及CopyOnWriteArrayList。
用法上,Vector與ArrayList基本一致,不同之處在于Vector使用了關鍵字synchronized將訪問和修改向量的方法都變成同步的了,所以對于不需要同步的應用程序來說,類ArrayList比類Vector更高效。
Stack,棧類,是Java2之前引入的,繼承自類Vector。
HashTable和前面介紹的HashMap很類似,它也是一個散列表,存儲的內容是鍵值對映射,不同之處在于,HashTable是繼承自Dictionary的,HashTable中的函數都是同步的,這意味著它也是線程安全的,另外,HashTable中key和value都不可以為null。
ConcurrentHashMap是HashMap的線程安全版。同HashMap相比,ConcurrentHashMap不僅保證了訪問的線程安全性,而且在效率上與HashTable相比,也有較大的提高。
CopyOnWriteArrayList,是一個線程安全的List接口的實現,它使用了ReentrantLock鎖來保證在并發情況下提供高性能的并發讀取。
CopyOnWriteArraySet,是一個線程安全的set接口的實現,它使用了ReentrantLock鎖來保證在并發情況下提供高性能的并發讀取。
ConcurrentLinkedQuerue是一個先進先出的隊列。它是非阻塞隊列。
ConcurrentSkipListMap可以在高效并發中替代SoredMap(例如用Collections.synchronzedMap包裝的TreeMap)。
ConcurrentSkipListSet可以在高效并發中替代SoredSet(例如用Collections.synchronzedSet包裝的TreeMap)。
static <T extends Comparable<? super T>> void java.util.Collections.sort(List<T> elements,[new Comparator<T>(){ public int compare(T o1, T o2){return ...} } ]) | 對列表元素排序 |
static <T extends Comparable<? super T>> int java.util.Collections.binarySearch(List<T> elements, T key) | 二分查找key,返回對象索引 |
static <T> java.util.Collections.min(Collection<T> elements, Comparator<? super T> c) static <T> java.util.Collections.max(Collection<T> elements, Comparator<? super T> c) | 查找最小值/最大值 |
void run() | 必須覆蓋這個方法 |
Thread() Thread(Runnable target) | 構造器 |
void start() | 啟動線程 |
void run() | 如果沒有重寫,調用關聯Runnable的run方法 |
void interupt() | 中斷線程(中止阻塞狀態,對運行線程無作用) |
void setPriority(int newPriority) | 設置優先級(1-10,默認5) |
static void yield() static void sleep(long millis) | 使當前線程處于讓步狀態(讓步于同優先級或高優先級線程) 休眠 |
void setDaemon() | 設置為守護線程 |
Thread.State getState() | 獲得線程當前狀態 |
ReentrantLock myLock = new ReentrantLock(); mylock.lock(); try{ critical section }finally{ mylock.unlock(); }
private ReetranLock mylock = new ReetranLock(); private Condition sufficientFunds = mylock.newCondition() public void transfer(int from, int amount) { mylock.lock(); try{ while(account[from] < amount){ sufficientFunds.await(); } ... sufficientFunds.singalAll(); }finally{ mylock.unlock(); } }
格式1:synchronized 方法
格式2:synchronized(obj){}
void notifyAll() | 解除在對象上調用wait方法的線程的阻塞狀態 |
void wait() | 導致線程進入等待狀態 |
volatile只提供可見性(在線程工作內存中被修改后立即寫入到主存中),不提供原子性。
使用final變量可以保證可見性:構造函數完成時即不變,未完成構造期間對其他線程不可見。
作用:將內存共享變量變為線程拷貝變量
1)調用Executors類(工廠類)中靜態工廠方法newCacherThreadPool
2)調用submit提交Runnable或Callable對象
3)當不再提交任何任務時,調用shutdown
以上就是關于“JAVA常用API有哪些及怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。