1.类型转换
隐式转换:
目的: 因为java中基本数据类型,本质上的区别是数值取值范围大小不一样.所以在操作中会出现赋值,相互转换的过程
定义: 隐式转换也称自动转换,是将取值范围小的数据,赋值给取值范围大的数据,可以直接赋值(计算机自动完成)
数据的范围(从小到大): byte -> short(char) -> int -> float ->double
隐式转换的细节:
细节1: 小的数据类型和大的数据类型运算,小的会先提升为大的之后,再进行运算
eg int a = 10;
double b = 21.4;
double c = a + b; //这里的a会先升级为double类型,在进行运算
细节2: byte, short, char类型在参与运算时,不管是否有更高级的类型,都会先升级为int类型,再参与运算
eg: byte a = 10;
byte b = 22;
int c = a + b;//这里a和b都会先升级成int类型,再参与运算,所以要用int类型来接收
强制转换: 将大范围的数据赋值给小范围的数据
eg: int a = 5.5; int b = 500000000000L //这两条语句都会编译报错
强制转换的格式: 目标数据类型 变量名 = (目标数据类型)数据值;
eg: int a = (int)5.5; int b = (int)5000000000000L;
注意:强制转换会造成精度损失(不建议使用)
2.运算符: 对变量或者常量进行操作的[符号]
表达式: 用运算符将常量或者变量连接起来,并且符合java语法的式子
算术运算符: 加(+), 减(-), 乘(*), 除(/):整数相除正能得到整数,如果想带有小数结果,必须要有浮点数参与运算 , 取余(%):两数相除,只取余数
字符的"+"操作: char字符在参与运算时,先将字符转换成相对应的ASCII码表中十进制的int值,然后再进行运算
ASCII码表:美国信息交换标准代码,计算机中[字节]到[字符]的一套对应关系
字符串的"+"操作: 是字符串的连接符,字符串可以使用’+'号和任意类型进行[拼接]
自增自减运算符:
++:变量自身加1,可用于变量的前后.
–:变量自身加1,可用于变量的前后.
变量单独使用和参与运算时的区别:
单独使用: 在前在后效果一样(常用)
参与运算: 符号在前: 先拿变量进行自增自减,再拿结果进行操作
符号在后: 变量先进行操作,然后再进行自增自减
赋值运算符: 基本赋值运算符和扩展赋值运算符
基本赋值运算符: = ,将等号右边的值赋给左边
扩展赋值运算符: +=, -=, *=, /=, %= 特点: 隐含了强制转换
关系运算符: 也称作比较运算符,含有关系运算符的表达式,成为关系表达式
等于: == , 不等于: != , 大于: > , 小于: > , 大于等于: >= , 小于等于: <=
关系表达式的结果: 是boolean类型,结果只能是true或false
逻辑运算符:
与逻辑: & , 关系表达式1 & 关系表达式2; 若两个表达式都为true,那么结果为true,反之如果两个表达式中有一个为false,或者都为false,那么结果为false
或逻辑: | , 关系表达式1 | 关系表达式2; 若两个表达式中有一个为true,或者两者都为true,那么结果为true,反之如果两者都为false,那么结果为false
非逻辑: ! , eg: !a; 假若a为true,那么结果为false,反之a为false,结果为true
异或: ^ , 关系表达式1 ^ 关系表达式2; 若两个表达式都为true或者都为false, 那么结果为true ,反之两个表达式各自输出的结果不同,那么结果为false
短路运算符:
短路与: && , 遇到false就短路(与逻辑与的作用相同)
短路或: || , 遇到true就短路(与逻辑或的作用相同)
推荐使用短路逻辑运算符,可以提高代码效率
三元运算符:
格式: 对应数据类型 变量名 = 关系表达式?位置1:位置2;
执行流程: 判断表达式的结果,为true返回位置1,为false返回位置2