运算符和表达式
算术运算符
除法 / 和 取余 % 运算符:
除法得到的是商,取余得到的是余数
整数相除只能得到整数
要想得到小数,必须有浮点数的参与
字符的 + 操作
int i =10;
char c = 'A';
System.out.println(i+c);
'0'这是字符‘0’
0是整数0
算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动提升
提升规则:
byte,short,char类型会自动提升为int类型
整个表达式的类型会自动提升到表达式中最高等级操作数同样的类型
等级顺序:nyte,short,char→int→long→float→double
//char ch = i +c; ,
//char类型会被自动提升为int类型
int j = i +c;
int k = 10+13.14;
double d = 10+13.14;
字符串的"+"操作
public class hm1 {
public static void main(String[] args) {
System.out.println("it"+"heima");//结果itheima
System.out.println("itheima"+666);//结果itheima666
System.out.println(666+"itheima");//结果666itheima
System.out.println("黑马"+6+66);//结果heima666
System.out.println(1+99+"年黑马");//结果100年黑马
}
}
结论
*当+操作出现在字符串时,这个+是字符串连接符,不是算术运算
*在+操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行+操作时,从左到右依次执行
赋值运算符
+/-= 加/减后赋值
扩展的赋值运算符隐含了强制类型转换
public class hm02 {
public static void main(String[] args) {
int i = 10;
i += 20;//和i= i+20;一样,不过i+=20;隐含了强制类型转换,比较好,推荐用这个
System.out.println("i:"+i);
~~~
~~~
自增自减运算符
int i =10;
int j =i++ ;//先把i的值赋给j,i再加1;
关系运算符
(判断两者是否相等) != > >= < <=;成立为true,不成立为false;
注意分清=和;一个是赋值运算符,一个是关系运算符。
例如:
System.out.println(i=j);//错把==写为=,会导致输出结果为把j的值赋给i之后,输出i;
逻辑运算符
重点:
^异或 相同为false,不同为true
!逻辑非
短路逻辑运算符
短路与和短路或
&& 短路与 ,如果左边为真,右边执行,如果左边为假,右边不执行
|| 短路或,如果左边为假,右边执行,如果左边为真,右边不执行
三元运算符
格式:关系变达式?表达式1:表达式2;
范例:a>b?a:b;
计算规则:
首先计算关系表达式时的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
//定义两个变量
int a = 10;
int b = 20;
//获取两个数据中的较大值
int max=a>b?a:b;
案例 :两只老虎
public class hm02<la> {
public static void main(String[] args) {
int la = 180;
int lb = 200;
boolean c=la==lb?true:false;
System.out.println("c:"+c);
}
}
案例:三个和尚
int a = 150; //三个和尚
int b = 210;
int c = 165;
int d = a>b?a:b;
int max = d>c?d:c;
System.out.println("max:"+max);