杰瑞科技汇

Java的long类型到底占几个字节?

简短回答

在 Java 中,long 数据类型固定占用 8 个字节(64 位)

Java的long类型到底占几个字节?-图1
(图片来源网络,侵删)

详细解释

  1. 固定大小 Java 语言规范明确规定,long 类型是 64 位有符号整数,这意味着它在所有 Java 平台(无论是 Windows、Linux 还是 macOS,无论是 32 位还是 64 位 JVM)上,都占用 64 位,即 8 个字节,这是 Java “一次编写,到处运行”(Write Once, Run Anywhere)理念的重要体现。

  2. 为什么需要 long Java 中还有另一种整数类型 int,它占用 4 个字节(32 位)int 的表示范围是 -2,147,483,648 到 2,147,483,647,当需要进行更大数值的计算时(计算文件大小、内存地址、时间戳等),int 就不够用了,这时就需要使用 long

  3. long 的表示范围 由于 long 是 64 位有符号整数,它的表示范围是:

    • 最小值:-9,223,372,036,854,775,808 (即 -2⁶³)
    • 最大值:9,223,372,036,854,775,807 (即 2⁶³ - 1)
  4. 如何声明和使用 long

    Java的long类型到底占几个字节?-图2
    (图片来源网络,侵删)
    • 声明变量

      long myLongNumber;
    • 赋值: 在 Java 中,一个整数字面量(如 123)默认被当作 int 类型,如果要将一个数值赋给 long 变量,并且这个数值超出了 int 的范围,你必须在数字后面加上 Ll 后缀。强烈推荐使用大写的 L,因为小写的 l 容易和数字 1 混淆。

      // 正确:使用 L 后缀
      long bigNumber = 123456789012345L; // 这个数字超过了 int 的范围
      // 错误:会编译失败,因为 123456789012345 超出了 int 的范围
      // long anotherBigNumber = 123456789012345;
      // 正确:即使数值在 int 范围内,加上 L 也不会错,但可以显式表示意图
      long smallNumberForLong = 100L;
      // 正确:一个在 int 范围内的数字可以自动提升为 long
      long autoPromoted = 100;
  5. int 的运算longint 进行混合运算时,int 类型的值会被自动提升long 类型,整个运算结果也是 long 类型。

    int a = 100;
    long b = 200L;
    // a + b 的结果是 long 类型
    long result = a + b; // 300L
    // 如果试图将结果赋给一个 int 变量,会编译失败,因为可能丢失精度
    // int wrongResult = a + b; // 编译错误: incompatible types: possible lossy conversion from long to int

总结表格

数据类型 大小 (字节) 大小 (位) 默认值 范围
byte 1 8 0 -128 到 127
short 2 16 0 -32,768 到 32,767
int 4 32 0 -2,147,483,648 到 2,147,483,647
long 8 64 0L -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
float 4 32 0f 约 ±3.40282347 x 10³⁸ (7 位有效数字)
double 8 64 0d 约 ±1.7976931348623157 x 10³⁰⁸ (15 位有效数字)
char 2 16 '\u0000' \u0000\uffff (0 到 65,535)
boolean (理论上)1 (理论上)1 false truefalse

核心要点:在 Java 中,long 永远是 8 个字节,这是由语言规范保证的,与操作系统或硬件无关。

分享:
扫描分享到社交APP
上一篇
下一篇