第二章《一切都是对象》
主类型 | 大小 | 最小值 | 最大值 | 封装器类型 |
---|---|---|---|---|
field1 | field2 | field3 | 的 | |
boolean | 1-bit | – | – | Boolean |
char | 16-bit | Unicode 0 | Unicode 216- 1 | Character |
byte | 8-bit | -128 | +127 | Byte[11] |
short | 16-bit | -2 1 ^1 1 5 ^5 5 | +2 1 ^1 1 5 ^5 5 – 1 | Short1 |
int | 32-bit | − 2 3 -2^3 −23 1 ^1 1 | + 2 3 2^3 23 1 ^1 1– 1 | Integer |
long | 64-bit | -2 6 ^6 6 3 ^3 3 | +2 6 ^6 6 3 ^3 3 – 1 | Long |
float | 32-bit | IEEE754 | IEEE754 | Float |
double | 64-bit | IEEE754 | IEEE754 | Double |
void | – | – | – | Void1 |
- Java 1.1增加了两个类,用于进行高精度的计算:BigInteger和BigDecimal。尽管它们大致可以划分为“封装器”类型,但两者都没有对应的“主类型”。
- 创建对象数组时,实际创建的是一个句柄数组。而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:null(空)。一旦Java看到null,就知道该句柄并未指向一个对象。正式使用前,必须为每个句柄都分配一个对象。若试图使用依然为null的一个句柄,就会在运行期报告问题。因此,典型的数组错误在Java里就得到了避免。
- 若某个主数据类型属于一个类成员,那么即使不明确(显式)进行初始化,也可以保证它们获得一个默认值。
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
- 所有javadoc命令都只能出现于 “
/**
” 注释中
public static void main(String[] args) {
System.out.println(new Date());
Properties p = System.getProperties();
p.list(System.out);
System.out.println("--- Memory Usage:");
Runtime rt = Runtime.getRuntime();
System.out.println("Total Memory = "
+ rt.totalMemory()
+ " Free Memory = "
+ rt.freeMemory());
}
double比较大小
double a=1.01;
double b=1.01;
System.out.println(String.valueof(b)==String.valueof(a));
System.out.println(Double.doubleToLongBits(a)==Double.doubleToLongBits(b));
- float:
符号位(1 bit)
指数(8 bit)
尾数(23 bit)
- double:
符号位(1 bit)
指数(11 bit)
尾数(52 bit)
- 注意:从左到右是从低位到高位,而在计算机内部是采用逆序存储的。