2.4 KiB
2.4 KiB
Python对比Java和C++
1. 语法简单
-
Python:
print('Hello world') -
C++:
#include<iostream> using namespace std; int main(){ cout << "Hello world!" << endl; return 0; } -
Java:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
2. 解释型语言 无需编译
解释型语言(Python)不需要在运行前编译成机器码,代码可以直接由解释器逐行翻译并执行。
- 简单说就是写好的代码可以直接运行。比如一个代码文件test.py,直接通过
python test.py就能运行这段代码
编译型语言(C++、Java)在运行前需要将源代码编译成机器码或字节码,生成可执行文件用来执行。
- 写好的代码不能直接运行,要先变成可执行文件才能运行。比如一个文件test.java或test.cpp:
- Java:通过
javac test.java生成一个test.class的字节码,之后使用java test.class来执行这个字节码,才能运行代码 - C++:通过
g++ test.cpp生成一个可执行文件test.exe (Windows系统)或test (Linux系统),之后执行这个文件来运行代码
- Java:通过
实际使用中的区别:
-
Python相比Java和C++,通常运行速度比较慢,但是好处是修改代码后可以立即看到变化,不需要改一次编译一次。个别大型项目,编译一次需要几个小时。
-
Python不需要显式的指定变量的类型:
-
Python:
a = '1' # a为str类型 b = '2' # b为str类型 b = 3 # b可以被直接修改为int类型 print(a+b) # 报错:不同数据类型之间不能运算,说明python是强类型的 -
C++:
char a = '1'; // a为str类型 char b = '2'; // b为str类型 b = 3; // 报错:b已经被声明为char,就不能用int对他赋值 int b = 3; // 这样是可以的,因为重新声明了变量类型 print(a+b) // 报错:不同数据类型之间不能运算,说明C++也是强类型的
出现这个现象的原因是Python逐行翻译并执行,每一行的内容会依次生效,变量的内存空间是实时分配的。而C++等语言需要提前编译,编译的过程中为每一个变量预先分配了内存,而不同类型的变量在内存中占用的大小不一致,因此不能通过赋值修改变量类型。
-