三大语言(C/Java/Python)基本数据类型大小 / 内置容器 总结
@Author Luzhuo (http://luzhuo.me/blog)
关于为什么选这三门语言:
Java: 我是做移动开发的, 必选项;
C: 追求极致的速度, C必选;
Python: 快速开发, 不二之选.
基本数据类型
这张表格中, C的字节数大小是最重要的, 因为C能通过指针直接修改某类型的部分值, 而类型大小同时决定了指针的步长.
Java数据类型 | Java字节数 | C数据类型 | C字节数(win32位系统) | Python数据类型 | Python字节数 |
---|---|---|---|---|---|
boolean | 1bit | - | - | bool | - |
byte | 1 | - | - | - | - |
char | 2 | char | 1 | chr | - |
short | 2 | short | 2 | - | - |
int | 4 | int | 4 | int | - |
long | 8 | long | 4 | - | - |
- | - | long long | 8 | - | - |
float | 4 | float | 4 | float | - |
double | 8 | double | 8 | - | - |
- | - | - | - | complex | - |
string | - | - | - | str | - |
注:
- 以上表格的字节数的单位均为Byte类型, 除非特殊标注, 如1bit
- C的基本类型数据字节数比较特殊, 在32位操作系统和62为操作系统上, Win vc12 和 Linux gcc5.3.1 上的表现均不同.
- C分为 有符号类型(signed int) 和 无符号类型(unsigned int).
- Java的所有类型均为有符号类型.
- 1Byte = 8bit, 内存中的数据从右往左看.
- Python是弱类型语言, 字节数不是重点, 在C会自动转换数据类型
内置容器
结构组合 | C | Java | Python | 特点 |
---|---|---|---|---|
数组 | vector | ArrayList(Vector/CopyOnWriteArrayList) | list | 动态数组, 查询快O(1),增删慢O(n) |
数组+数组 | deque | - | - | 双端查询增删都快O(1), 不支持中间段操作 |
数组+数组 | stack | - | - | FILO(先进后出), 默认使用deque容器, 使用尾部 |
数组+数组 | queue | - | - | FIFO(先进先出), 默认使用deque容器, 尾部入头部出 |
数组式二叉树 | priority_queue | - | - | 最高级先出, 头部查询快O(1), 增删一般O( log 2 N \log_{2}N log2< |