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);
一旦创建不能修改,任何修改都会创建一个新的String
Java 数组
声明
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");
}