简介

  • Java是一种强类型语言。

Java有一个能够表示任意精度的算术包,所谓的“大数”是Java对象,而不是一个基本Java类型。

整型

Java整型类型存储需求取值范围
int4字节-2147483648 ~ 2147483647(略高于20亿)
short2字节-32768 ~ 32767
long8字节-9223372036854775808 ~ 9223372036854775807
byte1字节-128 ~ 127
  • byteshort类型主要用于特定的应用场合。
    例如,底层的文件处理或者存储空间有限时的大数组。

  • Java中,整型的范围与运行Java代码的机器无关;
    这就解决了软件从一个平台移植到另一个平台时(或者同平台中不同操作系统之间移植时)令人头疼的主要问题。
    C和C++程序会针对不同的处理器选择最高效的整型;
    如此一来,一个在32位处理器上运行良好的C程序在16位系统上运行可能会发生整数溢出。

  • 长整型数值有一个后缀Ll(如400000000L)。
    十六进制数值有一个前缀0x0X(如0xCAFE)。
    八进制有一个前缀0(例如,010对应十进制中的8)。显然八进制容易混淆,所以很少有人用八进制常数。
    二进制有一个前缀0b0B(例如,0b1001就是9)。

  • 可以为数字字面量加下划线,如用1_000_000(或0b1111_0100_0010_0100_0000)表示100万。
    这些下划线只是为了更易读,Java编译器会去除这些下划线。

如果使用不可能为负的整数值而且确实需要额外的一位(bit),也可以把有符号整数值解释为无符号数,但是要非常仔细。例如,一个byte值b可以不表示-128 ~ 127的范围,如果你想表示0 ~ 255的范围,也可以存储在一个byte中。基于二进制算术运算的性质,只要不溢出,加法、减法和乘法都能正常计算。但对于其他运算,需要调用Byte.toUnsignedInt(b)来得到一个0 ~ 255的int值,然后处理这个整数值,再把它转换回byte。Integer和Long类都提供了处理无符号除法和求余数的方法。

// TODO