一、算数运算符
1.1 运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。
算术运算符最常见的操作就是将操作数参与数学计算,具体使用看下图:
运算符
运算规则
范例
结果
+
正号
+3
3
+
加
2+3
5
+
连接字符串
“中”+“国”
“中国”
-
负号
int a=3;-a
-3
-
减
3-1
2
*
乘
2*3
6
/
除
5/2
2
%
取模
5/2
1
++
自增
int a=1;a++/++a
2
--
自减
int b=3;a--/--a
2
1.2 我们在使用算术运算符时,记得要注意下列事项:
1) 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
2) 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
3) “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
4) 整数做被除数,0不能做除数,否则报错。
二、算数运算符++、--的使用
2.1 ++运算符,会在原有值的基础上自增1;--运算符,会在原有值的基础上自减1。
1)看一段代码:
int a = 3;int b = 3;
a++;
b--;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为2;
这说明a的原有值发生了改变,在原有值的基础上自增1;b的原有值也发生了改变,在原有值的基础上自减1;
2)再来看一段代码:
int a = 3;int b = 3;++a;--b;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为2;
这说明++,--运算符单独使用,不参与运算操作时,运算符前后位置导致的运算结果是一致的。
3)接下来,介绍下++,--运算符参与运算操作时,发生了怎样的变化,我们来看一段代码:
int a = 3;intb;
b= a++ + 10;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为13;
++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
4)再介绍下++,--运算符前置时,参与运算操作的变化,我们来看一段代码:
int a = 3;intb;
b= ++a + 10;
System.out.println(a);
System.out.println(b);
上面代码的输出结果a值为4,b值为14;
++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。
三、赋值运算符
3.1 赋值运算符就是为变量赋值的符号,赋值运算符的使用看下图:
运算符
运算规则
范例
结果
=
赋值
int a=2
2
+=
加后赋值
int a=2,a+=2
4
-=
减后赋值
int a=2,a-=2
0
*=
乘后赋值
int a=2,a*=2
4
/=
整除后赋值
int a=2,a/=2
1
%=
取模后赋值
int a=2,a%=2
0
四、比较运算符
4.1 比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
运算符
运算规则
范例
结果
==
相等于
4==3
False
!=
不等于
4!=3
True
<
小于
4<3
False
>
大于
4>3
True
<=
小于等于
4<=3
False
>=
大于等于
4>=3
True
五、逻辑运算符
5.1 逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。
运算符
运算规则
范例
结果
&
与
false&true
False
|
或
false|true
True
^
异或
true^flase
True
!
非
!true
Flase
&&
短路与
false&&true
False
||
短路或
false||true
True
看完图后,我们来看一下逻辑运算符的常规使用方式:
l逻辑运算符通常连接两个其他表达式计算后的布尔值结果
l当使用短路与或者短路或时,只要能判断出结果则后边的部分就不再判断。
我们通过代码演示一下:
boolean b = 100>10;boolean b2 = false;
System.out.println(b&&b2); //打印结果为 false
System.out.println(b||b2); //打印结果为 true
System.out.println(!b2); //打印结果为 true
System.out.println(b && 100>10); //打印结果为 true,本行结果的计算方式稍后讲解运算符优先级时解答
好了,我们来总结一下运算符的结果规律吧:
l短路与&&:参与运算的两边数据,有false,则运算结果为false;
l短路或||:参与运算的两边数据,有true,则运算结果为true;
l逻辑非! :参与运算的数据,原先是true则变成false,原先是false则变成true。
六、三元运算符
l格式:
(条件表达式)?表达式1:表达式2;
l表达式:通俗的说,即通过使用运算符将操作数联系起来的式子,例如:
n3+2,使用算数运算符将操作数联系起来,这种情况,我们称为算数表达式。
n3>2,使用比较运算符(也称为条件运算符)将操作数联系起来,这种情况,我们称为条件表达式。
n其他表达式,不再一一举例。
l三元运算符运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。
通过代码演示,我们来学习下三元运算符的使用:
方式一:
System.out.println(3>2 ?“正确” : “错误” );//三元运算符运算后的结果为true,运算结果为表达式1的值“正确”,然后将结果“正确”,在控制台输出打印
方式二:int a = 3;int b = 4;
String result= (a==b) ?“相等” : “不相等”;//三元运算符运算后的结果为false,运算结果为表达式2的值“不相等”,然后将结果赋值给了变量result
方式三:int n = (3>2 && 4>6) ? 100 : 200;//三元运算符运算后的结果为false,运算结果为表达式2的值200,然后将结果200赋值给了变量n
七、运算符优先级
7.1 下图是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)
优先级
描述
运算符
1
括号
()、[]
2
正负号
+、-
3
自增自减,非
++、--、!
4
乘除,取余
*、/、%
5
加减
+、-
6
移位运算
<>、>>>
7
大小关系
>、>=、
8
相等关系
==、!=
9
按位与
&
10
按位异或
^
11
按位或
|
12
逻辑与
&&
13
逻辑或
||
14
条件运算
?:
15
赋值运算
=、+=、-=、*=、/=、%=
16
位赋值运算
&=、|=、<<=、>>=、>>>=
接下来,我们看一个比较复杂的代码:
int a = 5;int b = 3;int c = 1;int n2 = (a>b && b>c) ? (c++) : (++c);
这段代码运算执行顺序我们也写一下:
l1.小括号优先级高,我们先运算第一组小括号中的代码
l1.1.比较运算符”>”优先级大于 逻辑运算符”&&”
n先执行a>b,得到结果true;
n再执行b>c,得到结果true;
n最后执行a>b的结果&& b>c的结果,即true && true,结果为true
l2.三元运算符中的条件判断结果为true,返回表达式1的结果c++
n先将变量c的原有值赋值给变量n2,即n2值为1;
n再将变量c的值自增1,更新为2。