文章目录
运算符
运算符是对常量或者变量进行操作的符号,Java的运算符有六类:算术运算符、赋值运算符、自增自减运算符、关系运算符、逻辑运算符,三元运算符。用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
算术运算符
运算符 | 含义 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
注意:
-
“/”和“%”的区别:两个数据做除法,“/”取结果的商,“%”取结果的余数。 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
int x = 7; int y = 2; System.out.println(x / y);//结果为3 System.out.println(x % y);//结果为1
-
在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
System.out.println(1+1+"等于2");//输出结果为:2等于2 System.out.println(1+2+"不是"+1+2);//输出结果为:3不是12 //可以使用括号来改变运算的优先级 System.out.println(1+2+"不是"+(1+2));//输出结果为:3不是3
赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
运算符 | 含义 | 说明 |
---|---|---|
= | 赋值 | x=1,将1赋值给变量x |
+= | 加后赋值 | x+=y,将x+y的值赋值给x |
-= | 减后赋值 | x-=y,将x-y的值赋值给x |
*= | 乘后赋值 | x*=y,将x*y的值赋值给x |
/= | 除后赋值 | x/=y,将x/y的值赋值给x |
%= | 取余赋值 | x%=y,将x%y的值赋值给x |
int x = 7;
int y = 3;
System.out.println(x);//结果为:4
System.out.println(x += y);//结果为:10
System.out.println(x -= y);//结果为:4
System.out.println(x *= y);//结果为:21
System.out.println(x /= y);//结果为:2
System.out.println(x %= y);//结果为:1
自增、自减运算符
自增、自减运算符“++”“–”是单目运算符,既可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量,作用是使变量的值增1或减1。
++x(–x)表示在使用x之前,先使x的值增(减)1。
x++(x–)表示在使用x之后,使x的值增(减)1。
关系运算符
运算符 | 含义 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
注意:
- 所有的关系运算符的运算结果都是波尔类型,不是true就是false,不可能是其他值。
- 千万不要把“==”误写成“=”,"==“是判断是否相等的关系,”="是赋值。
逻辑运算符
运算符 | 含义 | 结果 |
---|---|---|
& | 逻辑与(可以翻译成并且) | 两边都是true,结果才是true(一假则假) |
| | 逻辑或(可以翻译成或者) | 有一边是true,结果就是true(一真则真) |
! | 逻辑非(取反) | !true = false,!false = true |
&& | 短路与 | 两边都是true,结果才是true(一假则假) |
|| | 短路或 | 有一边是true,结果就是true(一真则真) |
短路与(&&)和逻辑与(&)有什么区别?
首先这两个运算符的运算结果没有任何区别,完全相同。
只不过“短路与(&&)”会发生短路现象。
int x = 2;
int y = 3;
System.out.println(x > y & x > y++);//结果为false
//通过这个测试得出:'x > y++'这个表达式执行了
System.out.println(y);//此时y = 4
//测试短路与(&&)
int p = 5;
int q = 6;
//使用短路与(&&)的时候,当左边的表达式为false,右边的表达式不执行
//这种情况称之为短路。
System.out.println(p > q && p > q++);
System.out.println(q);//此时q=6;
什么是短路现象?
右边表达式不执行,这种现象叫做短路现象。
什么时候使用&&,什么时候使用&?
从效率方面来说,&&比&的效率高效一些。
因为逻辑与(&)不断第一个表达式结果是什么,第二个表达式一定会执行。
在以后的开发中,短路与(&&)和逻辑与还是需要同时并存的。
大部分情况下都建议使用短路与(&&)只要当吉需要左边表达式执行,又需要右边表达式执行的时候才会选择逻辑与(&)。
段落或(||)和逻辑或(|)同短路与(&&)和逻辑与(&)一个道理。
三元运算符
格式
关系表达式 ? 表达式1 : 表达式2;
解释:关系表达式就是判断的条件语句,判断的结果为boolean类型,结果为true则执行表达式1,结果为false则执行表达式2.
int a = 2;
int b = 3;
int c = a > b ? a : b;//判断a > b的真假,如果为真,就取a,如果为假,就取b
//结果为:c=3,因为a > b是假,所以c=b
小拓展
转义字符
转义字符:通过“\”来转变后面字母或者符号的含义。
“\n”:换行。
“\b”:退格。相当于backspace键。
“\r”:按下回车键。
“\t”:制表符。相当于tab键。
instanceof运算符
instanceof运算符是二目运算符,左边的操作元是一个对象,右边是一个类。当左边的对象是右边的类或子类创建的对象时,该运算符运算的结果是true,否则是false。