Java 语言

精选 Java 语言 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。

#入门指南

#Hello.java 示例 示例 示例 示例 示例 示例 示例 示例

public class Hello {
  // main method
  public static void main(String[] args)
  {
    // Output: Hello, world!
    System.out.println("Hello, world!");
  }
}

编译并运行

$ javac Hello.java
$ java Hello
Hello, world!

#变量声明 (Variables)

int num = 5;
float floatNum = 5.99f;
char letter = 'D';
boolean bool = true;
String site = "qr.warpnav.com";

#基础数据类型 (Primitive Data Types)

Data Type Size Default Range
byte 1 byte 0 -128 to 127
short 2 byte 0 -215 to 215-1
int 4 byte 0 -231 to 231-1
long 8 byte 0 -263 to 263-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

#字符串 (Strings)

String first = "John";
String last = "Doe";
String name = first + " " + last;
System.out.println(name);

参阅: Strings

#Loops

String word = "CheatSheets";
for (char c: word.toCharArray()) {
  System.out.print(c + "-");
}
// Outputs: C-h-e-a-t-S-h-e-e-t-s-

参阅: Loops

String str = "hello";
String concat = str.concat("world");

// 输出: helloworld (修改操作必定返回新的字符串)
System.out.println(concat);

字符串对象一旦在内存中创建就无法被修改,任何修改都会产生新的 String 实例。

#Java 数组 (Arrays)

#声明与初始化 (Declare)

int[] a1;
int[] a2 = {1, 2, 3};
int[] a3 = new int[]{1, 2, 3};

int[] a4 = new int[3];
a4[0] = 1;
a4[1] = 2;
a4[2] = 3;

#元素修改 (Modify)

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 (数组长度)

#循环遍历与修改 (Loop - Read & Modify)

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

#增强型 For 循环读取 (Loop - Read)

String[] arr = {"a", "b", "c"};
for (String a: arr) {
    System.out.print(a + " ");
}
// 输出: a b c

#多维数组 (Multidimensional Arrays)

int[][] matrix = { {1, 2, 3}, {4, 5} };

int x = matrix[1][0];  // 4
// [[1, 2, 3], [4, 5]]
Arrays.deepToString(matrix);

int[][] a = 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

#数组排序 (Sort)

char[] chars = {'b', 'a', 'c'};
Arrays.sort(chars);

// [a, b, c]
Arrays.toString(chars);

#Java 流程控制 (Conditionals)

#运算符大全 (Operators)

#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;
}

// 输出: Result March
System.out.println("Result " + str);

#三元运算符 (Ternary operator)

int a = 10;
int b = 20;
int max = (a > b) ? a : b;

// 输出: 20
System.out.println(max);

#Java 循环结构 (Loops)

#For 基础循环

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

#增强型 For 循环 (forEach)

int[] numbers = {1,2,3,4,5};

for (int number: numbers) {
  System.out.print(number);
}
// 输出: 12345

常用于遍历数组 Array 或集合列表 List。

#While 循环

int count = 0;

while (count < 5) {
  System.out.print(count);
  count++;
}
// 输出: 01234

#Do While 循环

int count = 0;

do {
  System.out.print(count);
  count++;
} while (count < 5);
// 输出: 01234 (至少执行一次)

#Continue 语句 (跳过本次循环)

for (int i = 0; i < 5; i++) {
  if (i == 3) {
    continue;
  }
  System.out.print(i);
}
// 输出: 0124

#Break 语句 (终止退出循环)

for (int i = 0; i < 5; i++) {
  System.out.print(i);
  if (i == 3) {
    break;
  }
}
// 输出: 0123

#Java 集合框架 (Collections)

#Java 常用集合特性对比

集合类 接口类型 保持顺序 自动排序 线程安全 允许重复 允许 null
ArrayList List
Vector List
LinkedList List, Deque
CopyOnWriteArrayList List
HashSet Set 最多 1 个 null
LinkedHashSet Set 最多 1 个 null
TreeSet Set
CopyOnWriteArraySet Set 最多 1 个 null
ConcurrentSkipListSet Set
HashMap Map 否 (key) 最多 1 个 null (key)
HashTable Map 否 (key) 否 (key)
LinkedHashMap Map 否 (key) 最多 1 个 null (key)
TreeMap Map 否 (key) 否 (key)
ConcurrentHashMap Map 否 (key)
ConcurrentSkipListMap Map 否 (key)
ArrayDeque Deque
PriorityQueue Queue
ConcurrentLinkedQueue Queue
ConcurrentLinkedDeque Deque
ArrayBlockingQueue Queue
LinkedBlockingDeque Deque
PriorityBlockingQueue Queue

#ArrayList 动态列表

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);
}

#HashMap 字典映射

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");

// 根据 key 获取 value
System.out.println(m.get(6));

// Lambda 表达式遍历 Map
m.forEach((key, value) -> {
    String msg = key + ": " + value;
    System.out.println(msg);
});

#HashSet 无序集合

Set<String> set = new HashSet<>();
if (set.isEmpty()) {
    System.out.println("集合为空!");
}

set.add("dog");
set.add("cat");
set.add("mouse");
set.add("snake");
set.add("bear");

if (set.contains("cat")) {
    System.out.println("包含 cat 元素");
}

set.remove("cat");
for (String element : set) {
    System.out.println(element);
}

#ArrayDeque 双端队列

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());

#其他实用特性

#访问修饰符 (Access Modifiers)

修饰符 本类 (Class) 同包 (Package) 子类 (Subclass) 任意外部 (World)
public
protected
默认 (no modifier)
private

#正则表达式 (Regular Expressions)

String text = "I am learning Java";
// 替换所有空格
text.replaceAll("\\s+", "");

// 拆分字符串
text.split("\\|");
text.split(Pattern.quote("|"));

参阅: Java 正则表达式

#代码注释

// 我是单行注释!

/*
我是
多行注释!
*/

/**
 * 这是
 * Javadoc
 * 文档
 * 注释
 */

#Java 关键字保留字 (Keywords)

  • 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 数学计算函数表

方法函数 功能说明
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) 余弦函数
Math.tan(ang) 正切函数
Math.asin(ang) 反正弦函数
Math.log(a) 自然对数 ln(a)
Math.toDegrees(rad) 弧度转角度
Math.toRadians(deg) 角度转弧度

#异常捕获 (Try/Catch/Finally)

try {
  // 可能抛出异常的代码段
} catch (Exception e) {
  e.printStackTrace();
} finally {
  System.out.println("不论是否发生异常都必然执行");
}