亚洲成A人片在线观看网站_成年网站免费视频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";

原始數據類型

數據類型大小默認范圍
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

循環 Loops

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

查看: Loops

數組 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

類型轉換 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);

一旦創建就不能修改,任何修改都會創建一個新的String

Java 數組

聲明 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

循環 (讀 & 寫)

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 

二維數組 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 條件語句

運算符

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

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

  • && 條件與
  • || 條件或
  • ?: 三元(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 循環

For 循環

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 循環

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

用于循環數組或列表

While 循環

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

Do While 循環

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

繼續聲明

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
ListYNNYY
ListYNYYY
List, DequeYNNYY
ListYNYYY
SetNNNNOne null
SetYNNNOne null
SetYYNNN
SetYNYNOne null
SetYYYNN
MapNNNN (key)One null (key)
MapNNYN (key)N (key)
MapYNNN (key)One null (key)
MapYYNN (key)N (key)
MapNNYN (key)N
MapYYYN (key)N
DequeYNNYN
QueueYNNYN
QueueYNYYN
DequeYNYYN
QueueYNYYN
DequeYNYYN
QueueYNYYN

ArrayList

List<Integer> nums = new ArrayList<>();
// 添加
nums.add(2);
nums.add(5);
nums.add(8);
// 檢索
System.out.println(nums.get(0));
// 為循環迭代編制索引
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

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

關鍵字

  • 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

數學方法

方法說明
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)最接近的整數
Math.sin(ang)正弦
Math.cos(ang)ang 的余弦
Math.tan(ang)ang 的切線
Math.asin(ang)ang 的反正弦
Math.log(a)a 的自然對數
Math.toDegrees(rad)以度為單位的角度弧度
Math.toRadians(deg)以弧度為單位的角度度

異常 Try/Catch/Finally

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

反射

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

另見

  • (oracle.com/cn/java)