diff --git a/docs/java.html b/docs/java.html new file mode 100644 index 00000000..4357dbf1 --- /dev/null +++ b/docs/java.html @@ -0,0 +1,1006 @@ + + +
+ +该备忘单是针对 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");
+}
+
+