基于本文回答
0
评论

java的基本类型

Java语言中共有 8种 基本数据类型(Primitive Types),它们可以分为四大类:整数型浮点型字符型布尔型

以下是这8种基本类型的详细信息列表:

大类 类型 占用字节数 (Byte) 占用位数 (bit) 取值范围 默认值 对应包装类
整数型 byte 1 8 128-128 ~ 127127 0 Byte
short 2 16 32,768-32,768 ~ 32,76732,767 0 Short
int 4 32 ±21\pm 21 亿 (231-2^{31} ~ 23112^{31}-1) 0 Integer
long 8 64 263-2^{63} ~ 26312^{63}-1 0L Long
浮点型 float 4 32 ±3.40282347×1038\pm 3.40282347 \times 10^{38} (单精度) 0.0f Float
double 8 64 ±1.7976931348623157×10308\pm 1.7976931348623157 \times 10^{308} (双精度) 0.0d Double
字符型 char 2 16 单个 Unicode 字符 (\u0000 ~ \uffff) '\u0000' (空字符) Character
布尔型 boolean 1位/1字节* - truefalse false Boolean

详细介绍与注意事项

1. 整数型 (byte, short, int, long)

  • 默认类型:Java中整数字面量默认是 int 类型。
  • long 类型的声明:声明 long 类型时,如果数值超出了 int 的范围,必须在数字后面加上 Ll(推荐大写 L,因为小写 l 容易和数字 1 混淆)。
    java
    long num = 10000000000L;

2. 浮点型 (float, double)

  • 默认类型:Java中浮点数字面量默认是 double 类型。
  • float 类型的声明:声明 float 类型时,必须在数字后面加上 Ff
    java
    float pi = 3.14f;
  • 精度问题floatdouble 采用的是 IEEE 754 标准,存在精度丢失问题。因此,在需要精确计算(如金融货币计算)时,绝对不能使用 float 和 double,而应该使用 java.math.BigDecimal

3. 字符型 (char)

  • Java 的 char 类型采用 Unicode 编码,占用 2 个字节,因此它可以存储一个中文汉字。
    java
    char c = '中';

4. 布尔型 (boolean)

  • boolean 只有两个值:truefalse
  • *关于占用空间:JVM 规范并没有明确规定 boolean 的实际大小。在编译后,JVM 会用 int(4字节)来代替 boolean,如果是 boolean 数组,则会编译成 byte(1字节)数组。

基本类型 vs 引用类型 (主要区别)

  1. 存储位置
    • 基本类型:局部变量存在栈(Stack)内存中,速度快。
    • 引用类型(如 String、数组、自定义类):对象实例存在堆(Heap)内存中,栈中只保存指向堆内存的引用(地址)。
  2. 默认值
    • 基本类型作为成员变量时,有上述表格中的默认值。
    • 引用类型的默认值一律为 null
  3. 自动装箱与拆箱 (Autoboxing & Unboxing)
    • Java 5 引入了自动装箱和拆箱,使得基本类型和它们的包装类(Wrapper Classes)可以自动转换。
    java
    Integer age = 18; // 自动装箱:int 转换为 Integer
    int ageVal = age; // 自动拆箱:Integer 转换为 int
右滑查看面试常问