0%

基本类型

在程序设计中经常用到一系列类型, 他们需要特殊对待.
可以把他们想象成基本类型.
之所以特殊对待, 是因为new将对象存储在里, 故用new创建一个对象–特别是小的, 简单的变量, 不是特别有效.
因此, 对于这些类型, Java采用与C/C++相同的方法.
这也就是说, 不用new来创建变量, 而是创建一个并非引用的自动变量.
这个变量直接存储, 并置于堆栈中, 因此更加高效.

Java要确定每种基本类型所占存储空间的大小.
他们的大小并不像其他大多数语言那样随机器硬件架构的变化而变化.
这种所占存储空间大小的不变性是Java程序比其他大多数程序语言编写的程序更具可移植性性的原因之一.

所有数值类型都有正负号, 所以不要去寻找服务号的数值类型.

基本类型 大小 最小值 最大值 包装器类型 默认值
boolean - - - boolean false
char 16-bit Unicode 0 Unicode 2162^{16}-1 Char \u000(null)
byte 8 bits -128 128 Byte (byte)0
short 16 bits -2152^{15} 2152^{15}-1 Short (short)0
int 32 bits -2312^{31} 2312^{31}-1 Int 0
long 64 bits -2632^{63} 2632^{63}-1 Long 0L
float 32 bits IEEE7541 IEEE754 Float 0.0F
double 64 bits IEEE754 IEEE754 Double 0.0D
void - - - Void -

1. 其他常用类型

1.1. 高精度数字

  • BigInteger
    支持任意精度的整数.
  • BigDecimal
    支持任何精度的定点数.

这两个类包含的方法, 提供的操作与基本类型所能执行的操作类似.
也就是说, 能作用于int或float的操作, 也同样能作用于BigInteger和BigDecimal.
只不过必须以方法调用的方式取代运算符方式来实现运算.
由于这么做复杂了许多, 所以运算速度会比较慢.
这里, 我们以速度换取了精度.

1.2. 数组

Java确保数组被初始化, 而且不能在它的范围之外被访问.
这种范围检查, 是以每个数组上少量的内存开销及运行时的下标检查为代价的, 但是由此换来的是安全性和效率的提高, 因此付出的代价是值得的.

当创建一个数组对象时, 实际上就是创建了一个引用数组, 并且每个引用都对自动被初始化为一个特定的值, 该值拥有自己的关键字null.
一旦Java看到null, 就知道这个引用还没指向某个对象.
在使用任何引用之前, 必须为其指定一个对象;如果试图使用一个还是null的引用, 在运行时将会报错.
因此, 常犯的数组错误在Java中就可以避免.

还可以创建用来存放基本数据类型的数组.
同样, 编译器也能确保这种数组的初始化, 因为它会将这种数组所占的内存全部置为0.

2. Resource

  • Java编程思想


  1. 1.IEEE 754 标准是IEEE二进位浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号. https://baike.baidu.com/item/IEEE%20754/3869922?fr=aladdin&fromid=10427270&fromtitle=IEEE754%E6%A0%87%E5%87%86