1.概述:对常量和变量进行运算的操作的符号
2.常见的运算符:算术运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符、位运算符
算术运算符:
• 除法运算符(/):得到两个数据的商
特点:整数除以整数结果还是整数,想要得到小数,就必须有浮点类型参与运算
public class ConversionDemo3{ public static void main (string[] args){ int num1 = 12; int num2 = 5; int result1 = num1 / num2; system.out.println(reault1);//2 int result1 = num1 / num2 * num2; system.out.println(reault2);//10 double result3 = num1 / num2; system.out.println(reault3);//2.0 double result4 =num1 / num2 + 0.0;//2.0 double result5 =num1 / (num2 + 0.0);//2.4 double result6 =(double)num1 / num2;//2.4 double result7 =(double)(num1 / num2);//2.0 } }
• 取模(取余)运算符(%):得到两个数据相除的余数
特点:可以用来判断两个数是否能够整除
结果的符号与被模数的符号相同
public class ConversionDemo4{
public static void main (string[] args){
int m1 = 12;
int n1 = 5;
System.out println("m1 % n1=" + m1 % n1);int m2 = -12;
int n2 = 5;
System.out println("m2 % n2=" + m2 % n2);int m3 = 12;
int n3 = -5;
System.out println("m3 % n3=" + m3 % n3);int m4 = -12;
int n4 = -5;
System.out println("m4 % n4=" + m4 % n4);
}
}
• 自增1:(自减1一样)
(前)++:先自增1,后运算
(后)++:先运算,后自增1
自增1不会改变本身变量的数据类型
public class ConversionDemo5{ public static void main (string[] args){ int a1 = 10; int b1 = ++a1; System.out.println("a1=" + a1",b1=" + b2);//a1=11,b1=11 int a2 = 10; int b2 = a1++; System.out.println("a2=" + a2",b2=" + b2);//a2=11,b2=10 byte bb1 = 127; bb1++; System.out.println("bb1="+bb1);//bb1=-128
赋值运算符:
即用于给变量赋值的运算符
• 常见的赋值运算符:
▲基本赋值运算符:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制 类型转换原则进行处理。
支持连续赋值。
▲扩展赋值运算符:+=, -=, *=, /=, %=
◇好处:省略了强制类型转换的操作,不会改变数据类型
▲注意:=表示赋值操作,不是相等
==用来表示相等
int a = 10; a += 20;//相当于a=a+20 System.out.println(a);//30 short s = 1; //s = s + 1; 报错 s += 1;//相当于s = (short)(s + 1); System.out.println(s);//2
关系/比较运算符:
◇ 定义:关系运算符是用来描述两个变量值之间的关系的
◇ 关系运算符的结果都是布尔类型
◇ ==和!=:不仅可以在数值类型数据之间,还可以使用在其他引用类型变量之间
◇ ==符号使用时,必须保证符号两边的变量类型一样
◇常见关系运算符:
int a = 10,b = 20,c = 10; System.out.print(a == b);//false System.out.print(b != c);//true int i = 10; int j = 20; System.out.println(i == j);//false System.out.println(i = j);//20 boolean b1 = true; boolean b2 = false; System.out.println(b1 == b2);//false System.out.println(b1 = b2);//true(= 是赋值的意思)
逻辑运算符:
▲逻辑关系运算符两端一般连接值为布尔类型的关系表达式
▲常见的逻辑关系符:
&—逻辑与 ,| —逻辑或,!—逻辑非,&& —短路与 ,|| —短路或 ,^ —逻辑异或(a,b不同则为true)
▲偶数个逻辑非!结果不变(还是原值) 例如:System.out.println(!!!!!!true);//true
▲奇数个逻辑非!值不变(还是原值的否定)例如:System.out.println(!!!!!true);//false
▲“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
▲“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算
▲异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
三元运算符
◇ 又叫三目运算符,即由三部分组成,格式如下:
(关系表达式)? 表达式1:表达式2;
◇ 运算流程:
如果关系表达式结果为true,运算后的结果是表达式1;
如果关系表达式结果为false,运算后的结果是表达式2;
◇ 表达式1和表达式2是同种类型
◇ 凡是可以使用三元运算符的地方,都可以使用if...else,反之,不成立。
◇ 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简单,执行效率高
//求两个数的最大值 int a = 10,b = 20; int max = (a >= b)? a : b; System.out.println("最大值为"+ max);
位运算符:
位运算符操作的都是整型的数据
<<:在一定范围内,每向左移一位,相当于*2
>>:在一定范围内,每向有移一位,相当于/2
优先级: