数据类型
1.强类型语言(EX: java):要求变量在使用前必须明确声明类型,而且在运行过程中不允许进行隐式类型转换,除非通过特定的强制类型转换操作。
2.弱类型语言(EX: JavaScript):对类型的约束相对宽松,允许变量在运行时进行隐式类型转换。变量的类型可以根据操作数的类型自动发生变化。
3.java的数据类型
(1)基本数据类型
| 类型 | 说明 | 位数 | 字节数 | 范围 | 默认值 | 示例 |
|---|---|---|---|---|---|---|
| byte | 8位有符号整数 | 8 | 1 字节 | -128 至 127 | 0 | byte b = 100; |
| short | 16位有符号整数 | 16 | 2 字节 | -32,768 至 32,767 | 0 | short s = 32000; |
| int | 32位有符号整数 | 32 | 4 字节 | -2,147,483,648 至 2,147,483,647 | 0 | int i = 2147483647; |
| long | 64位有符号整数 | 64 | 8 字节 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 | 0L | long l = 9223372036854775807L; |
| float | 32位浮点数 | 32 | 4 字节 | 单精度,有效位数约6-7位 | 0.0f | float f = 3.14f; |
| double | 64位浮点数 | 64 | 8 字节 | 双精度,有效位数约15位 | 0.0d | double d = 3.14159; |
| boolean | 布尔值 | 1 | 1 字节* | true 或 false |
false | boolean isTrue = true; |
| char | 16位Unicode字符 | 16 | 2 字节 | '\u0000' 至 '\uFFFF' (0-65,535) | '\u0000' | char c = 'A'; 或 char special = '\u0041'; |
注:boolean 类型在 Java 规范中定义为 1 位,但实际存储通常占用 1 字节(8 位),因为计算机最小寻址单位是字节。char类型用单引号'A',不是双引号,String类用双引号"Moore",还需注意String不是关键字,是类。
(2) 引用数据类型
| 类型 | 说明 | 字节数 | 示例 |
|---|---|---|---|
| 类 | 自定义类或内置类的对象 | 取决于 JVM 实现 | String str = "Hello";Date date = new Date(); |
| 接口 | 实现接口的类的对象 | 取决于 JVM 实现 | List<String> list = new ArrayList<>();Runnable runnable = () -> System.out.println("Run"); |
| 数组 | 存储相同类型的多个元素 | 数组头 + 元素占用 | int[] numbers = new int[5];String[] names = {"Alice", "Bob"}; |
注:引用类型变量本身通常占用 4 字节(32 位 JVM)或 8 字节(64 位 JVM),实际对象大小取决于类的字段和 JVM 实现。
4.什么是字节
- 字节的基本定义
- 最小存储单位:在计算机中,1 个字节由 8 个二进制位(bit)组成,每 1 个二进制位的取值为 0 或者 1。
- 表示范围:1 个字节能够表示的数值范围是从 0 到 255(用无符号整数表示),或者从 - 128 到 127(用有符号整数表示)。
- 字节与其他单位的换算关系
1 字节(Byte)= 8 位(bit)
1 千字节(KB)= 1024 字节(Byte)
1 兆字节(MB)= 1024 千字节(KB)
1 吉字节(GB)= 1024 兆字节(MB)
1 太字节(TB)= 1024 吉字节(GB)