1.Java中的数值类型不存在无符号的,他们的取值范围是固定的,不会随着硬件或系统环境的变化而改变。
2.对于数值类型的基本类型的取值范围,我们无需强行去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。例如:Byte.SIZE表示byte占多少位(8位),Byte.MIN_VALUE,Byte.MAX_VALUE分别表示byte能取到的最小,最大值。
3.基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。
4.所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。
5.未带有字符后缀标识的整数默认为int类型;未带有字符后缀标识的浮点数默认为double类型。
6.如果一个整数的值超出了int类型能够表示的范围,则必须增加后缀“L”(不区分大小写,建议用大写,因为小写的L与阿拉伯数字1很容易混淆),表示为long型。
7.带有“F”(不区分大小写)后缀的整数和浮点数都是float类型的;带有“D”(不区分大小写)后缀的整数和浮点数都是double类型的。
8.编译器会在编译期对byte、short、int、long、float、double、char型变量的值进行检查,如果超出了它们的取值范围就会报错。
9. int型值可以赋给所有数值类型的变量;long型值可以赋给long、float、double类型的变量;float型值可以赋给float、double类型的变量;double型值只能赋给double类型变量。
10.当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则:
1). 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
2). 否则,只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
3). 否则,只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
4). 否则,两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。
11.当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则:
运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,且运算结果与运算符左边数值类型相同。
12.当使用“==”运算符在基本类型和其包装类对象之间比较时,遵循如下规则:
1). 只要两个操作数中有一个是基本类型,就是比较它们的数值是否相等。
2). 否则,就是判断这两个对象的内存地址是否相等,即是否是同一个对象。
13.哪些类型可以用于switch语句呢,
1). byte、char、short、int四种基本类型以及它们的包装类(需要Java5.0/1.5以上版本支持)都可以用于switch语句。
2). long、float、double、boolean四种基本类型以及它们的包装类(在Java所有版本中)都不能用于switch语句。
3). enum类型,即枚举类型可以用于switch语句,但是要在Java5.0(1.5)版本以上才支持。
4). 所有类型的对象(包括String类,但在Java5.0/1.5以上版本中,该项要排除byte、char、short、int四种基本类型对应的包装类)都不能用于switch语句。
转自CSDN:CenturyMagus的专栏