1、基本数据类型转换之向上转型和向下转换 向上转换: 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型; byte,short,char → int → long → float → double byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。 boolean 类型是不可以转换为其他基本数据类型。 Eg: int i = 123; long l = i; //自动转换,不需强转 float f = 3.14F; double d = f; 向下转换: 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型; byte,short,char → int → long → float → double byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。 boolean 类型是不可以转换为其他基本数据类型。 Eg: long l = 123L; int i = (int) l;//必须强转 double d = 3.14; float f = (float) d; 我的总结:类型转化 小转大,自动!自动类型转换(也叫隐式类型转换) 大转小,强转!强制类型转换(也叫显式类型转换) 2、Java的运算符 运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种: 算术运算符(+ 、- 、* 、/ 、%) 赋值运算符(= 、+=、-=、*=、/=,、%=) 关系运算符(>、>=、<、<=、!=) 条件运算符(&&、||、!&、|、^) 位运算符(&、|、^、~、>>、<<、<<<、>>>) 我的总结: 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。 “&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。 “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。 “ ^ ”与“|”不同之处是:当左右都为true时,"^"结果为false。 3、表达式和三目运算符 是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列; a + b 3.14 + a (x + y) * z + 100 boolean b= i < 10 && (i%10 != 0) 表达式的类型和值: 对表达式中操作数进行运算得到的结果是表达式的值。 表达式值的数据类型即为表达式的类型。 表达式的运算顺序 应按照运算符的优先级从高到低的顺序进行; 优先级相同的运算符按照事先约定的结合方向进行; “三目运算符”,语法格式: x ? y : z; 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。 package reviewDemo; public class Demo2 { public static void main(String[] args) { String s = "lz"; s = (s == "lz" ? "正确" : "错误"); System.out.println(s); } } 输出:正确
推论:
左移规律
3<<2=12; 3<<1=6; 3<<3=24;
3*4=12; 3*2=6; 3*8=24;
3*22=12; 3*21=6 3*23=24;
结论往左移几位就是乘以2的几次幂。
右移规律
6>>2=1; 6>>1=3;
6/4=1; 6/2=3;
右移两位就是除以 2的2次方,右移一位就是除以 2的一次方。
总结:>>是除以2的移动位数次幂,<<是乘以2的移动位数次幂。
注意:最快的运算是位运算。
4、表达式
4.1、表达式简介
表达式是由操作数和运算符按一定的语法形式组成的符号序列,组合在一起计算出一个新的值。
(1)一个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值;
(2)表达式的值还可以用作其他运算的操作数,形成更复杂的表达式。
例子:
x num1+num2 a*(b+c)+d
3.14 x<=(y+z) x&&y||z