1. java原始类型
主类型 | 大小 | 最小值 | 最大值 | 封装器类型 |
---|---|---|---|---|
boolean | 1位 | -- | -- | Boolean |
char | 16位 | Unicode 0 | Unicode 2的16次方-1 | Character |
byte | 8位 | -128 | +127 | Byte (到Java 1.1才有,1.0版没有) |
short | 16位 | -2的15次方 | +2的15次方-1 | Short (到Java 1.1才有,1.0版没有) |
int | 32位 | -2的31次方 | +2的31次方-1 | Integer |
long | 64位 | -2的63次方 | +2的63次方-1 | Long |
float | 32位 | IEEE754 | IEEE754 | Float |
double | 64位 | IEEE754 | IEEE754 | Double |
void | - | - | - | Void (到Java 1.1才有,1.0版没有) |
Java 1.1增加了两个类,用于进行高精度的计算:BigInteger和BigDecimal。尽管它们大致可以划分为“封装器”类型,但两者都没有对应的“主类型”。
- BigInteger支持任意精度的整数。也就是说,我们可精确表示任意大小的整数值,同时在运算过程中不会丢失任何信息。
- BigDecimal支持任意精度的定点数字。例如,可用它进行精确的币值计算。
2. 作用域
Java里,作用域是由花括号的位置决定的。
{
int x = 12;
/* only x available */
{
int q = 96;
/* both x & q available */
}
/* only x available */
/* q “out of scope” */
}
Java里不能象下面这样书写代码:
{
int x = 12;
{
int x = 96; /* illegal */
}
}
3. 类成员变量的默认值
类型 | 默认值 |
---|---|
boolean | false |
char | '\u0000'(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
Object | null |
一旦将变量作为类成员使用,就要特别注意由Java分配的默认值。
然而,这种保证却并不适用于“局部”变量——那些变量并非一个类的字段。所以,假若在一个函数定义中写入下述代码:
int x;
那么x会得到一些随机值(这与C和C++是一样的),不会自动初始化成零。我们责任是在正式使用x前分配一个适当的值。如果忘记,就会得到一条编译期错误,告诉我们变量可能尚未初始化。
另外顺手说一下,Java的所有代码都必须写入一个类中。