跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Pythonjava

Python 与 Java 语法差异对照指南

对 Java 开发者提供 Python 语法迁移指南。内容涵盖基础结构、变量类型、运算符、字符串处理、流程控制、函数定义、面向对象、数据结构及异常处理等核心语法的详细对照。通过大量代码示例展示 Java 与 Python 在写法上的关键差异,如缩进规则、动态类型、内置函数及集合操作等。同时总结了 Java 转 Python 时的常见陷阱,如可变默认参数、索引访问方式及循环逻辑等,帮助开发者快速适应 Python 编程风格。

氛围发布于 2026/3/29更新于 2026/7/2145 浏览
Python 与 Java 语法差异对照指南

一、这篇文章怎么用

你如果会 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;       // 3
int b   % ;       
   Math.pow(, ); 
=
7
2
// 1
double
c
=
2
3
// 8.0
a = 7 // 2     # 3
b = 7 % 2      # 1
c = 2 ** 3     # 8

一句话理解: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)

一句话理解:range(10) 就是 0~9。

遍历数组/集合时:

for (String s : list) {
    System.out.println(s);
}
for s in lst:
    print(s)

一句话理解:Python 直接遍历元素。

九、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"]

一句话理解:Python 直接用 [] 读写。

十五、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

一句话理解:Python 的包就是文件夹。

二十、Java 选手最容易踩的坑

  • 缩进写错:Python 代码块只看缩进,少一个空格就会报错。
  • 把 list 当数组:Python list 可变、可扩展,但性能跟 Java 数组不同。
  • 默认参数坑:def f(x, arr=[]) 会共享同一个列表。
  • 没有 ++/--:Python 没有 i++,要用 i += 1。
  • 字符串拼接:别用 + 在循环里拼太多,推荐用 f-string 或 join。

二十一、更多真实场景对照

场景 1:字符串是否为空

if (str == null || str.isEmpty()) {
    System.out.println("empty");
}
if not s:
    print("empty")

场景 2:遍历 Map

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

场景 3:排序

Collections.sort(list);
lst.sort()

场景 4:倒序

Collections.reverse(list);
lst.reverse()

场景 5:过滤

List<Integer> out = new ArrayList<>();
for (int x : nums) {
    if (x > 10) out.add(x);
}
out = [x for x in nums if x > 10]

场景 6:分割字符串

String[] parts = s.split(",");
parts = s.split(",")

场景 7:字符串替换

String t = s.replace("a", "b");
t = s.replace("a", "b")

场景 8:去重

Set<Integer> set = new HashSet<>(list);
set_obj = set(lst)

场景 9:判断元素是否存在

if (list.contains(x)) { ... }
if x in lst:
    ...

场景 10:获取长度

int n = list.size();
n = len(lst)

补充说明

如果你之前写 Java,很容易把'类型 + 访问修饰符 + 结构'当成必须,但 Python 更强调'能跑 + 可读'。因此建议你先把 Java 的思维改成:先写出能跑的版本,再考虑结构与重构。

实际开发中,Python 的写法会更短,但一旦规模变大,也需要像 Java 一样做模块化、分层和规范命名。只不过入口更简单,语法更直观。

如果你习惯了 Java 的 IDE 提示,也可以给 Python 加类型提示(type hints),这样编辑器也能提示类型。

目录

  1. 一、这篇文章怎么用
  2. 二、最常用语法对照总览
  3. 三、Hello World 与基本结构
  4. 四、变量与类型(写法差异)
  5. 五、数字与运算
  6. 六、字符串拼接与格式化
  7. 七、if / else(最常用)
  8. 八、for 循环(最核心对照)
  9. 九、while 循环
  10. 十、switch / match
  11. 十一、函数(方法)写法
  12. 十二、类与对象
  13. 十三、数组/列表(List)
  14. 十四、Map / Dict(字典)
  15. 十五、Set(去重集合)
  16. 十六、列表推导式(Python 常用语法)
  17. 十七、异常处理
  18. 十八、文件读写(最实用)
  19. 十九、包与导入
  20. 二十、Java 选手最容易踩的坑
  21. 二十一、更多真实场景对照
  22. 补充说明
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 3.8+ 海象运算符详解
  • Python 常用医疗 AI 库及案例解析
  • 大语言模型超参数调优指南
  • 腾讯云 VOD AIGC 视频生成工具回调实现
  • Linux 环境下使用 C++ 实现 Shell 基本功能
  • 基于 Java 和 Leaflet 的湖南省道路长度 WebGIS 系统构建
  • AI 编程工具深度对比:Cursor、Copilot、Trae 与 Claude Code
  • Hive 常用聚合函数 collect_list 详解
  • LeetCode 141 环形链表检测:哈希表与快慢指针法
  • CCF-GESP 2026 年 3 月五级 C++ 真题:找数
  • 考拉悠然UU Holo变身AI登山助手,空间智能助力公益攀登
  • 基于 Leaflet Trackplayer 的高速公路轨迹 WebGIS 可视化实战
  • SQL 表查询基础:SELECT 语句详解
  • Python 实现 GitHub 热门项目自动挖掘与分析 AI Agent
  • Xilinx FPGA 实现 RISC-V 五级流水线 CPU 设计实战
  • OpenClaw 开源 AI 执行引擎:架构、安装与实战详解
  • AI 与存储结合:智能存储实践与挑战
  • OpenClaw 结合 cpolar 实现公网访问与应用场景
  • 宝塔面板安装青龙面板(Docker 版)
  • 本地部署 Deepseek-r1 模型指南:离线运行与交互实践

相关免费在线工具

  • 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