Java 备忘单
这份备忘单是 Java 初学者的速成课程,有助于复习 Java 语言的基本语法。开始
hello.java
public class Hello {
// main methord
public static void main(String[] args)
{
// Output: 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 字节
                                0
                                -128 ~ 127
                                short
                                2 字节
                                0
                                -2 15 ~ 2 15
                                     -1
                                int
                                4 字节
                                0
                                -2 31 ~ 2 31
                                     -1
                                long
                                8 字节
                                0
                                -2 63 ~ 2 63
                                     -1
                                float
                                4 字节
                                0.0f
                                N/A
                                double
                                8 字节
                                0.0d
                                N/A
                                char
                                2 字节
                                \u0000
                                0 ~ 65535
                                boolean
                                N/A
                                fasle
                                true/false
字符串
String first = "John";
String last = "Doe";
String name = first + " " + last;
System.out.println(name);
                    请参阅:字符串循环
String word = "QuickRef";
for (char c: word.toCharArray()) {
System.out.print(c + "-");
}
// Outputs: Q-u-i-c-k-R-e-f-
                    请参阅:循环数组
char[] chars = new char[10];
chars[0] = 'a'
chars[1] = 'b'
String[] letters = {"A", "B", "C"};
int[] mylist = {100, 200};
boolean[] answers = {true, false};
                    请参阅:数组交换
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");
}
                    请参阅:条件用户输入
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("QuickRef");┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | u | i | c | k | R | e | f | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
                    sb.delete(5, 9);┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | u | i | c | k | | | | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
                    sb.insert(0, "我的");┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | | Q | u | i | c | k | |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
                    sb.append("!");┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
| M | y | | Q | u | i | c | k | ! |
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
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");
// Outputs: hello
System.out.println(str);
String str = "hello";
String concat = str.concat("world");
// Outputs: helloworld
System.out.println(concat);
                    一旦创建不能修改,任何修改都会创建一个新的StringJava 数组
声明
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] + " ");
}
// Outputs: 2 4 6
循环(读取)
String[] arr = {"a", "b", "c"};
for (int a: arr) {
System.out.print(a + " ");
}
// Outputs: 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]);
}
}
// Outputs: 1 2 3 4 5 6 7
类型
char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);
// [a, b, c]
Arrays.toString(chars);
Java 条件
运算符
/
%
!
==
!=
>
>=
<
<=
&&
||
?:
instanceof
~
<<
>>
>>>
&
^
|
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;
}
// Outputs: Result March
System.out.println("Result " + str);
三元运算符
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
// Outputs: 20
System.out.println(max);
Java 循环
For循环
for (int i = 0; i < 10; i++) {
System.out.print(i);
}
// Outputs: 0123456789
for (int i = 0,j = 0; i < 3; i++,j--) {
System.out.print(j + "|" + i + " ");
}
// Outputs: 0|0 -1|1 -2|2
For-each 循环
int[] numbers = {1,2,3,4,5};
for (int number: numbers) {
System.out.print(number);
}
// Outputs: 12345
                    用于循环数组或列表While 循环
int count = 0;
while (count < 5) {
System.out.print(count);
count++;
}
// Outputs: 01234
Do While 循环
int count = 0;
do{
System.out.print(count);
count++;
} while (count < 5);
// Outputs: 01234
Continue
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
System.out.print(i);
}
// Outputs: 01245
Break
for (int i = 0; i < 5; i++) {
System.out.print(i);
if (i == 3) {
break;
}
}
// Outputs: 0123
Java 集合框架
Java 集合
                            集合                            接口
                            可组织
                            可排序
                            线程安全
                            可复制
                            可为空
                            ArrayList
                            List
                            Y
                            N
                            N
                            Y
                            Y
                            Vector
                            List
                            Y
                            N
                            Y
                            Y
                            Y
                            LinkedList
                            List, Deque
                            Y
                            N
                            N
                            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
                            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)
                            ArrayDeque
                            Deque
                            Y
                            N
                            N
                            Y
                            N
                            PriorityQueue
                            Queue
                            Y
                            N
                            N
                            Y
                            N
数组列表
List<Integer> nums = new ArrayList<>();
// Adding
nums.add(2);
nums.add(5);
nums.add(8);
// Retrieving
System.out.println(nums.get(0));
// Indexed for loop iteration
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
nums.remove(nums.size() - 1);
nums.remove(0); // VERY slow
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");
// Retrieving
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
Deque<String> a = new ArrayDeque<>();
// Using add()
a.add("Dog");
// Using addFirst()
a.addFirst("Cat");
// Using addLast()
a.addLast("Horse");
// [Cat, Dog, Horse]
System.out.println(a);
// Access element
System.out.println(a.peek());
// Remove element
System.out.println(a.pop());
杂项
访问修饰符
                            修饰符                            类
                            包
                            子类
                            全局
                            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";
// Removing All Whitespace
text.replaceAll("\s+", "");
// Splitting a String
text.split("\|");
text.split(Pattern.quote("|"));
                    请参阅:Java 中的正则表达式文本注释
// I am a single line comment!
/
And I am a
multi-line 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)
                                a 和 b 的最大值
                                Math.min(a,b)
                                a 和 b 的最小值
                                Math.abs(a)
                                绝对值a
                                Math.sqrt(a)
                                a 的平方根
                                Math.pow(a,b)
                                a的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)
                                角度 rad
                                Math.toRadians(deg)
                                以弧度为单位的角度度
try/catch/finally
try {
// something
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("always printed");
}