一:运算符
1-自增自减运算符遵循以下规律
1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、
Float、Double、Character。
3. 它们的运算结果的类型与被运算的变量的类型相同。
2-位运算 { & | ~ ^ >> <
(1)移位运算的一些规则
1. byte、short、char在做移位运算之前,会被自动转换为int类型,然后再进行运算。
2. byte、short、int、char类型的数据经过移位运算后结果都为int型。
3. long经过移位运算后结果为long型。
4. 在左移位(<
那么先将要求移位数对该类型所能表示的最大位数求余后,再将被操作数移位所得余数对应
的数值,效果不变。比如1<<35=1<
5. 对于有符号右移位(>>)运算和无符号右移位(>>>)运算,当要移位的位数大于被操作数对
应数据类型所能表示的最大位数时,那么先将要求移位数对该类型所能表示的最大位数求余
后,再将被操作数移位所得余数对应的数值,效果不变。比如 100>>35=100>>(35%32)=100>>3=12。
二:基本类型
JAVA中的数值类型不存在无符号的,它们的取值 范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变,它们的值都已经以常量的形式定义在对应的包装类中。所有基本类型(包括void)的包装类都使用了final修饰,因此我 们无法继承它们扩展新的类,也无法重写它们的任何方法 。
1-基本类型可以分为三类
(1)字符类型char
(2)布尔类型boolean
(3)数值类型byte、short、int、long、float、double
(3)-(1)整数类型byte、short、int、long
(3)-(2)浮点数类型float、double
2-数值类型转换和赋值默认逻关系
实线表示无精度损失的转换,而虚线则表示这样的转换可能会损失一定的精度、甚至引发错误。
3-运算符对基本类型的影响
(1)当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则
1. 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
2. 否则,只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
3. 否则,只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
4. 否则,两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。
(2)当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则
运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,
且运算结果与运算符左边数值类型相同。
(3)当使用“==”运算符在基本类型和其包装类对象之间比较时,遵循如下规则
1. 只要两个操作数中有一个是基本类型,就是比较它们的数值是否相等。
2. 否则,就是判断这两个对象的内存地址是否相等,即是否是同一个对象。
4-Math.round()方法
1. 参数的小数点后第一位<5,运算结果为参数整数部分。
2. 参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。
3. 参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。
5-switch()的参数类型类型
1. byte、char、short、int四种基本类型以及它们的包装类(需要Java5.0/1.5以上版本支持)都可以用于
switch语句。
2. enum类型,即枚举类型可以用于switch语句,但是要在Java5.0(1.5)版本以上才支持。
3. long、float、double、boolean四种基本类型以及它们的包装类(在Java所有版本中)都不能用于
switch语句。
4. 所有类型的对象(包括String类,但在Java5.0/1.5以上版本中,该项要排除byte、char、short、int四
种基本类型对应的包装类)都不能用于switch语句。