【Java】Java 有哪些数据类型?(约270字)

Java 有哪些数据类型?

Java 的数据类型分两种:基本数据类型引用数据类型

 Java 进阶之路:Java数据类型

基本数据类型有哪些?

  • 数值型
    • 整数类型(byte、short、int、long)
    • 浮点类型(float、double)
  • 字符型(char)
  • 布尔型(boolean)

Java 基本数据类型的默认值和占用大小:

数据类型 默认值 大小
boolean false 1 字节或 4 字节
char ‘u0000’ 2 字节
byte 0 1 字节
short 0 2 字节
int 0 4 字节
long 0L 8 字节
float 0.0f 4 字节
double 0.0 8 字节

引用数据类型有哪些?

  • (class)
  • (interface)
  • []

boolean 类型实际占用几个字节?

这要依据具体的 JVM 实现细节,但是在 Java 虚拟机规范中,并没有明确规定 boolean 类型的大小,只是规定 boolean 类型只能取 true 或 false 两个值。

boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its “size” isn’t something that’s precisely defined.

我本机的 64 位 JDK 中,通过 JOL 工具查看单独的 boolean 类型,以及 boolean 数组,所占用的空间都是 1 个字节。

给Integer最大值+1,是什么结果?

当给 Integer.MAX_VALUE 加 1 时,会发生溢出,变成 Integer.MIN_VALUE。

int maxValue = Integer.MAX_VALUE;
System.out.println("Integer.MAX_VALUE = " + maxValue); // Integer.MAX_VALUE = 2147483647
System.out.println("Integer.MAX_VALUE + 1 = " + (maxValue + 1)); // Integer.MAX_VALUE + 1 = -2147483648

// 用二进制来表示最大值和最小值
System.out.println("Integer.MAX_VALUE in binary: " + Integer.toBinaryString(maxValue)); // Integer.MAX_VALUE in binary: 1111111111111111111111111111111
System.out.println("Integer.MIN_VALUE in binary: " + Integer.toBinaryString(Integer.MIN_VALUE)); // Integer.MIN_VALUE in binary: 10000000000000000000000000000000

这是因为 Java 的整数类型采用的是二进制补码表示法,溢出时值会循环。

  • Integer.MAX_VALUE 的二进制表示是 01111111 11111111 11111111 11111111(32 位)。
  • 加 1 后结果变成 10000000 00000000 00000000 00000000,即 -2147483648(Integer.MIN_VALUE)。

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容