Menu
CoddyTech

Java 速查表

最后更新

Hello World 与程序结构

每个 Java 程序都从某个类里的 main 方法开始运行。

元素代码
声明类public class Main { ... }
入口点public static void main(String[] args) { ... }
输出一行System.out.println("Hello, World!");
输出但不换行System.out.print("text");
读取输入Scanner sc = new Scanner(System.in);
导入类import java.util.ArrayList;
注释// line 和 /* block */

数据类型

基本类型全小写,对应的包装类首字母大写。

类型说明
int32 位有符号整数
long64 位有符号整数
double / float浮点数
booleantrue 或 false
char单个 16 位 Unicode 字符
byte / short8 位 / 16 位整数
String不可变的文本(是类,不是基本类型)
Integer, Double, Boolean基本类型的包装类
var局部变量类型推断(Java 10+)

变量

操作语法
声明并初始化int x = 5;
类型推断(局部变量)var name = "Ada";
常量final double PI = 3.14159;
字符串拼接String s = "Hi " + name;
字符串转 intint n = Integer.parseInt("42");
int 转字符串String s = String.valueOf(42);
格式化字符串String.format("%d items", n)

运算符

算术、比较、逻辑和赋值运算符。

运算符含义
+ - * / %加、减、乘、除、取模
++ --自增 / 自减
== !=等于 / 不等于(对象比较的是引用)
> < >= <=大于 / 小于比较
&& || !逻辑与、或、非(短路求值)
& | ^ ~按位与、或、异或、取反
<< >> >>>左移、有符号右移、无符号右移
+= -= *= /=复合赋值
? :三元运算符:x > 0 ? "pos" : "neg"
instanceof类型检查:if (o instanceof String s)

流程控制

语句语法
If / elseif (x > 0) { ... } else { ... }
switch 语句switch (n) { case 1: ...; break; default: ...; }
switch 表达式var s = switch (n) { case 1 -> "one"; default -> "other"; };
while 循环while (i < n) { ... }
do-while 循环do { ... } while (i < n);
for 循环for (int i = 0; i < n; i++) { ... }
增强 for(for-each)for (String item : list) { ... }
Break / continuebreak; 退出循环,continue; 跳到下一次迭代

字符串方法

String 是不可变的,每个方法都会返回一个新字符串。在循环里拼接字符串时,请用 StringBuilder。

方法作用
s.length()字符个数
s.charAt(i)索引 i 处的字符
s.substring(a, b)截取从 a(包含)到 b(不包含)的部分
s.indexOf("x")子串第一次出现的索引,找不到返回 -1
s.contains("x")包含该子串时返回 true
s.replace("a", "b")替换所有匹配项
s.split(",")拆分成 String[]
s.trim() / s.strip()去掉首尾空白字符
s.toUpperCase() / toLowerCase()转换大小写
s.equals(t) / equalsIgnoreCase(t)比较值(不要用 ==)
s.startsWith("x") / endsWith("x")判断前缀 / 后缀
String.join(",", list)用分隔符连接各个元素

Math 与常用工具方法

来自 java.lang.Math 和数字包装类的静态工具方法。

调用结果
Math.max(a, b) / Math.min(a, b)两个值中较大 / 较小的一个
Math.abs(x)绝对值
Math.pow(x, y)x 的 y 次方(返回 double)
Math.sqrt(x)平方根
Math.round(x) / floor / ceil四舍五入 / 向下取整 / 向上取整
Math.random()[0.0, 1.0) 范围内的随机 double
Integer.parseInt("42")把字符串解析成 int
Integer.MAX_VALUE / MIN_VALUEint 的最大值 / 最小值
Arrays.sort(arr)原地排序数组
Arrays.toString(arr)输出可读的数组内容

方法

操作语法
定义方法int add(int a, int b) { return a + b; }
无返回值void greet() { ... }
静态方法static int square(int x) { return x * x; }
公共方法public String getName() { return name; }
可变参数int sum(int... nums) { ... }
调用方法int r = add(2, 3);
调用静态方法Math.max(a, b);
方法重载int max(int a, int b) 和 double max(double a, double b)

类与面向对象

操作语法
定义类public class Dog { ... }
字段private String name;
构造方法public Dog(String name) { this.name = name; }
创建对象Dog d = new Dog("Rex");
Getter / setterpublic String getName() { return name; }
继承class Puppy extends Dog { ... }
接口interface Runnable { void run(); }
实现接口class Task implements Runnable { ... }
重写方法@Override public void speak() { ... }

Record、枚举与现代 Java

用于数据载体和固定取值集合的简洁现代语法(Java 14+)。

特性语法
Record(不可变数据)record Point(int x, int y) {}
使用 recordvar p = new Point(1, 2); p.x();
枚举enum Day { MON, TUE, WED }
带值的枚举enum Coin { PENNY(1), DIME(10); ... }
文本块String s = """\n multi\n line\n """;
instanceof 模式匹配if (o instanceof String s) { s.length(); }
switch 模式匹配(Java 21)case Integer i -> ...; case String s -> ...;
密封类sealed interface Shape permits Circle, Square {}

集合

java.util 中的泛型集合。

类型用途与示例
ArrayList<T>动态数组:list.add(1); list.get(0); list.size();
HashMap<K, V>键值对:map.put("a", 1); map.get("a");
HashSet<T>不重复的值:set.add(5); set.contains(5);
LinkedList<T>双向链表,适合当队列 / 双端队列用
ArrayDeque<T>栈 / 队列:dq.push(x); dq.pop();
数组int[] nums = {1, 2, 3};
遍历列表for (T x : list) { ... }
遍历 mapfor (var e : map.entrySet()) { e.getKey(); e.getValue(); }

Stream 与 Lambda

对集合进行函数式风格的流水线处理(Java 8+)。

操作语法
Lambda 表达式x -> x * 2
创建 Streamlist.stream()
过滤.filter(n -> n > 0)
映射 / 转换.map(n -> n * 2)
排序.sorted() 或 .sorted(Comparator.reverseOrder())
归约 / 求和.reduce(0, Integer::sum)
计数 / 匹配.count(), .anyMatch(n -> n > 5)
收集为列表.collect(Collectors.toList())
逐个处理.forEach(System.out::println)

常用写法(try/catch、泛型)

写法语法
Try / catchtry { ... } catch (Exception e) { ... }
捕获特定异常catch (IOException e) { ... }
Finallyfinally { ... } 总会执行
Try-with-resourcestry (Scanner sc = new Scanner(...)) { ... }
抛出异常throw new IllegalArgumentException("bad");
泛型类class Box<T> { T value; }
泛型方法<T> T first(List<T> list) { ... }
有界类型<T extends Number>

最常用的 Java 语法、集合和 Stream 操作,全都在这一页。这份 Java 速查表是写 Java 时的快速参考:数据类型、流程控制、类、ArrayList/HashMap 集合、Stream API,还有每天都会用到的异常处理和泛型写法。

这里的内容都是标准 Java(Java 8 及以上版本),可以用 javac 编译。需要什么就复制什么,也可以在 Java 在线编辑器里直接运行每个代码片段,无需安装 JDK。刚开始学 Java?Coddy 的免费交互式 Java 课程会一步步讲解这些概念。

Java 速查表常见问题

这份 Java 速查表免费吗?

免费。这份 Java 速查表完全免费,也不用注册。把它加入书签,需要查语法、集合或 Stream 操作时随时回来看。

Java 中 == 和 .equals() 有什么区别?
对于对象,== 比较的是引用,也就是两个变量是否指向同一个对象;.equals() 比较的是内容。两个文本相同但不同的 String 对象用 .equals() 比较结果为真,用 == 比较却可能为假。比较字符串和其他对象的值时,一律用 .equals();== 只用于基本类型(int、boolean 等)或判断是否为 null。
Java 中的 Stream 有什么用?
Stream API(Java 8+)让你用一条可读性强的操作流水线处理集合,比如 filter、map、sorted、reduce、collect,不必手写循环。先调用 list.stream(),再串联中间操作,最后用 collect(Collectors.toList()) 或 forEach 这样的终止操作收尾。这样写出的数据转换代码简洁又清晰。
可以在线练习 Java 吗?

可以。打开 Java 在线编辑器,就能在浏览器里编译并运行这份速查表中的任何代码片段,无需安装 JDK。想系统地学,Coddy 的免费交互式 Java 课程会带你从变量和循环一步步学到类、集合和 Stream。

这份速查表适合初学者吗?

适合。内容从最常用的基础(类型、流程控制、方法)排到进阶内容(Stream、泛型、异常),第一天就能用上前面几部分,其余的可以慢慢掌握。

Java 中怎么把 String 转成 int?
用 Integer.parseInt("42") 得到基本类型 int,用 Integer.valueOf("42") 得到 Integer 对象。字符串不是合法数字时,两者都会抛出 NumberFormatException,所以输入不可信时要用 try / catch 包起来。反过来转换,用 String.valueOf(n) 或 Integer.toString(n)。
Java 中 ArrayList 和数组有什么区别?
数组(int[] a = new int[5])的长度在创建时就固定了,可以直接存放基本类型。ArrayList<T> 能通过 add() 和 remove() 动态增减,但只能存对象,所以基本类型会自动装箱(ArrayList<Integer>)。大小已知且固定时用数组,集合大小会变化时用 ArrayList。
Coddy 编程语言插图

在 Coddy 学习 Java

开始