国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

Java 備忘清單

該備忘單是針對 Java 初學者的速成課程,有助于復習 Java 語言的基本語法。

入門

Hello.java

public class Hello {
  // 主要方法
  public static void main(String[] args)
  {
    // 輸出: Hello, world!
    System.out.println("Hello, world!");
  }
}

編譯和運行

$ javac Hello.java
$ java Hello
Hello, world!

變量 Variables

int num = 5;
float floatNum = 5.99f;
char letter = 'D';
boolean bool = true;
String site = "jaywcjlove.github.io";

原始數(shù)據(jù)類型

數(shù)據(jù)類型大小默認范圍
byte1 byte0-128 ^to^ 127
short2 byte0-2^15^ ^to^ 2^15^-1
int4 byte0-2^31^ ^to^ 2^31^-1
long8 byte0-2^63^ ^to^ 2^63^-1
float4 byte0.0fN/A
double8 byte0.0dN/A
char2 byte\u00000 ^to^ 65535
booleanN/Afalsetrue / false

字符串 Strings

String first = "John";
String last = "Doe";
String name = first + " " + last;
System.out.println(name);

查看: Strings

循環(huán) Loops

String word = "QuickRef";
for (char c: word.toCharArray()) {
  System.out.print(c + "-");
}
// 輸出: Q-u-i-c-k-R-e-f-

查看: Loops

數(shù)組 Arrays

char[] chars = new char[10];
chars[0] = 'a'
chars[1] = 'b'
String[] letters = {"A", "B", "C"};
int[] mylist = {100, 200};
boolean[] answers = {true, false};

查看: Arrays

交換變量 Swap

int a = 1;
int b = 2;
System.out.println(a + " " + b); // 1 2
int temp = a;
a = b;
b = temp;
System.out.println(a + " " + b); // 2 1

類型轉(zhuǎn)換 Type Casting

// Widening
// byte<short<int<long<float<double
int i = 10;
long l = i;               // 10
// Narrowing 
double d = 10.02;
long l = (long)d;         // 10
String.valueOf(10);       // "10"
Integer.parseInt("10");   // 10
Double.parseDouble("10"); // 10.0

條件語句 Conditionals

int j = 10;
if (j == 10) {
  System.out.println("I get printed");
} else if (j > 10) {
  System.out.println("I don't");
} else {
  System.out.println("I also don't");
}

查看: [Conditionals](#條件語句 Conditionals)

用戶輸入

Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(str);
int num = in.nextInt();
System.out.println(num);

Java 字符串

基本的

String str1 = "value"; 
String str2 = new String("value");
String str3 = String.valueOf(123);

字符串連接

String s = 3 + "str" + 3;     // 3str3
String s = 3 + 3 + "str";     // 6str
String s = "3" + 3 + "str";   // 33str
String s = "3" + "3" + "23";  // 3323
String s = "" + 3 + 3 + "23"; // 3323
String s = 3 + 3 + 23;        // 29

字符串生成器

StringBuilder sb = new StringBuilder(10);

┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
|   |   |   |   |   |   |   |   |   |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0   1   2   3   4   5   6   7   8   9

sb.append("Reference");

┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| R | e | f | e | r | e | n | c | e |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0   1   2   3   4   5   6   7   8   9

sb.delete(3, 9);

┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| R | e | f |   |   |   |   |   |   |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0   1   2   3   4   5   6   7   8   9

sb.insert(0, "My ");

┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y |   | R | e | f |   |   |   |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0   1   2   3   4   5   6   7   8   9

sb.append("!");

┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y |   | R | e | f | ! |   |   |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0   1   2   3   4   5   6   7   8   9

比較

String s1 = new String("QuickRef"); 
String s2 = new String("QuickRef"); 
s1 == s2          // false
s1.equals(s2)     // true
"AB".equalsIgnoreCase("ab")  // true

操縱

String str = "Abcd";
str.toUpperCase();     // ABCD
str.toLowerCase();     // abcd
str.concat("#");       // Abcd#
str.replace("b", "-"); // A-cd
"  abc ".trim();       // abc
"ab".toCharArray();    // {'a', 'b'}

信息

String str = "abcd";
str.charAt(2);       // c
str.indexOf("a")     // 0
str.indexOf("z")     // -1
str.length();        // 4
str.toString();      // abcd
str.substring(2);    // cd
str.substring(2,3);  // c
str.contains("c");   // true
str.endsWith("d");   // true
str.startsWith("a"); // true
str.isEmpty();       // false

不可變

String str = "hello";
str.concat("world");
// 輸出: hello
System.out.println(str);

String str = "hello";
String concat = str.concat("world");
// 輸出: helloworld
System.out.println(concat);

一旦創(chuàng)建就不能修改,任何修改都會創(chuàng)建一個新的String

Java 數(shù)組

聲明 Declare

int[] a1;
int[] a2 = {1, 2, 3};
int[] a3 = new int[]{1, 2, 3};
int[] a4 = new int[3];
a4[0] = 1;
a4[2] = 2;
a4[3] = 3;

修改 Modify

int[] a = {1, 2, 3};
System.out.println(a[0]); // 1
a[0] = 9;
System.out.println(a[0]); // 9
System.out.println(a.length); // 3

循環(huán) (讀 & 寫)

int[] arr = {1, 2, 3};
for (int i=0; i < arr.length; i++) {
    arr[i] = arr[i] * 2;
    System.out.print(arr[i] + " ");
}
// 輸出: 2 4 6

Loop (Read)

String[] arr = {"a", "b", "c"};
for (int a: arr) {
    System.out.print(a + " ");
}
// 輸出: a b c 

二維數(shù)組 Multidimensional Arrays

int[][] matrix = { {1, 2, 3}, {4, 5} };
int x = matrix[1][0];  // 4
// [[1, 2, 3], [4, 5]]
Arrays.deepToString(matrix)
for (int i = 0; i < a.length; ++i) {
  for(int j = 0; j < a[i].length; ++j) {
    System.out.println(a[i][j]);
  }
}
// 輸出: 1 2 3 4 5 6 7 

排序 Sort

char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);

Java 條件語句

運算符

  • + (加法運算符(也用于字符串連接))
  • - (減法運算符)
  • * (乘法運算符)
  • / (分區(qū)運算符)
  • % (余數(shù)運算符)
  • = (簡單賦值運算符)
  • ++ (增量運算符;將值增加 1)
  • -- (遞減運算符;將值減 1)
  • ! (邏輯補碼運算符;反轉(zhuǎn)布爾值)

  • == (等于)
  • != (不等于)
  • > (比...更棒)
  • >= (大于或等于)
  • < (少于)
  • <= (小于或等于)

  • && 條件與
  • || 條件或
  • ?: 三元(if-then-else 語句的簡寫)

  • instanceof (將對象與指定類型進行比較)

  • ~ (一元按位補碼)
  • << (簽名左移)
  • >> (有符號右移)
  • >>> (無符號右移)
  • & (按位與)
  • ^ (按位異或)
  • | (按位包含 OR)

If else

int k = 15;
if (k > 20) {
  System.out.println(1);
} else if (k > 10) {
  System.out.println(2);
} else {
  System.out.println(3);
}

Switch

int month = 3;
String str;
switch (month) {
  case 1:
    str = "January";
    break;
  case 2:
    str = "February";
    break;
  case 3:
    str = "March";
    break;
  default:
    str = "Some other month";
    break;
}
// 輸出: Result March
System.out.println("Result " + str);

三元運算符

int a = 10;
int b = 20;
int max = (a > b) ? a : b;
// 輸出: 20
System.out.println(max);

Java 循環(huán)

For 循環(huán)

for (int i = 0; i < 10; i++) {
  System.out.print(i);
}
// 輸出: 0123456789

for (int i = 0,j = 0; i < 3; i++,j--) {
  System.out.print(j + "|" + i + " ");
}
// 輸出: 0|0 -1|1 -2|2

增強的 For 循環(huán)

int[] numbers = {1,2,3,4,5};
for (int number: numbers) {
  System.out.print(number);
}
// 輸出: 12345

用于循環(huán)數(shù)組或列表

While 循環(huán)

int count = 0;
while (count < 5) {
  System.out.print(count);
  count++;
}
// 輸出: 01234

Do While 循環(huán)

int count = 0;
do {
  System.out.print(count);
  count++;
} while (count < 5);
// 輸出: 01234

繼續(xù)聲明

for (int i = 0; i < 5; i++) {
  if (i == 3) {
    continue;
  }
  System.out.print(i);
}
// 輸出: 01245

中斷語句

for (int i = 0; i < 5; i++) {
  System.out.print(i);
  if (i == 3) {
    break;
  }
}
// 輸出: 0123

Java 框架搜集

Java 集合

集合Interface有序已排序線程安全復制Nullable
ArrayListListYNNYY
VectorListYNYYY
LinkedListList, DequeYNNYY
CopyOnWriteArrayListListYNYYY
HashSetSetNNNNOne null
LinkedHashSetSetYNNNOne null
TreeSetSetYYNNN
CopyOnWriteArraySetSetYNYNOne null
ConcurrentSkipListSetSetYYYNN
HashMapMapNNNN (key)One null (key)
HashTableMapNNYN (key)N (key)
LinkedHashMapMapYNNN (key)One null (key)
TreeMapMapYYNN (key)N (key)
ConcurrentHashMapMapNNYN (key)N
ConcurrentSkipListMapMapYYYN (key)N
ArrayDequeDequeYNNYN
PriorityQueueQueueYNNYN
ConcurrentLinkedQueueQueueYNYYN
ConcurrentLinkedDequeDequeYNYYN
ArrayBlockingQueueQueueYNYYN
LinkedBlockingDequeDequeYNYYN
PriorityBlockingQueueQueueYNYYN

ArrayList

List<Integer> nums = new ArrayList<>();
// 添加
nums.add(2);
nums.add(5);
nums.add(8);
// 檢索
System.out.println(nums.get(0));
// 為循環(huán)迭代編制索引
for (int i = 0; i < nums.size(); i++) {
    System.out.println(nums.get(i));
}
nums.remove(nums.size() - 1);
nums.remove(0); // 非常慢
for (Integer value : nums) {
    System.out.println(value);
}

HashMap

Map<Integer, String> m = new HashMap<>();
m.put(5, "Five");
m.put(8, "Eight");
m.put(6, "Six");
m.put(4, "Four");
m.put(2, "Two");
// 檢索
System.out.println(m.get(6));
// Lambda forEach
m.forEach((key, value) -> {
    String msg = key + ": " + value;
    System.out.println(msg);
});

ConcurrentHashMap

ConcurrentHashMap<Integer, String> m
            = new ConcurrentHashMap<>();
m.put(100, "Hello");
m.put(101, "Geeks");
m.put(102, "Geeks");
// 移除
m.remove(101, "Geeks");

// 如果不存在,就添加,存在就不變更
m.putIfAbsent(103, "Hello");
 
// 替換
m.replace(101, "Hello", "For");
System.out.println(m);

HashSet

Set<String> set = new HashSet<>();
if (set.isEmpty()) {
    System.out.println("Empty!");
}
set.add("dog");
set.add("cat");
set.add("mouse");
set.add("snake");
set.add("bear");
if (set.contains("cat")) {
    System.out.println("Contains cat");
}
set.remove("cat");
for (String element : set) {
    System.out.println(element);
}

ArrayDeque

Deque<String> a = new ArrayDeque<>();
// 使用 add()
a.add("Dog");
// 使用 addFirst()
a.addFirst("Cat");
// 使用 addLast()
a.addLast("Horse");
// [Cat, Dog, Horse]
System.out.println(a);
// 訪問元素
System.out.println(a.peek());
// 移除元素
System.out.println(a.pop());

雜項 Misc

訪問修飾符

修飾符ClassPackageSubclassWorld
publicYYYY
protectedYYYN
no modifierYYNN
privateYNNN

常用表達

String text = "I am learning Java";
// 刪除所有空格
text.replaceAll("\\s+", "");
// 拆分字符串
text.split("\\|");
text.split(Pattern.quote("|"));

查看: Regex in java

注釋 Comment

// 我是單行注釋!
 
/*
而我是一個
多行注釋!
*/
/**
  * 這個
  * 是
  * 文檔
  * 注釋
 */

關(guān)鍵字

  • abstract
  • continue
  • for
  • new
  • switch
  • assert
  • default
  • goto
  • package
  • synchronized
  • boolean
  • do
  • if
  • private
  • this
  • break
  • double
  • implements
  • protected
  • throw
  • byte
  • else
  • import
  • public
  • throws
  • case
  • enum
  • instanceof
  • return
  • transient
  • catch
  • extends
  • int
  • short
  • try
  • char
  • final
  • interface
  • static
  • void
  • class
  • finally
  • long
  • strictfp
  • volatile
  • const
  • float
  • native
  • super
  • while

數(shù)學方法

方法說明
Math.max(a,b)ab 的最大值
Math.min(a,b)ab 的最小值
Math.abs(a)絕對值
Math.sqrt(a)a 的平方根
Math.pow(a,b)b 的冪
Math.round(a)最接近的整數(shù)
Math.sin(ang)正弦
Math.cos(ang)ang 的余弦
Math.tan(ang)ang 的切線
Math.asin(ang)ang 的反正弦
Math.log(a)a 的自然對數(shù)
Math.toDegrees(rad)以度為單位的角度弧度
Math.toRadians(deg)以弧度為單位的角度度

異常 Try/Catch/Finally

try {
  // something
} catch (Exception e) {
  e.printStackTrace();
} finally {
  System.out.println("always printed");
}

反射

/**
* 利用反射動態(tài)加載依賴庫
* java9及以上版本可用
* @param jar jar文件
*/
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
method.setAccessible(true);
MethodHandle addURL = lookup.unreflect(method);
URL url = jar.toURI().toURL();
URLClassLoader urlClassLoader = new URLClassLoader(new URL[] {url});
addURL.invoke(urlClassLoader, url);
//java8
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
method.setAccessible(true);
method.invoke(classLoader, url);

util工具類

  • ArrayDeque 提供 resizable-array 并實現(xiàn) Deque 接
  • Arrays 包含一個靜態(tài)工廠,允許將數(shù)組視為列表
  • Collections 包含對集合進行操作或返回集合的靜態(tài)方法
  • Date 表示特定的時間瞬間,精度為毫秒
  • Dictionary 是任何類的抽象父類,例如 Hashtable,它將鍵映射到值
  • EnumMap 一個專門用于枚舉鍵的 Map 實現(xiàn)
  • EnumSet 一個專門用于枚舉鍵的 Set 實現(xiàn)
  • Formatter 提供對布局對齊和對齊、數(shù)字、字符串和日期/時間數(shù)據(jù)的常用格式以及特定于語言環(huán)境的輸出的支持
  • SecureRandom 實例用于生成安全的偽隨機數(shù)流
  • UUID 表示一個不可變的通用唯一標識符
  • Vector 實現(xiàn)了一個可增長的對象數(shù)組
  • LocalDate 表示沒有時區(qū)的日期,只包含年月日,不可變并且線程安全的,java8 及以上版本可用
  • LocalTime 表示沒有時區(qū)的時間,只包含時分秒,不可變并且線程安全的,java8 及以上版本可用
  • LocalDateTime 表示沒有時區(qū)的日期時間,同時包含年月日時分秒,不可變并且線程安全的,java8 及以上版本可用

另見