一.定义
是一种特殊的符号,用以表示数据的运算、赋值、比较等等。有:算术运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符
二、分类讲解
(一)算术运算符
运算符 | 运算 |
---|---|
+ | 正号 |
- | 负号 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模(取余) |
++ | 前自增:先运算,后取值 |
++ | 后自增:先取值,后运算 |
– | 前自减:先运算,后取值 |
– | 后自减:先取值,后运算 |
+ | 字符连接串 |
示例
//正号
System.out.println(+3)//结果为3
//负号
int b = 4;
-b//运算之后结果为-4
//加
int value = 5 + 5;//结果为10
//减
int value1 = 6 - 4;//结果为2
//乘
int value2 = 3 * 4;//结果为12
//除
int value3 = 5 / 5;//结果为1
//取模(取余)
int value4 = 7 % 5;//结果为2
//前自增
int a = 2;
int i1 = ++a;//结果为a = 3 i1 = 3
//后自增
int c = 2;
b = c++;//结果为c = 3 b = 2
//前自减
int d = 2
int e = --d;//结果d = 1 e = 1
//后自减
int f = 2
int g = f--//结果f = 1 g = 2
//字符串连接
System.out.println("He" + "llo")//结果Hello
取余注意事项:
结果的符号与被模数的符号相同,开发中,经常使用%来判断能否被除尽的情况
前后自增和前后自减注意事项
自增或自减不会改变变量本身的数据类型
(二)赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或者强制类型转换原则处理,可连续赋值
扩展赋值运算符:+=,-=,*=,/=,%=
例:
int i += 1;//i=i+2;
System.out.println(i);//12
int a = 12;
a %= 5;//a = a % 5;
System.out.println(a)//2
(三)比较运算符
运算符 | 运算 |
---|---|
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
instancefo | 检查是否是类的对象 |
比较运算符注意事项:
①结果都是boolean型
“==“不可以误写成”=”
例
int i = 20;
int j = 10;
System.out.println(j == i);//false
System.out.println(j = i);//10
boolean b1 = false;
boolean b2 = true;
System.out.println(b1 == b2)//false
System.out.println(b1 = b2)//true
(四)逻辑运算符
&逻辑与 |逻辑或 !逻辑非
&&短路与 ||短路或 ^逻辑异或
操作的都是boolean类型的值
&&与&(|与||同)
//&
boolean b1 = false;
int num1 = 10;
if(b1 & (num1++ > 0)){
System.out.println("aaaa");
}else{
System.out,println("bbbb");
}
System.out.println("num1 = " + num1);
/*
结果为 bbbb
num1 = 11
*/
//&&
boolean b2 = false;
int num2 = 10;
if(b2 && (num2++ > 0)){
System.out.println("aaaa");
}else{
System.out.println("bbbb");
}
System.out.println("num2 = " + num2);
/*
结果为 bbbb
num1 = 10
*/
结论为:
当条件判断左为false时
&不执行后面的条件
&&继续执行后面的语句
|与||相同
在开发中,优先使用短路的运算符
(五)位运算符(是直接对二进制运算的)
《 和 》
《 在一定范围内,每向左移一位,相当于 * 2
》在一定范围内,每向左移一位,相当于 / 2
(六)三元运算符
格式:(条件表达式) ? 表达式1 : 表达式2;
说明:条件表达式为true,运算结果为表达式1,为false运算结果为表达式2
注意:表达式1和表达式2要为同种类型
和if - else的联系和区别
①可简化if -else
②必须返回一个结果
③if 后代码块可有多个语句