最近开始学习Python,都说最好的学习方式就是比较。从今天开始,用博客来记录Python和之前学习的C++、Java语言的区别,看看这是否是一个学习新语言的好途径。
C++的支持的基本数据类型:bool、char、wchar_t、short、int、long、long long、float、double、long double;其中 char、wchar_t、short、int、long、long long可以通过unsigned修饰符修饰
C++中各种基本数据类型占用的存储空间,是依照机器来定的,c++中仅定义了各个数据类型占用的最小存储空间:
bool - 未定义最小存储空间
char/unsigned char - 1个字节
wchar_t/unsigned wchar_t - 2个字节
short/unsigned short - 2个字节
int/unsigned int - 2个字节
long/unsigned long - 4个字节
float - 单精度浮点数,6位有效数字(一般是4个字节)
double - 双精度浮点数,10位有效数字(一般是8个字节)
long double - 扩展精度浮点数,10位有效数字(一般是12个字节)
Java支持的基本数据类型:boolean、char、byte、short、int、long、float、double,不支持unsigned修饰符,数据类型都是带符号的
Java中各种数据类型占用的存储空间,是规定好了的,并不因为机器的不同而不同。JAVA定义的各种数据类型支持的存储空间如下:
boolean - 1位
byte - 1个字节
char - 2个字节
short - 2个字节
int - 4个字节
long - 8个字节
float - 4个字节
double - 8个字节
Python支持的基本数据类型:bool类型、整型、浮点型、字符串、列表、元组、集合、字典;数据类型不存在unsigned一说,都是带符号的
Python中各种数据类型占用的存储空间,并没有任何规定,完全取决于赋值的数据;所以,和C++和Java不同,python中可以表达任意大的数值
Java和C++的对比
JAVA和C++的一个大的区别是,java中数据类型的大小是固定的,这个是因为java是跨平台的语言,显然,如果数据类型长度都不一致,就无法实现跨平台了。另一个区别是,JAVA的数据类型没有C++丰富,既没有long long、long double这种数据类型,也不支持unsigned一说。此外,在JAVA中char类型是2个字节的,一次性解决了C++中char和wchar_t的问题
Python和JAVA/C++的对比
从上面的基本信息可以看出来,python和C++以及Java的区别非常大,它并没有int、long等这类定义数据类型的关键字,其次,它也没有规定各个数据类型的存储空间大小。这是因为和C++、JAVA都是静态强类型语句不同,python是一种动态强类型语言,它不是依靠在编码时通过关键字来指定变量的类型,而是通过在运行时,计算变量的取值,自动为变量选择合适的数据类型。所以,python同样有各种数据类型的概念,却没有关键字去定义。【所谓强类型语言,指的是一个变量的数据类型一旦被定义了(无论是静态类型语言的通过关键字显示定义,还是动态语言的自动匹配),那么该变量的数据类型就不能被改变,除非是有强制的类型转换发生】
而Python中各个数据类型,并不需要定义其存储空间,也是这个原因。Python会根据变量的取值,自动为其分配存储空间,数值1和数值1000000000000000,对于python而言,都是整型数据,存储占用的空间显然不一样。
Python和其他两种语言的不同之处还在于,Python本身提供了内置的复杂数据类型:字符串、列表、元组、集合和字典。Python中的复杂数据类型,在JAVA和C++中都有其他的方式实现,在后面的文章中会详细对比这几种数据类型的差别。
转载地址《http://galaxyflower.blog.51cto.com/9006676/1441780》