数据类型

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 字节* truefalse 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)