本文帮助已掌握Java语言的人员快速学习与掌握Python语言
欢迎大家留言补充其他的区别,如有不对的地方欢迎大家批评指正,谢谢!
Java | Python | ||
整体对比 | 变量类型 | 静态类型。java所有变量的类型必须被明确定义,且只能赋予相同类型的值,否则会类型异常。java集合对象(如:Vector和ArrayList)里面可以保存了通用类型对象,但是无法保存基本类型,如int等。要保存int到Vector,你必须先要转换int到Integer(注:这里指的1.5版以前的java)。同样的,当你要从集合中取出一个对象时,已经不记得对象的类型,必须显示转换为期望的类型。 | 动态类型。Python声明变量时不需要指定类型,变量的类型根据赋值的变化,可以是任意类型。如果变量已经被赋予某个类型对象,之后还可以被赋予另外一个不同类型的对象。Python的集合对象(如:lists和dictionaries)里面可以保存任意类型的对象,包括数字和lists。当你从集合中取出一个对象是,他仍然记得这个对象的类型,所以无需进行类型转换。 |
代码结构 | 冗长,必须使用{}管理语句体,使用;结束语句,所有变量使用前需要预先定义且注意作用域。 | 简洁,善用:和缩进,少用(),不用{}和;无需多余的{}和;语句就能完成目标,强制要求缩进正确。紧凑,在新的黑客字典里,Eric S. Raymond给予了“紧凑”这样的定义:Compact adj. 在设计中,描述有价值的特性并能够被人们立马理解。 | |
数据类型 | 基本数据类型 | Java 有八种基本数据类型,包括 boolean、char、byte、short、int、long、float 和 double | Python3 中不可变数据类型:Number(数字)(整型int、浮点型float、复数complex,python3的整型没有限制大小,可以当作Long类型使用,且布尔bool是整型的子类型)、String(字符串)(英文双引号或英文单引号括起来的内容,被定义为字符串)、Tuple(元组) |
引用数据类型 | 对象(最常见的字符串)、接口和数组等 | 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。 | |
编译机制 | 先编译再由JVM解释执行 | 无需编译,直接由解释器解释执行 | |
性能 | 运行效率高于Python | 一般 | |
适用场景 | 大规模、要求高性能和高效的企业级应用,偏向于商业开发。 | 小型的、不涉及高并发的项目,适用数据分析,人工智能领域。 | |
学习难度 | 面向对象的语言,其概念较为抽象,需要一定的编程基础才能熟练掌握。此外,Java的语法较为严谨,需要代码质量的保证,这也增加了初学者的学习难度。 | 语法简单、易懂,上手较快,适合初学者。 | |
生态圈 | 有很好的生态圈,但是Java的框架、库和工具有些过于繁琐、庞大,使得在开发过程中容易出现调用混乱。 | 有大量的开源软件和库,使得其开发效率和生态建设水平上非常高。 | |
学习资料 | 学习资料多,中文资料多。 | 偏少 |