数据类型储存一览

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

注意:不同系统会有所差异,一字节(byte)为 8 位(bits)。

注意:默认情况下,int、short、long都是带符号的,即 signed。

注意:long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。

类型范围
char1 个字节-128 到 127 或者 0 到 255
unsigned char1 个字节0 到 255
signed char1 个字节-128 到 127
int4 个字节-2147483648 到 2147483647
unsigned int4 个字节0 到 4294967295
signed int4 个字节-2147483648 到 2147483647
short int2 个字节-32768 到 32767
unsigned short int2 个字节0 到 65,535
signed short int2 个字节-32768 到 32767
long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int8 个字节0 到 18,446,744,073,709,551,615
float4 个字节精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double8 个字节双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long double16 个字节长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t2 或 4 个字节1 个宽字符

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

以下列出了32位系统与64位系统的存储大小的差别(windows 相同):

 

### Java 数据类型大小一览 Java 中的数据类型分为两大类:基本数据类型(Primitive Data Types)引用数据类型(Reference Data Types)。以下是每种数据类型的大小及其范围。 #### 基本数据类型 | 类型 | 大小 (位) | 范围 | |--------------|-----------|------------------------------------------------------------------------------------------| | `byte` | 8 | -128 至 127 | | `short` | 16 | -32,768 至 32,767 | | `int` | 32 | -2,147,483,648 至 2,147,483,647 | | `long` | 64 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 | | `float` | 32 | IEEE 754 单精度浮点数 | | `double` | 64 | IEEE 754 双精度浮点数 | | `char` | 16 | Unicode 字符集,表示范围为 \u0000 至 \uffff | | `boolean` | 不固定 | 存储 true 或 false,具体实现依赖于 JVM | 对于整数类型 (`byte`, `short`, `int`, `long`) 浮点数类型 (`float`, `double`) 的存储方式遵循二进制补码形式来处理负数[^3]。字符类型 (`char`) 使用 UTF-16 编码方案存储单个字符[^1]。 #### 引用数据类型 引用数据类型的大小并不固定,因为其实际内存占用取决于运行时环境以及对象的具体结构。通常情况下,引用本身占据一定的空间(例如在大多数现代 JVM 实现中可能为 32 位或 64 位),而被引用的对象则会根据其实例化的内容动态分配内存。 --- ### 示例代码展示不同数据类型的定义与初始化 ```java public class DataTypeSizes { public static void main(String[] args) { byte b = 1; // 8 bits short s = 123; // 16 bits int i = 123456; // 32 bits long l = 123456L; // 64 bits float f = 1.2f; // 32 bits double d = 1.2d; // 64 bits char c = 'A'; // 16 bits boolean bool = true; // Size depends on JVM implementation System.out.println("Byte size: " + Byte.SIZE); System.out.println("Short size: " + Short.SIZE); System.out.println("Integer size: " + Integer.SIZE); System.out.println("Long size: " + Long.SIZE); System.out.println("Float size: " + Float.SIZE); System.out.println("Double size: " + Double.SIZE); System.out.println("Char size: " + Character.SIZE); } } ``` 此代码片段展示了如何声明并打印各基本数据类型的位宽信息。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值