运算符:
就是对常量或者变量进行操作的符号。
比如: + - * /
表达式:
用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。
比如:a + b 这个整体就是表达式。
而其中+是算术运算符的一种,所以这个表达式也称之为算术表达式。
2.算术运算符
分类:
+ - * / %
运算特点:
+ - * :跟小学数学中一模一样没有任何区别.
/: 1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。 2.小数直接参与运算,得到的结果有可能是不精确的。 案例: System.out.println( 10 / 3);//3 System.out.println(10.0 / 3);//3.3333333333333335
%:取模、取余。 这个也是除法运算,只不过获取的值是余数。 案例: System.out.println(10 % 2);//0 System.out.println(10 % 3);//1 应用场景: //可以利用取余来判断一个数是奇数还是偶数 System.out.println(15 % 2);//1 奇数
2.1自增自减运算符
分类:
++ 自增运算符 -- 自减运算符
++:就是把变量里面的值+1
--:就是把变量里面的值-1
使用方式:
-
放在变量的前面,我们叫做先++。 比如:++a
-
放在变量的后面,我们叫做后++。 比如:a++
案例:
//++
int a = 10;
a++;//就是让变量a里面的值 + 1
System.out.println(a);//11
++a;//就是让变量a里面的值 + 1
System.out.println(a);//12
3.赋值运算符
int x, y, z; // 定义3个整型的变量
x = y = z = 5; // 为变量赋初值为5
x += 10; // 等价于x = x + 10,结果x = 15
y -= 3; // 等价于y = y - 3,结果y = 2
z *= 5; // 等价于z = z * 5,结果z = 25
x /= 4; // 等价于x = x / 4,结果x = 3
z %= x; // 等价于z = z % x,结果z = 1
4.关系运算符
又叫比较运算符,其实就是拿着左边跟右边进行了比较判断而已。
分类:
符号 | 解释 |
---|---|
== | 判断左边跟右边是否相等,如果成立就是true,如果不成立就是false |
!= | 判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false |
> | 判断左边是否大于右边,如果成立就是true,如果不成立就是false |
>= | 判断左边是否大于等于右边,如果成立就是true,如果不成立就是false |
< | 判断左边是否小于右边,如果成立就是true,如果不成立就是false |
<= | 判断左边是否小于等于右边,如果成立就是true,如果不成立就是false |
5.逻辑运算符
运算符 | 用法 | 含义 | 说明 | 实例 | 结果 |
&& | a&&b | 短路 与 | a b全为true时,计算结果为true,否则为false | 2>1&&3<4 | true |
|| | a||b | 短路或 | a b全为false时,计算结果为false,否则为true | 2<1||3>4 | false |
! | !a | 逻辑非 | a为true时,值为false。a为false时,值为true | !(2>4) | true |
| | a|b | 逻辑或 | a b全为false时,计算结果为false,否则为true | 1>2|3>5 | false |
& | a&b | 逻辑与 | a b全为true时,计算结果为true,否则为false | 1<2&3<5 | true |
- && 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
- || 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
逻辑运算符的优先级为:!运算级别最高,&& 运算高于 || 运算。!运算符的优先级高于算术运算符, 而 && 和 || 运算则低于关系运算符。结合方向是:逻辑非(单目运算符)具有右结合性,逻辑与和逻辑或 (双目运算符)具有左结合性。
6.三元运算符
又叫做:三元表达式。
格式:
关系表达式 ? 表达式1 :表达式2 ;
计算规则:
-
计算关系表达式的值。
-
如果关系表达式的值为真,那么执行表达式1。
-
如果关系表达式的值为假,那么执行表达式2。
注意点:
三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。
案例
public class Demo{
public static void main(String[] args) {
//需求:求两个数的较大值
int a = 10;
int b = 20;
//格式:关系表达式 ? 表达式1 : 表达式2 ;
//注意点:
//三元运算符的最终结果一定要被使用。
//要么赋值给一个变量,要么直接输出。
int max = a > b ? a : b ;
System.out.println(max);
//也可以直接打印输出
System.out.println(a > b ? a : b);
}
}
7.运算符优先级
所有的数学运算都认为是从左向右运算的,Java 语言中大部分运算符也是从左向右结合的,只有单目运 算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也 就是从右向左运算。
乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响 结果。运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。
一般而言,单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算 符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。
Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级 高的先执行。