跳到主要内容Python 与 Java 语法差异对照指南 | 极客日志Pythonjava
Python 与 Java 语法差异对照指南
综述由AI生成对 Java 开发者提供 Python 语法迁移指南。内容涵盖基础结构、变量类型、运算符、字符串处理、流程控制、函数定义、面向对象、数据结构及异常处理等核心语法的详细对照。通过大量代码示例展示 Java 与 Python 在写法上的关键差异,如缩进规则、动态类型、内置函数及集合操作等。同时总结了 Java 转 Python 时的常见陷阱,如可变默认参数、索引访问方式及循环逻辑等,帮助开发者快速适应 Python 编程风格。
氛围24 浏览 一、这篇文章怎么用
你如果会 Java,这篇文章就按'Java 写法 → Python 写法 → 一句话解释'来走。每一节都是具体语法对照,不讲空话,不考试,不绕概念。看完你就能把 Java 习惯直接迁移到 Python。
本文重点:写法对照 + 常见坑 + 迁移小技巧。所有示例都尽量贴近真实开发。
二、最常用语法对照总览
- Java for (int i=0; i<10; i++) → Python for i in range(10)
- Java if (x > 0) { ... } → Python if x > 0: ...
- Java String s = "a" + i; → Python s = f"a{i}"
- Java list.get(i) → Python list[i]
- Java map.put(k,v) → Python dict[k] = v
- Java new ArrayList<>() → Python []
三、Hello World 与基本结构
Java 有 class 和 main,Python 直接写语句。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
print("Hello, World!")
一句话理解:Python 直接跑脚本,不需要 main。
四、变量与类型(写法差异)
Java 变量必须写类型,Python 不用写。
int a = 10;
String name = "Tom";
a = 10
name = "Tom"
一句话理解:Python 变量就是'贴标签的盒子',标签可以换。
五、数字与运算
常见运算对照:
int a = 7 / 2;
int b % ;
Math.pow(, );
=
7
2
double
c
=
2
3
a = 7 // 2
b = 7 % 2
c = 2 ** 3
一句话理解:Python 用 // 表示整除,用 ** 表示幂。
六、字符串拼接与格式化
Java 常见写法:+ 或 String.format;Python 最推荐 f-string。
String name = "Tom";
int age = 18;
String s1 = "name=" + name + ", age=" + age;
String s2 = String.format("name=%s, age=%d", name, age);
name = "Tom"
age = 18
s1 = "name=" + name + ", age=" + str(age)
s2 = f"name={name}, age={age}"
一句话理解:Python 里拼字符串优先用 f,又短又清晰。
七、if / else(最常用)
Java:小括号 + 大括号;Python:冒号 + 缩进。
if (score >= 60) {
System.out.println("pass");
} else {
System.out.println("fail");
}
if score >= 60:
print("pass")
else:
print("fail")
一句话理解:Python 靠缩进分块,缩进对齐就是同一层。
八、for 循环(最核心对照)
Java 经典 for(i=0;i<10;i++),Python 用 range。
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
for i in range(10):
print(i)
for (String s : list) {
System.out.println(s);
}
九、while 循环
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
i = 0
while i < 5:
print(i)
i += 1
一句话理解:Python 没有 i++,用 i += 1。
十、switch / match
Java 有 switch;Python 3.10+ 用 match。
switch (x) {
case 1:
System.out.println("one");
break;
default:
System.out.println("other");
}
match x:
case 1:
print("one")
case _:
print("other")
一句话理解:match 更像'更好看的 switch'。
十一、函数(方法)写法
Java:写在 class 里;Python:可直接写函数。
public int add(int a, int b) {
return a + b;
}
def add(a, b):
return a + b
一句话理解:Python 不写类型,不写 public。
def add(a, b=0):
return a + b
def sum_all(*nums):
return sum(nums)
一句话理解:Java 用重载;Python 用默认参数更方便。
十二、类与对象
class User {
private String name;
public User(String name) { this.name = name; }
public String hello() { return "Hi " + name; }
}
User u = new User("Tom");
System.out.println(u.hello());
class User:
def __init__(self, name):
self.name = name
def hello(self):
return f"Hi {self.name}"
u = User("Tom")
print(u.hello())
一句话理解:Python 的 self 就是 Java 的 this。
十三、数组/列表(List)
Java ArrayList 对应 Python list。
List<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
int x = nums.get(0);
nums = []
nums.append(1)
nums.append(2)
x = nums[0]
一句话理解:Python 取元素用 [],不用 get。
十四、Map / Dict(字典)
Java 的 Map,对应 Python 的 dict。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
int v = map.get("a");
mp = {}
mp["a"] = 1
v = mp["a"]
十五、Set(去重集合)
Set<Integer> s = new HashSet<>();
s.add(1);
s.add(1);
s = set()
s.add(1)
s.add(1)
一句话理解:Python set 就是 HashSet。
十六、列表推导式(Python 常用语法)
Java 里常用 for + add;Python 有更短写法。
List<Integer> out = new ArrayList<>();
for (int n : nums) {
out.add(n * n);
}
out = [n * n for n in nums]
一句话理解:Python 用一行写'遍历 + 处理'。
十七、异常处理
try {
int x = 1 / 0;
} catch (ArithmeticException e) {
System.out.println(e);
} finally {
System.out.println("done");
}
try:
x = 1 / 0
except ZeroDivisionError as e:
print(e)
finally:
print("done")
十八、文件读写(最实用)
String text = Files.readString(Path.of("a.txt"), StandardCharsets.UTF_8);
Files.writeString(Path.of("b.txt"), text, StandardCharsets.UTF_8);
with open("a.txt", "r", encoding="utf-8") as f:
text = f.read()
with open("b.txt", "w", encoding="utf-8") as f:
f.write(text)
一句话理解:Python 用 with 自动关文件。
十九、包与导入
Java 用 package + import,Python 用 import / from。
import com.demo.utils.MathUtil;
from utils import math_util
二十、Java 选手最容易踩的坑
- 缩进写错:Python 代码块只看缩进,少一个空格就会报错。
- 把 list 当数组:Python list 可变、可扩展,但性能跟 Java 数组不同。
- 默认参数坑:def f(x, arr=[]) 会共享同一个列表。
- 没有 ++/--:Python 没有 i++,要用 i += 1。
- 字符串拼接:别用 + 在循环里拼太多,推荐用 f-string 或 join。
二十一、更多真实场景对照
if (str == null || str.isEmpty()) {
System.out.println("empty");
}
for (Map.Entry<String, Integer> e : map.entrySet()) {
System.out.println(e.getKey() + ":" + e.getValue());
}
for k, v in mp.items():
print(f"{k}:{v}")
Collections.reverse(list);
List<Integer> out = new ArrayList<>();
for (int x : nums) {
if (x > 10) out.add(x);
}
out = [x for x in nums if x > 10]
String[] parts = s.split(",");
String t = s.replace("a", "b");
Set<Integer> set = new HashSet<>(list);
if (list.contains(x)) { ... }
补充说明
如果你之前写 Java,很容易把'类型 + 访问修饰符 + 结构'当成必须,但 Python 更强调'能跑 + 可读'。因此建议你先把 Java 的思维改成:先写出能跑的版本,再考虑结构与重构。
实际开发中,Python 的写法会更短,但一旦规模变大,也需要像 Java 一样做模块化、分层和规范命名。只不过入口更简单,语法更直观。
如果你习惯了 Java 的 IDE 提示,也可以给 Python 加类型提示(type hints),这样编辑器也能提示类型。
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online