目录
一,类型转换
(1)自动类型转换
①变量的自动类型转换
②表达式的自动类型转换
(2)强制类型转换
二、 运算符
(1)“+”做连接符
(2)"++""--"自增自减运算符
①++、--在变量前,先+1、-1再使用
②++、--在变量后,先使用再+1、-1
(3)赋值运算符
①基本赋值运算符 “=”
②拓展赋值运算符 “+=” “-=” “*=” “/=” “%=”
(4)关系运算符
(5)逻辑运算符
(6)三元运算符
一,类型转换
(1)自动类型转换
①变量的自动类型转换
规则:类型范围小的变量,可以直接赋值给类型范围大的变量。
byte→short→int→long→float→double
char→int
byte a=6;
int b=a; //发生了自动类型转换
System.out.println(b); //输出结果为6
②表达式的自动类型转换
规则:1.在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算;
2.表达式的最终结果类型由表达式中的最高类型决定;
3.在表达式中,byte,short,char是直接转换成int类型参与运算。
byte、short、char→int→float→double
byte a=10;
int b=20;
double c=1.0;
double rs=a+b+c; //注意此处rs的类型为double,因为double>int
System.out.println(rs); //输出结果为31.0
byte i=10;
byte j=20;
int k=i+j; //此处需要特别注意k的类型为int而不是byte,因为在表达式中byte当int运算
System.out.println(k); //输出的结果为30
(2)强制类型转换
规则: 数据类型 变量=(数据类型)变量数据;
存在的问题:
①类型范围大的数据或变量,不能直接赋值给类型范围小的变量,若强制类型转换可能会造成数据(丢失)溢出;
int i=1500;
byte j=(byte)i;
System.out.println(j); //输出的结果为-36.结果错误
②浮点型强制转换成整型,直接丢掉小数部分,保留整数部分返回。
float a=3.6;
int b=(int)a;
System.out.println(b); //输出的结果为3
③小技巧
int a=3;
int b=2;
System.out.println(a/b*1.0); //输出的结果为1.0
System.out.println(a*1.0/b); //输出的结果为1.5
二、 运算符
(1)“+”做连接符
与字符串做+运算时会被当做连接符,其结果还是字符串
原则:能算则算,不能算就在一起
int a=5;
System.out.println("abc"+'a'); //输出的结果是abca
System.out.println("abc"+a); //输出的结果是abc5
System.out.println(5+a); //输出的结果是10
System.out.println(a+'a'); //输出的结果是5a
(2)"++""--"自增自减运算符
①++、--在变量前,先+1、-1再使用
int i=6;
int j=++i;
System.out.println(i); //输出的结果为7;
System.out.println(j); //输出的结果为7
②++、--在变量后,先使用再+1、-1
int i=6;
int j=i++;
System.out.println(i); //输出的结果是7
System.out.println(j); //输出的结果是6
(3)赋值运算符
①基本赋值运算符 “=”
②拓展赋值运算符 “+=” “-=” “*=” “/=” “%=”
拓展赋值运算符自带强制类型转换的作用
int i=10;
int j=6;
i+=b; //相当于a=(int)(a+b);
(4)关系运算符
是对数据进行条件判断的服啊后,最终会返回一个布尔值(true/false)
int a=10;
int b=10;
boomlean rs=a==b; //定义一个布尔值变量rs
System.out.println(rs); //输出的结果是true
(5)逻辑运算符
可以把多个条件的布尔值结果放在一起运算,最终得到一个布尔值
& 逻辑与
| 逻辑或
! 逻辑非
^ 逻辑异或 如果两个条件都是false\true,则结果是false
如果不同,则结果是true
&& 短路与 左边为false,右边不执行
|| 短路或 左边为true,右边不执行
另:&&与&结果一样,||与|结果一样
&,|,无论左边为何值,右边都执行
(6)三元运算符
条件表达式? 值1:值2;
先计算条件表达式的值,true→值1,false→值2
double score=18;
string rs=score>=60? "考试通过":"挂科";
System.out.println(rs); //输出的结果是挂科