Java vs Python 语法对照表

Java vs Python 语法对照表 Java vs Python 语法对照表 专为 Java 开发者设计的 Python 快速上手指南 所有示例都采用左右对照方便理解目录基础语法数据类型控制结构函数/方法类和面向对象异常处理集合/数据结构导入和包管理其他常用特性1. 基础语法1.1 Hello WorldJavaPythonpublic class Hello {public static void main(String[] args) {System.out.println(“Hello World”);}}print(“Hello World”)关键区别Python 不需要类包裹直接写代码Python 用缩进表示代码块不用{}Python 语句末尾不需要;1.2 变量声明JavaPython// 需要声明类型String name “张三”;int age 25;final double PI 3.14;# 不需要声明类型name “张三”age 25# 约定大写字母表示常量PI 3.14关键区别Python 是动态类型变量不需要声明类型Python 没有final关键字常量靠命名约定全大写Python 注释用#不是//1.3 命名规范JavaPython驼峰命名法 (camelCase)蛇形命名法 (snake_case)userName,calculateTotal()user_name,calculate_total()类名UserService类名UserService(同样用大驼峰)2. 数据类型2.1 基本类型对照JavaPython说明intint整数doublefloat浮点数booleanbool布尔值 (True/False)charstr(单字符)字符longintPython 的 int 自动支持大数# Python 示例age25# intprice99.99# float (不是 double)is_validTrue# bool (注意大写 T)gradeA# str (单引号双引号都可以)2.2 字符串操作功能JavaPython定义String s hello;s hello长度s.length()len(s)截取s.substring(1, 4)s[1:4]查找s.indexOf(ell)s.find(ell)替换s.replace(l, L)s.replace(l, L)分割s.split(,)s.split(,)大小写s.toUpperCase()s.upper()去除空格s.trim()s.strip()格式化String.format(%s, name)f{name}或{0}.format(name)# Python 字符串示例name张三age25# f-string (推荐Python 3.6)print(f我叫{name}今年{age}岁)# 多行字符串 (三引号)text 这是第一行 这是第二行 这是第三行 # 字符串也是列表可以索引shelloprint(s[0])# hprint(s[-1])# o (负数索引从右边数)print(s[1:4])# ell (切片左闭右开)2.3 类型转换JavaPythonInteger.parseInt(123)int(123)Double.parseDouble(3.14)float(3.14)String.valueOf(123)str(123)(int) 3.14int(3.14)# Python 类型转换num_str123numint(num_str)# 转整数price_str99.99pricefloat(price_str)# 转浮点数age25age_strstr(age)# 转字符串# 检查类型type(age)# class intisinstance(age,int)# True3. 控制结构3.1 条件判断JavaPythonif (age 18) {System.out.println(“成年”);} else if (age 12) {System.out.println(“青少年”);} else {System.out.println(“儿童”);}if age 18:print(“成年”)elif age 12:print(“青少年”)else:print(“儿童”)关键区别Python 用:代替{}Python 用elif代替else ifPython 用缩进表示代码块通常 4 个空格Python 条件不需要括号()3.2 循环for 循环JavaPython// 传统 for 循环for (int i 0; i 5; i) {System.out.println(i);}// 增强 for 循环for (String item : list) {System.out.println(item);}# 范围循环for i in range(5):print(i) # 0,1,2,3,4# 遍历列表for item in list:print(item)# 需要索引时for i, item in enumerate(list):print(i, item)# range() 用法range(5)# 0, 1, 2, 3, 4range(2,5)# 2, 3, 4 (左闭右开)range(0,10,2)# 0, 2, 4, 6, 8 (步长为 2)# 遍历字典user{name:张三,age:25}forkey,valueinuser.items():print(f{key}:{value})while 循环JavaPythonint i 0;while (i 5) {System.out.println(i);i;}pythoni 0while i 5:print(i)i 13.3 break 和 continueJavaPythonbreakbreak(相同)continuecontinue(相同)# Python 独有的循环的 else 子句foriinrange(5):ifi3:breakelse:print(循环正常结束)# break 时不会执行4. 函数/方法4.1 定义函数JavaPythonpublic int add(int a, int b) {return a b;}def add(a, b):return a b关键区别Python 用def关键字Python 不需要声明返回类型Python 不需要访问修饰符 (public/private)4.2 参数类型# 默认参数defgreet(name,msg你好):print(f{msg},{name})greet(张三)# 你好张三greet(张三,Hello)# Hello, 张三# 可变参数 (类似 Java 的 varargs)defsum_all(*args):returnsum(args)sum_all(1,2,3,4)# 10# 关键字参数defcreate_user(name,age,city北京):return{name:name,age:age,city:city}create_user(张三,25)# city 用默认值create_user(张三,25,city上海)# 指定 citycreate_user(age25,name张三)# 忽略顺序# 可变关键字参数 (类似 Map)defprint_info(**kwargs):forkey,valueinkwargs.items():print(f{key}:{value})print_info(name张三,age25,city北京)4.3 Lambda 表达式JavaPython// Java 8(a, b) - a bComparator comp (s1, s2) - s1.length() - s2.length();# Python lambdalambda a, b: a b# 排序使用names.sort(keylambda s: len(s))5. 类和面向对象5.1 类的定义JavaPythonpublic class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public void sayHello() {System.out.println(Hello, name);}}class Person:definit(self, name, age):self.name nameself.age agedef say_hello(self):print(fHello, {self.name})关键区别Python 构造函数叫__init__Python 方法第一个参数必须是self(类似 Java 的this)Python 属性不需要声明直接在__init__中赋值Python 没有public/private靠命名约定 (_开头表示私有)5.2 继承JavaPythonpublic class Student extends Person {private String school;public Student(String name, int age, String school) {super(name, age);this.school school;}}pythonclass Student(Person):definit(self, name, age, school):super().init(name, age)self.school school5.3 访问控制约定JavaPython说明public无修饰公开访问protected_name(单下划线)约定不要直接访问private__name(双下划线)名称改写外部无法直接访问classPerson:def__init__(self,name):self.namename# publicself._age0# protected (约定)self.__secretxxx# private (名称改写)5.4 静态方法和类方法JavaPythonpublic static void staticMethod() { }public static Person create(String name) { }staticmethoddef static_method():passclassmethoddef create(cls, name):return cls(name)6. 异常处理6.1 try-catchJavaPythontry {int result 10 / 0;} catch (ArithmeticException e) {System.out.println(e.getMessage());} finally {System.out.println(“结束”);}try:result 10 / 0except ZeroDivisionError as e:print(e)finally:print(“结束”)关键区别Python 用except代替catchPython 用as代替 Java 的异常变量声明Python 可以捕获多个异常except (TypeError, ValueError) as e:6.2 抛出异常JavaPythonjavabrthrow new IllegalArgumentException(参数错误);pythonbrraise ValueError(参数错误)br# 常见异常类型ValueError# 值错误 (类似 IllegalArgumentException)TypeError# 类型错误KeyError# 字典键不存在 (类似 Map 的 get 返回 null)IndexError# 列表索引越界FileNotFoundError# 文件不存在Exception# 通用异常 (类似 Exception)7. 集合/数据结构7.1 列表 (List)JavaPythonList list new ArrayList();list.add(“A”);list.add(“B”);String first list.get(0);int size list.size();list [“A”, “B”] # 或 list []list.append(“A”)list.append(“B”)first list[0] # 注意是 [] 不是 ()size len(list)# 列表常用操作nums[1,2,3,4,5]# 切片nums[1:3]# [2, 3]nums[:3]# [1, 2, 3]nums[2:]# [3, 4, 5]nums[-1]# 5 (最后一个)# 列表推导式 (Java 没有对应物)squares[x**2forxinrange(10)]# [0, 1, 4, 9, 16, ...]evens[xforxinrange(10)ifx%20]# 常用方法nums.append(6)# 添加nums.insert(0,0)# 插入nums.remove(3)# 删除值为 3 的元素nums.pop()# 弹出最后一个nums.index(4)# 查找索引nums.count(2)# 计数nums.sort()# 排序nums.reverse()# 反转7.2 字典 (Map)JavaPythonMapString, Object map new HashMap();map.put(“name”, “张三”);map.put(“age”, 25);String name map.get(“name”);boolean contains map.containsKey(“name”);user {“name”: “张三”, “age”: 25} # 或 user {}user[“name”] “张三”user[“age”] 25name user.get(“name”) # 或 user[“name”]contains “name” in user# 字典常用操作user{name:张三,age:25}# 访问user[name]# 张三 (键不存在会报错)user.get(name)# 张三 (键不存在返回 None)user.get(email,未知)# 提供默认值# 遍历forkey,valueinuser.items():print(f{key}:{value})forkeyinuser.keys():print(key)forvalueinuser.values():print(value)# 字典推导式squares{x:x**2forxinrange(5)}# {0:0, 1:1, 2:4, 3:9, 4:16}7.3 集合 (Set)JavaPythonSet set new HashSet();set.add(“A”);set.contains(“A”);s {“A”, “B”} # 或 s set()s.add(“A”)“A” in s7.4 元组 (Tuple)Python 特有类似 Java 的不可变 List 或简单的数据载体# 元组 (不可变)point(10,20)x,ypoint# 解包# 函数返回多个值defget_user():return张三,25,北京name,age,cityget_user()8. 导入和包管理8.1 导入语句JavaPythonimport java.util.List;import java.util.ArrayList;import java.util.*;import static java.lang.Math.PI;import modulefrom module import functionfrom module import Class as Aliasimport module as m# 导入示例importmathprint(math.sqrt(16))frommathimportsqrtprint(sqrt(16))frommathimportsqrtassquare_rootprint(square_root(16))importnumpyasnp# 常见别名8.2 包管理JavaPythonMaven / Gradlepippom.xml/build.gradlerequirements.txtmvn installpip install package# Python 包管理pipinstallrequests# 安装包pipinstall-rrequirements.txt# 安装依赖列表pip freezerequirements.txt# 导出依赖pip list# 查看已安装包# requirements.txt 示例 requests2.31.0 numpy1.24.0 pandas9. 其他常用特性9.1 空值JavaPythonnullNoneif (obj null)if obj is None# Python 中判断空值ifvalueisNone:# 推荐passifnotvalue:# 也会匹配空字符串、空列表等pass9.2 布尔逻辑JavaPython, true,falseTrue,False# Python 布尔运算ifage18andhas_id:passifnotis_valid:pass# Python 特有的链式比较if18age60:# 等价于 age 18 and age 60pass9.3 三元运算符JavaPythonint result (a b) ? a : b;result a if a b else b9.4 文件操作JavaPythontry (BufferedReader br Files.newBufferedReader(path)) {String line br.readLine();} catch (IOException e) {// 处理}# 方式 1: 简单读取with open(“file.txt”, “r”, encoding“utf-8”) as f:content f.read()# 方式 2: 逐行读取with open(“file.txt”, “r”, encoding“utf-8”) as f:for line in f:print(line)# 写入文件with open(“output.txt”, “w”, encoding“utf-8”) as f:f.write(“内容”)9.5 JSON 处理JavaPythonJackson / Gsonjson(内置)ObjectMapper mapper new ObjectMapper();String json mapper.writeValueAsString(obj);MyClass obj mapper.readValue(json, MyClass.class);import json# 对象转 JSONjson_str json.dumps(obj)# JSON 转对象obj json.loads(json_str)# 读写文件with open(“data.json”, “r”, encoding“utf-8”) as f:data json.load(f)快速参考卡片符号对照概念JavaPython代码块{ }缩进语句结束;换行注释///* */# 逻辑与and逻辑或||or逻辑非!not等于不等于!!空值nullNone布尔真trueTrue布尔假falseFalse常用命令# Pythonpython--version# 查看版本python file.py# 运行脚本pipinstallxxx# 安装包pip freeze# 查看已安装包# Javajava-version# 查看版本javac File.java# 编译javaFile# 运行mvn cleaninstall# Maven 构建学习建议先忘掉分号和花括号- Python 用缩进和换行习惯动态类型- 不需要声明变量类型多用内置函数-len(),range(),enumerate()等掌握列表推导式- 让代码更简洁理解self- 类方法的第一个参数善用with语句- 自动资源管理阅读优秀代码- GitHub 上的 Python 项目最后更新2026-03-18