速查表
写代码时忘了怎么写,来这里查。表格汇总自各章,右上角可以切换语言。
上手运行
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
python3 app.py | javac + java | kotlinc + java | Java 11 起也能用 java App.java 直接运行单个文件 |
| CPython 解释器 | JVM | JVM | |
.pyc 字节码 | .class | .class | Python 自动放在 __pycache__/,不用手动管理 |
python3 交互模式 | jshell | Kotlin Notebook | 验证想法最快的方式 |
变量与基础类型
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
int | int / long / BigInteger | Int / Long / BigInteger | Python 只有一种,自动扩容 |
float | double | Double | Python 没有 32 位 float |
True / False | true / false | true / false | 首字母大写 |
None | null | null | 判断时用 is None |
x ** y | Math.pow(x, y) | x.pow(y) | 整数的非负整数次幂仍是整数 |
abs(x)、round(x, 2) | Math.abs(x) | abs(x) | 内置函数,不用导入 |
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
s.strip() | s.strip() | s.trim() | |
s.split(",") | s.split(",") | s.split(",") | Java 返回数组,其余返回列表 |
",".join(xs) | String.join(",", xs) | xs.joinToString(",") | Python 把方法放在分隔符上 |
s.replace("a", "b") | s.replace("a", "b") | s.replace("a", "b") | |
s.startswith("a") | s.startsWith("a") | s.startsWith("a") | Python 全小写 |
s.upper() | s.toUpperCase() | s.uppercase() | |
"a" in s | s.contains("a") | "a" in s | |
s.find("a") | s.indexOf("a") | s.indexOf("a") | 找不到都返回 -1 |
int("42") | Integer.parseInt("42") | "42".toInt() | |
str(42) | String.valueOf(42) | 42.toString() | |
ord("a")、chr(97) | (int) 'a'、(char) 97 | 'a'.code、97.toChar() | 字符和码点互转 |
控制流
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
elif | else if | else if | |
and / or / not | && / || / ! | && / || / ! | |
x if c else y | c ? x : y | if (c) x else y | |
for i in range(n) | for (int i = 0; i < n; i++) | for (i in 0 until n) | |
enumerate(xs) | 下标循环 | xs.withIndex() | |
zip(a, b) | 下标循环 | a.zip(b) | |
x not in xs | !xs.contains(x) | x !in xs | |
pass | {} | {} | |
match / case | switch | when | |
循环的 else | 标志变量 | firstOrNull 等 |
函数
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
snake_case | camelCase | camelCase | 函数和变量 |
PascalCase | PascalCase | PascalCase | 类名 |
UPPER_CASE | UPPER_CASE | UPPER_CASE | 常量 |
snake_case.py | PascalCase.java | PascalCase.kt | 文件名 |
self | this | this | Python 要显式写在参数里 |
_internal | private | private | Python 只是约定 |
| 每行不超过 79 字符 | 100 到 120 字符 | 100 到 120 字符 | 很多团队会放宽到 88 或 120 |
数据结构
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
list:[1, 2] | ArrayList | MutableList | 有序、可变 |
tuple:(1, 2) | record / List.of | Pair / data class | 有序、不可变 |
set:{1, 2} | HashSet | MutableSet | 无序、元素唯一 |
dict:{"a": 1} | LinkedHashMap | LinkedHashMap | 键值对,保持插入顺序 |
collections.deque | ArrayDeque | ArrayDeque | 双端队列 |
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
xs.append(x) | xs.add(x) | xs.add(x) | 加到末尾 |
xs.extend(ys) | xs.addAll(ys) | xs.addAll(ys) | 合并另一个列表 |
xs.insert(i, x) | xs.add(i, x) | xs.add(i, x) | |
xs.remove(x) | xs.remove(x) | xs.remove(x) | Python 找不到时抛 ValueError |
xs.pop() | xs.removeLast() | xs.removeLast() | 删除并返回末尾元素,Java 21 起可用 |
xs.pop(0) | xs.remove(0) | xs.removeAt(0) | 按下标删除 |
xs.index(x) | xs.indexOf(x) | xs.indexOf(x) | Python 找不到时抛异常,而不是返回 -1 |
xs.sort() | Collections.sort(xs) | xs.sort() | 原地排序 |
sorted(xs) | xs.stream().sorted() | xs.sorted() | 返回新列表 |
xs.reverse() | Collections.reverse(xs) | xs.reverse() | 原地反转 |
xs.count(x) | Collections.frequency(xs, x) | xs.count { it == x } | 统计出现次数 |
xs.copy() | new ArrayList<>(xs) | xs.toMutableList() | 浅拷贝 |
xs.clear() | xs.clear() | xs.clear() | 清空 |
del xs[0] | xs.remove(0) | xs.removeAt(0) | del 也能删切片:del xs[1:3] |
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
for k, v in d.items() | d.forEach((k, v) -> ...) | for ((k, v) in d) | 同时遍历键和值 |
sum(xs) | stream.mapToInt(i -> i).sum() | xs.sum() | |
min(xs) / max(xs) | Collections.min(xs) | xs.min() | |
any(x > 0 for x in xs) | stream.anyMatch(...) | xs.any { it > 0 } | |
all(x > 0 for x in xs) | stream.allMatch(...) | xs.all { it > 0 } | |
reversed(xs) | xs.reversed() | xs.reversed() | Python 返回迭代器,Java 21 起可用 |
sorted(xs, key=f) | stream.sorted(cmp) | xs.sortedBy(f) |
模块与包
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
模块(.py 文件) | 类文件 | 文件 | Python 的最小导入单位是文件 |
| 包(目录) | package | package | |
sys.path | classpath | classpath | |
__init__.py | 无 | 无 | 包初始化代码 |
__all__ | public | public / internal | Python 里只影响 import * |
_name | private / 包私有 | private / internal | 约定,不强制 |
错误与异常
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
BaseException | Throwable | Throwable | 根类 |
Exception | Exception | Exception | 应用代码捕获到这一层为止 |
ValueError | IllegalArgumentException | IllegalArgumentException | 值不合法 |
TypeError | ClassCastException | ClassCastException | 类型不对 |
KeyError | 无(get 返回 null) | getValue 抛 NoSuchElementException | 字典键不存在 |
IndexError | IndexOutOfBoundsException | IndexOutOfBoundsException | 下标越界 |
ZeroDivisionError | ArithmeticException | ArithmeticException | Python 里浮点数除以零也会抛这个异常 |
NameError | 编译错误 | 编译错误 | 名字写错,运行到那一行才发现 |
ModuleNotFoundError | ClassNotFoundException | ClassNotFoundException | ImportError 的子类 |
AttributeError | NullPointerException | 无 | 常见于访问 None 的属性 |
FileNotFoundError | FileNotFoundException | FileNotFoundException | |
NotImplementedError | UnsupportedOperationException | NotImplementedError | 未实现的抽象方法 |
KeyboardInterrupt、SystemExit | 无 | 无 | 继承 BaseException,所以 except Exception 拦不住 Ctrl-C 和 sys.exit() |
类
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
__str__ | toString() | toString() | print 和 str() 时调用 |
__repr__ | 无 | 无 | 调试用的字符串,交互模式显示的就是它 |
__eq__ | equals() | equals() | == 时调用 |
__hash__ | hashCode() | hashCode() | 重写 __eq__ 时要一起处理 |
__lt__ | compareTo() | compareTo() | < 时调用,用于排序 |
__add__ | 无 | operator fun plus | + 时调用 |
__len__ | size() | size | len() 时调用 |
__getitem__ | get(i) | operator fun get | obj[i] 时调用 |
__iter__ | iterator() | operator fun iterator | for 循环时调用 |
__call__ | 函数式接口 | operator fun invoke | 让对象能像函数一样调用 |
__enter__ / __exit__ | AutoCloseable | Closeable | with 时调用 |
输入输出
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
f"{x:.2f}" | "%.2f" | "%.2f".format(x) | 保留两位小数 |
f"{x:>8}" | "%8s" | "%8s".format(x) | 右对齐 |
f"{x:<8}" | "%-8s" | "%-8s".format(x) | 左对齐 |
f"{x:08.3f}" | "%08.3f" | "%08.3f".format(x) | 用 0 补齐 |
f"{x:,}" | "%,d" | "%,d".format(x) | 千分位 |
f"{x:.1%}" | 无 | 无 | 百分比,0.25 显示为 25.0% |
f"{x:x}" | "%x" | "%x".format(x) | 十六进制 |
f"{x!r}" | 无 | 无 | 用 repr() 而不是 str() |
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
open(p) | Files.newBufferedReader(p) | file.bufferedReader() | 默认只读文本模式 |
open(p, "w") | Files.newBufferedWriter(p) | file.bufferedWriter() | 覆盖写入 |
open(p, "a") | Files.writeString(p, s, APPEND) | file.appendText(s) | 追加写入 |
open(p, "x") | Files.writeString(p, s, CREATE_NEW) | 无 | 文件已存在时报错 |
open(p, "rb") | Files.newInputStream(p) | file.inputStream() | 二进制模式 |
f.read() | Files.readString(p) | file.readText() | 读取全部 |
f.readlines() | Files.readAllLines(p) | file.readLines() | 读成行列表 |
Path(p).read_text() | Files.readString(p) | file.readText() | 一行读完,不用 with |
标准库巡礼
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
pathlib、os、shutil | java.nio.file | kotlin.io.path | 路径和文件操作 |
subprocess | ProcessBuilder | ProcessBuilder | 运行外部命令 |
tempfile | Files.createTempFile | createTempFile | 临时文件 |
glob | Files.newDirectoryStream | listDirectoryEntries | 通配符查找文件 |
sys、argparse | args、picocli | args、clikt | 命令行程序 |
re | java.util.regex | Regex | 正则表达式 |
math、random、statistics | Math、Random | kotlin.math、Random | 数学和随机数 |
datetime | java.time | java.time | 日期时间 |
time | System.currentTimeMillis、Thread.sleep | System.currentTimeMillis、Thread.sleep | 时间戳和休眠 |
collections | java.util | kotlin.collections | deque、Counter、defaultdict |
itertools、functools | Stream API | Sequence | chain、groupby、lru_cache、partial |
threading、concurrent.futures | java.util.concurrent | java.util.concurrent | 多线程 |
multiprocessing | 无 | 无 | 多进程,绕开 GIL |
asyncio | CompletableFuture | 协程 | 异步 I/O |
logging | SLF4J | SLF4J | 日志 |
decimal、fractions | BigDecimal | BigDecimal | 精确计算 |
unittest、doctest | JUnit | kotlin.test | 测试 |
urllib.request | java.net.http | java.net.http | HTTP 请求,实际项目多用第三方库 requests |
sqlite3 | JDBC + 驱动 | JDBC + 驱动 | Python 内置了 SQLite |
hashlib、base64、uuid | MessageDigest、Base64、UUID | MessageDigest、Base64、UUID | 摘要、编码和唯一 ID |
虚拟环境与依赖
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
pip | Maven | Gradle | Python 这边只管安装 |
| PyPI | Maven Central | Maven Central | 公共仓库 |
requirements.txt | pom.xml 的依赖部分 | build.gradle.kts 的依赖部分 | |
pyproject.toml | pom.xml | build.gradle.kts | 项目元数据和构建配置 |
.venv/ | 类路径 | 类路径 | 项目的依赖隔离 |
.whl 文件 | .jar | .jar | 分发格式 |
pip freeze | mvn dependency:list | gradle dependencies | 查看实际版本 |
| Python | Java | Kotlin | 说明 |
|---|---|---|---|
| FastAPI | Spring Boot | Ktor | Web 接口 |
| Django | Spring MVC + JPA | Spring Boot | 全功能 Web 框架 |
| SQLAlchemy | Hibernate | Exposed | ORM |
| pydantic | Bean Validation + Jackson | kotlinx.serialization | 数据校验和序列化 |
| pytest | JUnit | Kotest | 测试 |
| asyncio | CompletableFuture | 协程 | 异步编程 |
| ruff | Checkstyle、Spotless | ktlint | 代码检查和格式化 |
| mypy、pyright | javac | kotlinc | 类型检查 |
| pandas、NumPy | Tablesaw | Kotlin DataFrame | 数据分析 |
| PyTorch | DJL | KotlinDL | 机器学习 |
没有匹配的条目,换个关键词试试。