2.4算数运算
·算术运算符表:
·算术运算需要注意的一些事
①如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。(除号右边的负号可以忽略,左边的不可以)。
②取模运算的结果不一定总是整数。
③对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;x=x/1000*1000; x的结果是?3000
④“+”除字符串相加功能外,还能把非字符串转换成字符串.
例如:System.out.println(“5+5=”+5+5); //打印结果是?5+5=55
练习
以下二者的区别:
System.out.println('*' + '\t' +'*');//结果为93(完成的是ASCII码的相加)
System.out.println("*" + '\t' +'*');//结果为* *(字符串的拼接)
public class TestSign{
public static void main(String[] args){
int i1 = 10,i2 = 20;
int i = i1++;
System.out.print(“i=”+i); //i=10
System.out.println(“i1=”+i1);//i1=11
i = ++i1;
System.out.print(“i=”+i);//i=12
System.out.println(“i1=”+i1);//i1=10 11 12 13
i = i2--;
System.out.print(“i=”+i);//i=20
System.out.println(“i2=”+i2);//i2=19
i = --i2;
System.out.print(“i=”+i);//i=18
System.out.println(“i2=”+i2);//i2=18
}
}
2.5赋值运算
1.符号:=
①当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
②支持连续赋值。
ps:在使用扩展赋值运算时变量在参与运算时会把结果自动强制转换为当前变量类型
③扩展赋值运算符: +=, -=, *=, /=, %=
ps:字符串只有加等,即为拼接。
思考1: short s = 3;
s=s+2; ①//最终s的类型为默认类型int
s+=2; ②//最终仍为原有s的类型
①和②有什么区别?
思考2:
boolean b1 = false;
//区分好==和=的区别。
if(b1=true)
System.out.println("结果为真");
else
System.out.println("结果为假");
思考3:
int i = 1;
i *= 0.1;
System.out.println(i);//结果为0,0.1强制转化为0
i++;
System.out.println(i);//结果为1
2.6 比较运算符
ps:
①比较运算符的结果都是boolean型,也就是要么是true,要么是false。
②比较运算符“==”不能误写成“=” 。
3.1逻辑运算符
1.种类:
& —逻辑与
| —逻辑或
!—逻辑非
&& —短路与
|| —短路或
^ —逻辑异或
2.作用
·注意:
①逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
②“&”和“&&”的区别:
❤单&时,左边无论真假,右边都进行运算;
❤双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
③“|”和“||”的区别同理,❤||表示:当左边为真,右边不参与运算。
在不需要逻辑运算两边都参与运算的时候,尽量使用&&和||
④异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
3.2位运算符
位运算是直接对二进制进行运算
二进制的一些基础运算技巧:https://blog.youkuaiyun.com/qq_45562910/article/details/104329866
结论: m >> n m * 2-n(除不尽保留整数部分)
m << n m * 2n
位运算的示意图(共32位):
负数右移的时候要注意补1(第二行有符号右移看首位是0还是1,零则补零;第三行为无符号右移补零)
3.3三元运算符
例:
int i=1;
int k=i>0?3:2;
System.out.println(k);
结果为3
int m=1;
int n=2;
int k=0;
System.out.println(m>n?(m>k?m:k):(n>k?n:k));
结果为2
3.4.运算符的优先级
此外,小括号()可以提高优先级