一、概念
对常量和变量进行操作的符号
二、分类
1、算术运算符:+,-,*,/,%,++,--
(1)、注意事项
A、算数运算符:整数相处只能得到整数,如果想得到小数,必须把数据变成浮点数类型,
B、/获取的是触发操作的商,%获取的是触发操作的余数
(2)、++,--运算符的使用
A、单独使用:放在操作数的前面和后面效果一样(这种用法是比较常见的)
int x=3;
int y=4;
++x;
--y;
System.out.println("x:"+x+",y:"+y);
B、参与运算使用:放在操作数前面,先自增或者自减,然后参与运算,放在后面,先参与运算,在自增或者自减
int a = 3;
int b = 4;
//int c = a++;
//int d = b--;
int c = ++a;
int d = --b;
System.out.println("a:"+a); //4, 4
System.out.println("b:"+b); //3, 3
System.out.println("c:"+c); //3, 4
System.out.println("d:"+d); //4, 3
C、作用:就是对变量进行自增1或者自减1
(3)、++,--练习
第一题:
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
请分别计算出a,b,c的值(9,10,8)
第二题:
int x = 4;
int y = (x++)+(++x)+(x*10);
请分别计算出x,y的值(4+6+60)
2、赋值运算符:=,+=,-=,/=,*=,%=
short s=1;s = s+1;
short s=1;s+=1;
上面两个代码有没有问题,如果有,那里有问题。
扩展的赋值运算符其实隐含了一个强制类型转换。s += 1;不是等价于 s = s + 1;而是等价于 s = (s的数据类型)(s + 1);
3、比较运算符:==,!=,>,>=,<,<=
A、特点:无论操作是简单还是复杂,结果是boolean类型
B、注意事项:"=="不能写成"="
int x = 3;
int y = 4;
int z = 3;
System.out.println(x == y);
System.out.println(x != y);
System.out.println(x > y);
System.out.println(x >= y);
System.out.println(x < y);
System.out.println(x <= y);
4、逻辑运算符:&,|,^,!,&&,||
A、特点:一般用于连接boolean类型的表达式或者值
B、结论:
&:逻辑与:有false则false
|:逻辑或:有true则true
^:逻辑异或:相同为false,不同为true
!:逻辑非:非false则true,非true则false
C、&&和&的区别
a、最终的结果是一样
b、&&具有短路效果,左变是false,右边不执行
5、三目运算符
A、格式:比较表达式?表达式1:表达式2
B、比较表达式:结果是一个Boolean类型
C、执行流程:
根据表达式的计算返回一个true或者false
如果是true,就把表达式1作为结果
如果是false,就把表达式2作为结果
int x = 100;
int y = 200;
int z = ((x > y)? x: y);
D、练习
//获取两个整数中的最大值
int x = 100;
int y = 200;
int max = (x > y? x: y);
System.out.println("max:"+max);
System.out.println("--------");
//获取三个整数中的最大值
int a = 10;
int b = 30;
int c = 20;
int temp = ((a > b)? a: b);
int max1 = (temp > c? temp: c);
System.out.println("max1:"+max1);
//比较两个整数是否相同
int m = 100;
int n = 200;
//boolean flag = (m == n)? true: false;
boolean flag = (m == n);
System.out.println(flag);