MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

【给java转python的小伙伴】Java 转 Python 必备→全语法一览对比表

2025-06-03 22:21 huorong 精选文章 7 ℃ 0 评论




以下是 Python 语法与 Java 语法的全面对比,涵盖核心语法特性及对应关系,结合多篇权威资料整理而成:


一、基础语法结构

语法特性

Python 示例

Java 示例

关键差异

代码块定义

缩进(强制)
if x>0:
print()

大括号 {}
if (x>0) {
System.out.println();
}

Python 用缩进定义块;Java 用大括号

语句结束符

可选分号(通常省略)
x = 10

强制分号
int x = 10;

Python 换行即结束;Java 必须分号

注释

# 单行注释
"""多行注释"""

// 单行注释
/* 多行注释 */

Python 多行注释用三引号;Java 用 /* */

二、变量与数据类型

语法特性

Python 示例

Java 示例

关键差异

变量声明

动态类型
x = 10
x = "text"

静态类型
int x = 10;
String y = "text";

Python 变量可重赋不同类型;Java 类型固定

整数类型

a = 100(自动处理大整数)

int a = 100;(32位)
long b = 100L;(64位)

Python 整数无大小限制;Java 需区分 int/long

浮点数

pi = 3.14

double pi = 3.14;
float f = 3.14f;

Java 需明确指定 float/double,float 需加 f 后缀

布尔值

flag = True

boolean flag = true;

Python 首字母大写;Java 小写

字符串

s1 = '单引号'
s2 = "双引号"

String s = "仅双引号";

Python 单/双引号通用;Java 仅双引号

三、运算符

语法特性

Python 示例

Java 示例

关键差异

算术运算

10 / 3 → 3.333(整除法)
10 // 3 → 3(整除)

10 / 3 → 3(整数除法)
10.0 / 3 → 3.333

Python 的 / 总是浮点结果;Java 整数除法截断

语法特性

Python 示例

Java 示例

关键差异

逻辑运算

and, or, not

&&, ||, !


成员检测

x in [1, 2, 3]

Arrays.asList(1,2,3).contains(x)

Python 原生支持;Java 需调用方法

四、控制流语句

1. 条件语句

# Python
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
else:
    grade = 'C'
// Java
char grade;
if (score >= 90) {
    grade = 'A';
} else if (score >= 80) {
    grade = 'B';
} else {
    grade = 'C';
}

差异:Python 用 elif;Java 用 else if

2. 循环语句

# Python for循环
for i in range(5):
    print(i)

# 遍历列表
fruits = ["apple", "banana"]
for fruit in fruits:
    print(fruit)
// Java for循环
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

// 增强for循环
String[] fruits = {"apple", "banana"};
for (String fruit : fruits) {
    System.out.println(fruit);
}

差异:Python 的 range() 生成序列;Java 需显式初始化/条件/步进

五、函数/方法定义

# Python
def add(a, b=1):    # 默认参数
    return a + b

result = add(3)     # 调用
// Java
public int add(int a, int b) {
    return a + b;
}

// 方法重载模拟默认参数
public int add(int a) {
    return add(a, 1);  // 通过重载实现默认值
}

差异

  • Python 支持默认参数、可变参数(*args)、关键字参数(**kwargs)
  • Java 不支持默认参数(需用方法重载模拟),可变参数用 int... nums

六、面向对象编程

1. 类与构造函数

# Python
class Dog:
    def __init__(self, name):
        self.name = name   # 动态添加属性

    def bark(self):
        print(f"{self.name} says woof!")
// Java
class Dog {
    private String name;   // 需预定义字段

    public Dog(String name) {
        this.name = name;
    }

    public void bark() {
        System.out.println(this.name + " says woof!");
    }
}

差异:Python 可在运行时动态添加属性;Java 需预先声明字段

2. 继承

# Python(支持多继承)
class Bulldog(Dog, Pet):
    def snore(self):
        print("Zzz...")
// Java(单继承)
class Bulldog extends Dog {
    public Bulldog(String name) {
        super(name);
    }

    public void snore() {
        System.out.println("Zzz...");
    }
}

// 通过接口实现多继承效果
interface Pet {
    void beCute();
}
class Bulldog extends Dog implements Pet {...}

差异:Python 直接支持多继承;Java 通过接口实现多继承效果

七、异常处理

# Python
try:
    file = open("test.txt")
except FileNotFoundError as e:
    print(f"Error: {e}")
finally:
    file.close()  # 需手动关闭资源
// Java
try (FileReader file = new FileReader("test.txt")) {  // 自动资源管理
    // 读取文件
} catch (FileNotFoundException e) {
    System.out.println("Error: " + e.getMessage());
}

差异

  • Python 用 except 捕获异常,finally 释放资源
  • Java 7+ 支持 try-with-resources 自动关闭资源

八、数据结构

数据结构

Python 示例

Java 示例

关键差异

列表/数组

list = [1, "a", True]

List<Object> list = new ArrayList<>();
list.add(1); list.add("a");

Python 列表可混合类型;Java 需用 Object 泛型

字典/Map

dict = {"name": "John"}

Map<String, String> map = new HashMap<>();
map.put("name", "John");

Python 键值对语法简洁;Java 需调用 put

集合/Set

set = {1, 2, 3}

Set<Integer> set = new HashSet<>();
set.add(1);

Python 字面量初始化;Java 需逐个添加

元组

tup = (1, "a")

无原生支持,可用 Pair<Integer, String>(第三方库)

Python 内置元组;Java 需额外库

九、文件操作

# Python(自动关闭)
with open("data.txt", "r") as f:
    content = f.read()
// Java(try-with-resources)
try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
    String content = br.readLine();
}

差异:两者均支持上下文管理器自动关闭文件,但 Java 需嵌套流对象

十、高级特性

1. Lambda表达式

# Python
square = lambda x: x ** 2
list(map(square, [1, 2, 3]))
// Java
Function<Integer, Integer> square = x -> x * x;
List<Integer> result = Arrays.asList(1, 2, 3).stream()
                                .map(square)
                                .collect(Collectors.toList());

差异:Python 的 lambda 更简洁;Java 需配合 Stream API

2. 生成器(Generator)

# Python
def count_up_to(n):
    i = 1
    while i <= n:
        yield i
        i += 1
// Java(需自定义迭代器)
Iterator<Integer> countUpTo(int n) {
    return new Iterator<>() {
        private int i = 1;
        public boolean hasNext() { return i <= n; }
        public Integer next() { return i++; }
    };
}

差异:Python 用 yield 简化生成器;Java 需完整实现迭代器接口

三元运算符

// python
res = "大" if x > 10 else "小"

//java
String res = x > 10 ? "大" : "小";

Tags:try-with-resources

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言