1、Scanner 輸入:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 讀取整數int num = scanner.nextInt();// 讀取一行字符串String line = scanner.nextLine();scanner.close();}
}
2、二進制、八進制、十進制、十六進制
以十進制數42為例十進制:
int decimalNumber = 42;?二進制:
int binaryNumber = 0b101010; // 以0b或0B作為前綴八進制:
int octalNumber = 052; // 以0作為前綴十六進制:
int hexNumber = 0x2a; // 以0x或0X作為前綴
3、Integer 等包裝類
int intValue() 返回Integer對象的int類型值。static int MAX_VALUE int的最大值static int MIN_VALUE int的最小值static int parseInt(String s) 將字符串以十進制解析為int。static int parseInt(String s, int radix) 將字符串以指定進制解析為int。static String toString(int i) 返回int的十進制字符串對象。static String toString(int i, int radix) 返回int的指定進制字符串對象。static Integer valueOf(String s) 將字符串以十進制解析為Integer對象。static Integer valueOf(String s, int radix) 將字符串以指定進制解析為Integer對象。
4、移位運算符
<<:右邊用0填充。>>>:左邊用0填充。>>:左邊用最高位相同的值填充。
5、按位運算符
按位與 & ???? 按位或 | ???? 按位異或 ^ ???? 按位非 ~
位值 | 位值 | & | | | ^ |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
6、String
常用構造方法:
new String() 創建一個空字符串對象。new String(byte[] bytes, String charsetName) 創建一個由指定字符集解碼的字符串對象。new String(char[] value) 創建一個包含字符序列的字符串對象。new String(StringBuilder builder) 創建一個表示builder字符序列的字符串對象。常用API:
char charAt(int index) 返回指定索引處的char。int compareTo(String anotherString) 按字典順序比較兩個字符串。
示例:
"1".compareTo("9") // <0
"1".compareTo("1") // 0
"9".compareTo("1") // >0int compareToIgnoreCase(String str) 按字典順序比較兩個字符串,忽略大小寫。boolean contains(CharSequence s) 當且僅當此字符串包含指定的字符序列時才返回true。boolean startsWith(String prefix) 測試此字符串是否以指定的前綴開頭。boolean startsWith(String prefix, int toffset) 測試此字符串在指定索引開始的子字符串是否以指定的前綴開頭,toffset從0開始。boolean endsWith(String suffix) 測試此字符串是否以指定的后綴結尾。boolean equals(Object anObject) 將此字符串與指定對象進行比較。boolean equalsIgnoreCase(String anotherString) 將此字符串與anotherString比較,忽略大小寫。byte[] getBytes(String charsetName) 使用charsetName字符集將此字符串編碼為字節序列,將結果存儲到新的字節數組中。int indexOf(String str) 返回指定子字符串第一次出現在字符串內的索引。int indexOf(String str, int fromIndex) 返回指定子字符串第一次出現在字符串中的索引,從fromIndex開始搜索,fromIndex從0開始。int lastIndexOf(String str) 返回指定子字符串最后一次出現在字符串中的索引。int lastIndexOf(String str, int fromIndex) 返回指定子字符串最后一次出現在字符串中的索引,從fromIndex開始向后搜索,fromIndex從0開始。int length() 返回此字符串的長度。boolean matches(String regex) 判定此字符串是否匹配給定的正則表達式regex。String replace(char oldChar, char newChar) 返回用newChar替換了所有oldChar后的字符串。String replaceAll(String regex, String replacement) 返回用replacement替換了所有匹配正則表達式regex子字符串后的字符串。String replaceFirst(String regex, String replacement) 返回用replacement替換了第一個匹配正則表達式regex子字符串后的字符串。String[] split(String regex) 以regex將此字符串進行分割。String substring(int beginIndex) 返回一個從beginIndex開始的子字符串,beginIndex從0開始。String substring(int beginIndex, int endIndex) 返回一個從beginIndex到endIndex的子字符串,beginIndex從0開始。char[] toCharArray() 將此字符串轉換為新的字符數組。String toLowerCase() 將字符串所有字符轉換為小寫。String toUpperCase() 將字符串所有字符轉換為大寫。String trim() 返回一個刪除任何前導和尾隨空格的字符串。static String valueOf(int i) 返回int參數的字符串int形式。字符串排序示例:
import java.util.Arrays;public class MainTest {public static void main(String[] args) {String str = "Hello World";char[] charArray = str.toCharArray();Arrays.sort(charArray);String sortedString = new String(charArray);System.out.println(sortedString); // 輸出: HWdellloor}
}字符串統計示例:
import java.util.HashMap;
import java.util.Map;public class MainTest {public static void main(String[] args) {String str = "Hello World";Map<Character, Integer> countMap = new HashMap<>();for (char ch : str.toCharArray()) {countMap.put(ch, countMap.getOrDefault(ch, 0) + 1);}System.out.println(countMap); // 輸出:{ =1, r=1, d=1, e=1, W=1, H=1, l=3, o=2}}
}
7、StringBuilder
常用構造方法:
new StringBuilder() 創建一個初始容量為16個字符的字符串構建器。new StringBuilder(String str) 創建一個初始化為指定字符串內容的字符串構建器。常用API:
StringBuilder append(String str) 將指定的字符串添加到此字符序列末尾。StringBuilder delete(int start, int end) 刪除此字符序列從start到end的字符,左閉右開,start從0開始。StringBuilder deleteCharAt(int index) 刪除這個字符序列中指定位置的char。StringBuilder insert(int offset, String str) 將str插入到此字符序列指定位置。StringBuilder replace(int start, int end, String str) 將start到end用str替換。StringBuilder reverse() 反轉此字符序列。
8、Collection
Collection<E> (I)集合||-- List<E> (I)有序的 Collection (與元素插入順序一致),也稱為序列。| || |-- Stack<E> (C)棧,后進先出。| || |-- ArrayList<E> (C)使用數組實現。| || |-- LinkedList<E> (C)使用雙向鏈表實現。||-- Set<E> (I)不含重復元素的 Collection,最多包含一個 null 元素。| || |-- HashSet<E> (C)無序的,與元素插入順序無關。| || |-- LinkedHashSet<E> (C)有序的,與元素插入順序一致。| || |-- TreeSet<E> (C)使用元素的自然順序排序,或者根據提供的 Comparator 排序。||-- Queue<E> (I)隊列,先進先出;從隊列尾部添加元素,從隊列頭部刪除元素。| || |-- PriorityQueue<E> (C)優先隊列| || |-- LinkedList<E> (C)雙向隊列,支持在隊列兩端插入和刪除元素。Stack常用API:
boolean empty() 判斷棧是否為空。E peek() 返回棧頂對象,而不將其從棧中刪除。棧為空拋異常。E pop() 返回棧頂對象,并將其從棧中刪除。棧為空拋異常。E push(E item) 將對象添加到棧頂。int search(Object o) 返回對象在此棧上的位置,棧頂為1。ArrayList常用API:
boolean add(E e) 將指定的元素追加到此列表的末尾。void add(int index, E element) 在此列表中的指定位置插入指定的元素。boolean addAll(Collection<? extends E> c) 按指定集合中的所有元素追加到此列表的末尾。boolean addAll(int index, Collection<? extends E> c) 將指定集合中的所有元素插入到此列表中,從指定的位置開始。boolean contains(Object o) 如果此列表包含指定的元素,則返回true。boolean containsAll(Collection<?> c) 如果此集合包含指定集合中的所有元素,則返回true。boolean retainAll(Collection<?> c) 獲取兩個集合的交集,即只保留原集合與指定集合相同的元素。E set(int index, E element) 用指定的元素替換此列表中指定位置的元素。E remove(int index) 刪除該列表中指定位置的元素。boolean remove(Object o) 從列表中刪除第一個指定的元素。boolean removeAll(Collection<?> c) 從此列表中刪除指定集合中包含的所有元素。boolean removeIf(Predicate<? super E> filter) 刪除此集合中滿足給定謂詞的所有元素。
示例:
List<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b");
list.removeIf(x -> x.equals("a")); // [b]protected void removeRange(int fromIndex, int toIndex) 從這個列表中刪除所有索引在fromIndex和toIndex之間的元素,左閉右開。public boolean equals(Object o) 比較兩個列表是否相等,兩個列表都具有相同的大小,并且兩個列表中所有相應的元素對相等。void replaceAll(UnaryOperator<E> operator) 對列表的每個元素應用一個函數,并用函數返回的結果替換原值。
示例:
List<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b");
list.replaceAll(x -> x + "x"); // [ax, bx]E get(int index) 返回此列表中指定位置的元素。void clear() 從列表中刪除所有元素。boolean isEmpty() 如果此列表不包含元素,則返回true。int size() 返回此列表中的元素數。Iterator<E> iterator() 返回該列表的迭代器。int indexOf(Object o) 返回此列表中指定元素的第一次出現的索引,如果此列表不包含元素,則返回-1。int lastIndexOf(Object o) 返回此列表中指定元素的最后一次出現的索引,如果此列表不包含元素,則返回-1。void sort(Comparator<? super E> c) 使用提供的Comparator對此列表進行排序。Stream<E> stream() 返回此集合的Stream。Object[] toArray() 以正確的順序返回一個包含此列表中所有元素的數組。<T> T[] toArray(T[] a) 以正確的順序返回一個包含此列表中所有元素的數組; 返回的數組的運行時類型是指定數組的運行時類型。
示例:
List<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b");
String[] arr = list.toArray(new String[0]); // [a, b]LinkedList常用API:
void push(E e) 將元素添加到列表頭部。E peek() 返回列表頭部元素,并不刪除;如果沒有元素返回null。E poll() 返回并刪除列表頭部元素;如果沒有元素返回null。boolean offer(E e) 將指定的元素添加到此列表的尾部,添加成功返回true,失敗返回false。PriorityQueue:
PriorityQueue() 創建一個初始容量為11的優先隊列。PriorityQueue(Comparator<? super E> comparator) 創建一個初始容量為11的優先隊列,并且其元素根據指定的比較器進行排序。常用API:
boolean add(E e) 將指定的元素插入此優先級隊列。void clear() 從這個優先級隊列中移除所有元素。boolean contains(Object o) 如果此隊列包含指定的元素,則返回true。boolean containsAll(Collection<?> c) 如果此集合包含指定集合中的所有元素,則返回true。Iterator<E> iterator() 返回此隊列中元素的迭代器。E peek() 返回列表頭部元素,并不刪除;如果沒有元素返回null。E poll() 返回并刪除列表頭部元素;如果沒有元素返回null。boolean remove(Object o) 從隊列中刪除一個指定元素(如果存在)。Object[] toArray() 以正確的順序返回一個包含此列表中所有元素的數組。<T> T[] toArray(T[] a) 以正確的順序返回一個包含此列表中所有元素的數組; 返回的數組的運行時類型是指定數組的運行時類型。
示例:
PriorityQueue<String> priorityQueue = new PriorityQueue();
Collections.addAll(priorityQueue, "c", "a", "b");
String[] arr = priorityQueue.toArray(new String[0]); // [a, c, b]
9、Map
Map<K,V> (I)鍵值對(key-value)。||-- HashMap<K,V> (C)最多只允許一條記錄的 key 為 null;無序的,與元素插入順序無關。||-- LinkedHashMap<K,V> (C)有序的,與元素插入順序一致。 ||-- TreeMap<K,V> (C)最多只允許一條記錄的 key 為 null;根據key的自然順序排序,或者根據提供的 Comparator 排序。HashMap常用API:
void clear() 刪除所有鍵值對。boolean containsKey(Object key) 如果此映射包含指定鍵的映射,則返回true。boolean containsValue(Object value) 如果此映射將一個或多個鍵映射到指定值,則返回true。boolean equals(Object o) 將指定的對象與此映射進行比較。 void forEach(BiConsumer<? super K,? super V> action) 對此映射中的每個鍵值執行給定的操作,直到所有條目都被處理或操作引發異常。
示例:
HashMap<String, String> hashMap = new HashMap();
hashMap.put("a","aa");
hashMap.put("b","bb");
hashMap.forEach((x, y) -> System.out.println(x + "->" + y)); // a->aa b->bbV get(Object key) 返回指定鍵所映射的值,如果沒有則返回null。boolean isEmpty() 如果此映射不包含鍵值對,則返回true。int size() 返回此映射中鍵值對的數量。Set<K> keySet() 返回此映射中包含的鍵的Set集合。Collection<V> values() 返回此映射中包含的值的Collection列表。V put(K key, V value) 新增鍵值對。void putAll(Map<? extends K,? extends V> m) 添加映射m,如果有相同的鍵值對替換原鍵值對。V putIfAbsent(K key, V value) 如何不存在的key才新增,避免替換原鍵值對。V remove(Object key) 從該映射中刪除指定鍵的映射(如果存在)。boolean remove(Object key, Object value) 僅當與指定鍵值對相等時才刪除。boolean replace(K key, V oldValue, V newValue) 僅當key-oldValue存在,才能用newValue替換oldValue。void replaceAll(BiFunction<? super K,? super V,? extends V> function) 將鍵值對的值替換為對該鍵值對調用給定函數的結果,直到所有條目都被處理或該函數拋出異常。
示例:
Map<String, String> map = new HashMap<>();
map.put("a", "b");
map.replaceAll((k,v) -> v.concat("d"));
System.out.println(map); // {a=bd}V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 如果key存在,則計算后更新value;如果key不存在,則將key-value插入。
示例:
Map<String, String> map = new HashMap<>();
map.put("a", "b");
map.compute("a", (k,v) -> v.concat("d"));
System.out.println(map); // {a=bd}Map<String, String> map = new HashMap<>();
map.compute("a", (k,v) -> "d");
System.out.println(map); // {a=d};這里不能 v.concat("d"),會報空指針異常。V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) 如果key不存在才會執行函數,并將結果插入。V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 如果key存在才會執行函數,并用結果替換原value。
如果指定的密鑰的值存在且非空,則嘗試計算給定密鑰及其當前映射值的新映射。V getOrDefault(Object key, V defaultValue) 如何存在key,返回對于value;如果不存在key,返回后面的默認值。
示例:
List<String> list = new ArrayList<>();
Collections.addAll(list, "wang1", "wang3");Map<String, List<String>> map = new HashMap<>();
map.put("wang", list);list = map.getOrDefault("wang", new ArrayList<String>());
System.out.println(list); // [wang1, wang3]list = map.getOrDefault("zhang", new ArrayList<String>());
System.out.println(list); // []
10、Iterator迭代器
定義:
public interface Iterator<E> 對 collection 進行迭代的迭代器。API:
boolean hasNext() 如果仍有元素可以迭代,則返回 true。E next() 返回迭代的下一個元素。 void remove() 從集合中刪除迭代器最后訪問的元素(可選操作)。
11、Comparator比較器
定義:
public interface Comparator<T> 強制對某些對象集合進行總排序的比較函數。API:
int compare(T o1, T o2) 比較用來排序的兩個參數。 注:o1 - o2 是升序。boolean equals(Object obj) 指示某個其他對象是否“等于”此 Comparator。 示例:
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 3, 2, 1);
Collections.sort(list, (o1, o2) -> o1 - o2);
System.out.println(list); // [1, 2, 3]
12、Collections類
boolean Collections.addAll(Collection<? super T> c, T... elements) 將多個元素添加到集合中,每個元素用逗號隔開。 boolean Collections.disjoint(Collection<?> c1, Collection<?> c2) 判定兩個集合沒有相同的元素,沒有相同元素返回true,有相同元素返回false。void Collections.fill(List<? super T> list, T obj) 使用指定元素替換list中的所有元素,有元素才會替換。static int frequency(Collection<?> c, Object o) 返回集合中指定元素出現的次數。 void Collections.sort(List<T> list) 根據元素的自然順序對指定列表按升序進行排序。 void Collections.sort(List<T> list, Comparator<? super T> c) 根據指定的比較器對指定列表進行排序。 T Collections.max(Collection<? extends T> coll) 根據元素的自然順序,返回給定 coll 的最大元素。 T Collections.max(Collection<? extends T> coll, Comparator<? super T> comp) 根據指定比較器比較,返回給定 coll 的最大元素。 T Collections.min(Collection<? extends T> coll) 根據元素的自然順序 返回給定 coll 的最小元素。 T Collections.min(Collection<? extends T> coll, Comparator<? super T> comp) 根據指定比較器比較,返回給定 coll 的最小元素。 boolean Collections.replaceAll(List<T> list, T oldVal, T newVal) 使用newVal值替換列表中出現的所有oldVal值。 void Collections.reverse(List<?> list) 反轉指定列表中元素的順序。 void swap(List<?> list, int i, int j) 交換指定元素在列表中的位置。
13、Arrays類
int[] Arrays.copyOf(int[] original, int newLength) 返回指定長度為newLength的數組,它的前newLength個元素為數組original的前newLength個元素,如果超出數組original的長度則用0填充。int[] Arrays.copyOfRange(int[] original, int from, int to) 返回將指定數組的指定范圍復制到新數組中。boolean Arrays.equals(int[] a, int[] a2) 如果指定的兩個int數組每個元素都相等,則返回true。boolean Arrays.deepEquals(Object[] a1, Object[] a2) 如果指定的兩個多維數組每個元素都相等,則返回true。static void fill(int[] a, int val) 用指定int值替換數組中的每一個元素。static void fill(int[] a, int fromIndex, int toIndex, int val) 用指定int值替換數組中的從fromIndex到toIndex的元素。String Arrays.toString(int[] a) 返回指定數組內容的字符串表示形式。String Arrays.deepToString(Object[] a) 返回指定多維數組內容的字符串表示形式。void Arrays.sort(int[] a) 按照自然順序排列數組。void Arrays.sort(int[] a, int fromIndex, int toIndex) 按自然順序排列數組的指定范圍。void Arrays.sort(T[] a, Comparator<? super T> c) 根據指定的比較器對指定的對象數組進行排序。
只能用于對象數組排序,不能用于基本數據類型。Arrays.sort(a, (x, y) -> x.compareTo(y)) 升序。void Arrays.sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) 根據指定的比較器對指定的對象數組的指定范圍進行排序。
只能用于對象數組排序。Stream<T> Arrays.stream(T[] array) 返回array的Stream流。
14、Math常用API
static int abs(int a) 返回int值的絕對值。static int max(int a, int b) 返回兩個值中的較大者。static int min(int a, int b) 返回兩個值中的較小者。