基本数据类型转换规则:
• 取值范围小的类型自动转换为取值范围大的类型。
数据类型容量大小排序:
byte(1字节)< short(2字节)< int(4字节)<
long(8字节)< float(4字节)< double(8字节)
说明:
浮点数在内存中的存储方式是按照Value = (-1)^S * M * 2^E公式计算得来,其中第一位S为符号位,接下来的8位为指数位E,剩下的32位为小数位M,所以可以计算得浮点数的存储范围要大于长整型 long。
• 大容量数据类型转换为小容量数据类型时,要添加强制转换符号,例:
long a = 5;
int b = 6;
int c = (int)a+b;//将a转换为int类型
且有可能造成精度降低或数据溢出(因为小容量装不下)。
• 当有多种数据类型混合运算时,系统会自动将所有数据类型转换为容量最大的类型进行计算。
运算符:
算术运算符:“ + ”,“ - ”,“ * ”,“ / ”,“ % ”
加 减 乘 除 取模
上述几个运算符和C语言中的算术运算符用法大同小异就不再赘述
重点来看“++”(自加)和“--”(自减)
public class demo3 {
public static void main(String[] args) {
int a = 10;
System.out.println(a++);
//++a————先给a自身加1再放进表达式里运算
a = 10;
System.out.println(++a);
//a++————先将a自身放进表达式里运算之后再给自身加1
}
}
结果:
自减和自加用法相同。
关于“ + ”运算符在Java中有3种用法:
int a = 1+2;//数值相加
int b = +2;//正号
“he”+“llo”=“hello”//字符串相加
比较运算符:" < " , " > " , " == " , " != " , " <= " , " >= " , " instanceof "
需要注意的是比较运算符的结果都为boolean类型,true 或者 false。
逻辑运算符:
逻辑或 | 逻辑与 | 逻辑异或 | 逻辑非 | 短路或 | 短路与 | ||
a | b | a & b | a | b | a ^ b | ! a | a && b | a || b |
true | false | false | true | true | false | false | true |
false | true | false | true | true | true | false | true |
true | true | true | true | false | false | true | true |
false | false | false | false | true | true | false | false |
关于短路或( && )和 短路与( || )需要注意的是:
当" && " ( " || " )符号左边表达式的值为false(true)的时候,证明整个表达式的值已经确定为false(true)了,所以此时程序不再运行" && " ( " || " )符号右边的表达式。(可以优化性能)。
而逻辑或(&)和逻辑与(|)则会将符号两端的表达式都进行运算最后再进行逻辑运算。
赋值运算符:" = " , " += " , " -= " , " *= " , " /= " , " %= "
当“ = ”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
条件运算符: (条件表达式)? 表达式1:表达式2;
效果为:当条件表达式的值为true,执行表达式1,当条件表达式的值为false,执行表达式2.
位运算符:
由于位运算符使用的是编程语言最基本的逻辑,所以使用位运算符可以很好地优化代码性能,同样这类逻辑相比数学逻辑会有些难掌握,所以日常使用也较少。