该备忘单是针对 Java 初学者的速成课程,有助于复习 Java 语言的基本语法。
publicclassHello {
// 主要方法publicstaticvoidmain(String[] args)
{
// 输出: Hello, world!System.out.println("Hello, world!");
}
}编译和运行
$ javac Hello.java
$ java Hello
Hello, world!intnum = 5;
floatfloatNum = 5.99f;
charletter = 'D';
booleanbool = true;
Stringsite = "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 |
Stringfirst = "John";
Stringlast = "Doe";
Stringname = first + " " + last;
System.out.println(name);查看: Strings
Stringword = "QuickRef";
for (charc: word.toCharArray()) {
System.out.print(c + "-");
}
// 输出: Q-u-i-c-k-R-e-f-查看: Loops
char[] chars = newchar[10];
chars[0] = 'a'chars[1] = 'b'String[] letters = {"A", "B", "C"};
int[] mylist = {100, 200};
boolean[] answers = {true, false};查看: Arrays
inta = 1;
intb = 2;
System.out.println(a + " " + b); // 1 2inttemp = a;
a = b;
b = temp;
System.out.println(a + " " + b); // 2 1// Widening// byte<short<int<long<float<doubleinti = 10;
longl = i; // 10// Narrowing doubled = 10.02;
longl = (long)d; // 10String.valueOf(10); // "10"Integer.parseInt("10"); // 10Double.parseDouble("10"); // 10.0intj = 10;
if (j == 10) {
System.out.println("I get printed");
} elseif (j > 10) {
System.out.println("I don't");
} else {
System.out.println("I also don't");
}查看: [Conditionals](#条件语句 Conditionals)
Scannerin = newScanner(System.in);
Stringstr = in.nextLine();
System.out.println(str);
intnum = in.nextInt();
System.out.println(num);Stringstr1 = "value"; Stringstr2 = newString("value");
Stringstr3 = String.valueOf(123);Strings = 3 + "str" + 3; // 3str3Strings = 3 + 3 + "str"; // 6strStrings = "3" + 3 + "str"; // 33strStrings = "3" + "3" + "23"; // 3323Strings = "" + 3 + 3 + "23"; // 3323Strings = 3 + 3 + 23; // 29StringBuildersb = newStringBuilder(10);┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| | | | | | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0123456789sb.append("Reference");┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| R | e | f | e | r | e | n | c | e |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0123456789sb.delete(3, 9);┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| R | e | f | | | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0123456789sb.insert(0, "My ");┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | | R | e | f | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0123456789sb.append("!");┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | | R | e | f | ! | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0123456789Strings1 = newString("QuickRef"); Strings2 = newString("QuickRef"); s1 == s2// falses1.equals(s2) // true"AB".equalsIgnoreCase("ab") // trueStringstr = "Abcd";
str.toUpperCase(); // ABCDstr.toLowerCase(); // abcdstr.concat("#"); // Abcd#str.replace("b", "-"); // A-cd" abc ".trim(); // abc"ab".toCharArray(); // {'a', 'b'}Stringstr = "abcd";
str.charAt(2); // cstr.indexOf("a") // 0str.indexOf("z") // -1str.length(); // 4str.toString(); // abcdstr.substring(2); // cdstr.substring(2,3); // cstr.contains("c"); // truestr.endsWith("d"); // truestr.startsWith("a"); // truestr.isEmpty(); // falseStringstr = "hello";
str.concat("world");
// 输出: helloSystem.out.println(str);Stringstr = "hello";
Stringconcat = str.concat("world");
// 输出: helloworldSystem.out.println(concat);一旦创建就不能修改,任何修改都会创建一个新的String
int[] a1;
int[] a2 = {1, 2, 3};
int[] a3 = newint[]{1, 2, 3};
int[] a4 = newint[3];
a4[0] = 1;
a4[2] = 2;
a4[3] = 3;int[] a = {1, 2, 3};
System.out.println(a[0]); // 1a[0] = 9;
System.out.println(a[0]); // 9System.out.println(a.length); // 3int[] arr = {1, 2, 3};
for (inti=0; i < arr.length; i++) {
arr[i] = arr[i] * 2;
System.out.print(arr[i] + " ");
}
// 输出: 2 4 6String[] arr = {"a", "b", "c"};
for (inta: arr) {
System.out.print(a + " ");
}
// 输出: a b c int[][] matrix = { {1, 2, 3}, {4, 5} };
intx = matrix[1][0]; // 4// [[1, 2, 3], [4, 5]]Arrays.deepToString(matrix)
for (inti = 0; i < a.length; ++i) {
for(intj = 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)!(逻辑补码运算符;反转布尔值)
==(等于)!=(不等于)>(比...更棒)>=(大于或等于)<(少于)<=(小于或等于)
&&条件与||条件或- ?:三元(if-then-else 语句的简写)
instanceof(将对象与指定类型进行比较)
~(一元按位补码)<<(签名左移)>>(有符号右移)>>>(无符号右移)&(按位与)^(按位异或)|(按位包含 OR)
intk = 15;
if (k > 20) {
System.out.println(1);
} elseif (k > 10) {
System.out.println(2);
} else {
System.out.println(3);
}intmonth = 3;
Stringstr;
switch (month) {
case1:
str = "January";
break;
case2:
str = "February";
break;
case3:
str = "March";
break;
default:
str = "Some other month";
break;
}
// 输出: Result MarchSystem.out.println("Result " + str);inta = 10;
intb = 20;
intmax = (a > b) ? a : b;
// 输出: 20System.out.println(max);for (inti = 0; i < 10; i++) {
System.out.print(i);
}
// 输出: 0123456789for (inti = 0,j = 0; i < 3; i++,j--) {
System.out.print(j + "|" + i + " ");
}
// 输出: 0|0 -1|1 -2|2int[] numbers = {1,2,3,4,5};
for (intnumber: numbers) {
System.out.print(number);
}
// 输出: 12345用于循环数组或列表
intcount = 0;
while (count < 5) {
System.out.print(count);
count++;
}
// 输出: 01234intcount = 0;
do {
System.out.print(count);
count++;
} while (count < 5);
// 输出: 01234for (inti = 0; i < 5; i++) {
if (i == 3) {
continue;
}
System.out.print(i);
}
// 输出: 01245for (inti = 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 = newArrayList<>();
// 添加nums.add(2);
nums.add(5);
nums.add(8);
// 检索System.out.println(nums.get(0));
// 为循环迭代编制索引for (inti = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
nums.remove(nums.size() - 1);
nums.remove(0); // 非常慢for (Integervalue : nums) {
System.out.println(value);
}Map<Integer, String> m = newHashMap<>();
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 forEachm.forEach((key, value) -> {
Stringmsg = key + ": " + value;
System.out.println(msg);
});Set<String> set = newHashSet<>();
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 (Stringelement : set) {
System.out.println(element);
}Deque<String> a = newArrayDeque<>();
// 使用 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 |
Stringtext = "I am learning Java";
// 删除所有空格text.replaceAll("\\s+", "");
// 拆分字符串text.split("\\|");
text.split(Pattern.quote("|"));查看: Regex in java
// 我是单行注释!/*而我是一个多行注释!*//** * 这个 * 是 * 文档 * 注释 */- 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) | 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 (Exceptione) {
e.printStackTrace();
} finally {
System.out.println("always printed");
}ArrayDeque提供 resizable-array 并实现 Deque 接Arrays包含一个静态工厂,允许将数组视为列表Collections包含对集合进行操作或返回集合的静态方法Date表示特定的时间瞬间,精度为毫秒Dictionary是任何类的抽象父类,例如 Hashtable,它将键映射到值EnumMap一个专门用于枚举键的 Map 实现EnumSet一个专门用于枚举键的 Set 实现Formatter提供对布局对齐和对齐、数字、字符串和日期/时间数据的常用格式以及特定于语言环境的输出的支持Random实例用于生成伪随机数流UUID表示一个不可变的通用唯一标识符Vector实现了一个可增长的对象数组
- Java 官网(java.com)