JAVA 和Python对比

JAVA 和Python对比

1 . 数据类型

python

Int,float,complex numbers 都没有定义到底占用多少个字节空间。都是没有取值范围,也没有无符号的情况。

JAVA

JAVA 有基础数据类型,都有确定占多少个字节

2. 全局变量

python

类似c语言,可以定义全局变量,全局的函数。

JAVA

java都要定义类才行。

3.变量声明

python

无需声明类型,直接使用。会造成一个困扰,这个变量到底是新的变量,还是旧的变量复制。不过可以用typing解决这问题,但也不是强制的,给ide看的。

JAVA

都要声明类型。

4.类和继承

python

支持多继承,可以动态的加入属性,因为属性也可以是函数的变量,也就是可以动态的加入方法。
私有属性,也不是真正的私有。保护(protect)类型也没什么用。也没有接口什么的。
如何解决二义性的问题。
Python 多继承与mro_python 多继承 二义性 函数优先级-****博客
在python中提供了__mro__内置属性来查看类的MRO , 广度优先遍历

JAVA

不支持多继承,不支持动态添加属性

5. 体现出动态语言

python

可以动态的执行字符串里边的python语句。eval() exec()。可能是不安全。类似sql注入攻击。

java

无此功能

6. 切片

7. 测试程序

python

unittest是单元测试。doctest 非常方便写在源码里,可以测试,也可以当做example,告诉别人怎么使用。

java

没有doctest

注意的坑

1.默认参数是[]的问题

Python面试题:默认参数问题_python 默认参数空列表-****博客

2. 类属性读方式有两个,写方式自有一个。

class A:
    name = "aaa"


class B(A):

    def get_name(self):
        return B.name

    def set_name(self):
        B.name = "bbb"


b = B()
print(b.get_name())  # aaa 打印A的name
b.set_name()  # 新增B的类属性name , 是不是很诡异哈哈
print(b.name)  # bbb
print(A.name)  # aaa

上一篇:深度长文解析SpringWebFlux响应式框架15个核心组件源码


下一篇:Spring Reactor基本介绍和案例