该备忘单是针对 Java 初学者的速成课程,有助于复习 Java 语言的基本语法。
public class Hello {
  // 主要方法
  public static void main(String[] args)
  {
    // 输出: Hello, world!
    System.out.println("Hello, world!");
  }
}
编译和运行
$ javac Hello.java
$ java Hello
Hello, world!
int num = 5;
float floatNum = 5.99f;
char letter = 'D';
boolean bool = true;
String site = "quickref.me";
| 数据类型 | 大小 | 默认 | 范围 | 
|---|---|---|---|
| byte | 1 byte | 0 | -128 ^to^ 127 | 
| short | 2 byte | 0 | -2^15^ ^to^ 2^15^-1 | 
| int | 4 byte | 0 | -2^31^ ^to^ 2^31^-1 | 
| long | 8 byte | 0 | -2^63^ ^to^ 2^63^-1 | 
| float | 4 byte | 0.0f | N/A | 
| double | 8 byte | 0.0d | N/A | 
| char | 2 byte | \u0000 | 0 ^to^ 65535 | 
| boolean | N/A | false | true / false | 
String first = "John";
String last = "Doe";
String name = first + " " + last;
System.out.println(name);
查看: Strings
String word = "QuickRef";
for (char c: word.toCharArray()) {
  System.out.print(c + "-");
}
// 输出: Q-u-i-c-k-R-e-f-
查看: Loops
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
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
// 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
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
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(str);
int num = in.nextInt();
System.out.println(num);
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
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;
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
String[] arr = {"a", "b", "c"};
for (int a: arr) {
    System.out.print(a + " ");
}
// 输出: a b c 
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 
char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);
+ (加法运算符(也用于字符串连接))- (减法运算符)* (乘法运算符)/ (分区运算符)% (余数运算符)= (简单赋值运算符)++ (增量运算符;将值增加 1)-- (递减运算符;将值减 1)! (逻辑补码运算符;反转布尔值)== (等于)!= (不等于)> (比...更棒)>= (大于或等于)< (少于)<= (小于或等于)&& 条件与|| 条件或instanceof (将对象与指定类型进行比较)~ (一元按位补码)<< (签名左移)>> (有符号右移)>>> (无符号右移)& (按位与)^ (按位异或)| (按位包含 OR)int k = 15;
if (k > 20) {
  System.out.println(1);
} else if (k > 10) {
  System.out.println(2);
} else {
  System.out.println(3);
}
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);
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
int[] numbers = {1,2,3,4,5};
for (int number: numbers) {
  System.out.print(number);
}
// 输出: 12345
用于循环数组或列表
int count = 0;
while (count < 5) {
  System.out.print(count);
  count++;
}
// 输出: 01234
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
| 搜集 | Interface | 有序 | 已排序 | 线程安全 | 复制 | Nullable | 
|---|---|---|---|---|---|---|
| ArrayList | List | Y | N | N | Y | Y | 
| Vector | List | Y | N | Y | Y | Y | 
| LinkedList | List, Deque | Y | N | N | Y | Y | 
| CopyOnWriteArrayList | List | Y | N | Y | Y | Y | 
| HashSet | Set | N | N | N | N | One null | 
| LinkedHashSet | Set | Y | N | N | N | One null | 
| TreeSet | Set | Y | Y | N | N | N | 
| CopyOnWriteArraySet | Set | Y | N | Y | N | One null | 
| ConcurrentSkipListSet | Set | Y | Y | Y | N | N | 
| HashMap | Map | N | N | N | N (key) | One null(key) | 
| HashTable | Map | N | N | Y | N (key) | N (key) | 
| LinkedHashMap | Map | Y | N | N | N (key) | One null(key) | 
| TreeMap | Map | Y | Y | N | N (key) | N (key) | 
| ConcurrentHashMap | Map | N | N | Y | N (key) | N | 
| ConcurrentSkipListMap | Map | Y | Y | Y | N (key) | N | 
| ArrayDeque | Deque | Y | N | N | Y | N | 
| PriorityQueue | Queue | Y | N | N | Y | N | 
| ConcurrentLinkedQueue | Queue | Y | N | Y | Y | N | 
| ConcurrentLinkedDeque | Deque | Y | N | Y | Y | N | 
| ArrayBlockingQueue | Queue | Y | N | Y | Y | N | 
| LinkedBlockingDeque | Deque | Y | N | Y | Y | N | 
| PriorityBlockingQueue | Queue | Y | N | Y | Y | N | 
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);
}
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);
});
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);
}
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());
| 修饰符 | Class | Package | Subclass | World | 
|---|---|---|---|---|
| public | Y | Y | Y | Y | 
| protected | Y | Y | Y | N | 
| no modifier | Y | Y | N | N | 
| private | Y | N | N | N | 
String text = "I am learning Java";
// 删除所有空格
text.replaceAll("\\s+", "");
// 拆分字符串
text.split("\\|");
text.split(Pattern.quote("|"));
查看: Regex in java
// 我是单行注释!
 
/*
而我是一个
多行注释!
*/
/**
  * 这个
  * 是
  * 文档
  * 注释
 */
| 方法 | 说明 | 
|---|---|
| Math.max(a,b) | a和b的最大值 | 
| Math.min(a,b) | a和b的最小值 | 
| 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 {
  // something
} catch (Exception e) {
  e.printStackTrace();
} finally {
  System.out.println("always printed");
}