所谓运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。
| 算术运算符 |
|---|
| 赋值运算符 |
| 比较运算符 |
| 逻辑运算符 |
| 条件运算符 |
Java中的算术运算符就是用来处理四则运算的符号。
也是最简单和最常用的运算符号。
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| + | 正号 | +3 | 3 |
| - | 负号 | b=4;-b; | -4 |
| + | 加 | 5+5 | 10 |
| - | 减 | 6-4 | 2 |
| * | 乘 | 3*4 | 12 |
| / | 除(即算数中整除的结果) | 7/5 | 1 |
| % | 取模(即算术中的求余数) | 7%5 | 2 |
| ++ | 自增(前) | a=2;b=++a; | a=3;b=3; |
| ++ | 自增(后) | a=2;b=a++; | a=3;b=2; |
| -- | 自减(前) | a=2;b=--a; | a=1;b=1; |
| -- | 自减(后) | a=2;b=a--; | a=1;b=2; |
注意:
在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。
在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数;如果除法运算有小数参与,得到的结果会是一个小数。
在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
2赋值运算符赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。
它将运算符右边的值赋给左边的变量。
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| = | 赋值 | a=3;b=2; | a=3;b=2; |
| += | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
| -= | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
| *= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
| /= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
| %= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
在使用+=、-=、*=、/=、%= 赋值运算符时,需要进行的强制类型转换会自动完成,程序不需要做任何显式地声明
public class Example05 {
public static void main(String[] args) {
short s = 3;
int i = 5;
s += i;
System.out.println("s = " + s);
}
}
注意:
在Java中可以通过一条赋值语句对多个变量进行赋值。
在赋值运算符中,除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。其余的-=、*=、/=、%=赋值运算符都可依此类推。
3 比较运算符用来对两个数值或变量进行比较。
其结果是布尔类型的true或false。
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| == | 相等于 | 4 == 3 | false |
| != | 不等于 | 4 != 3 | true |
| < | 小于 | 4 < 3 | false |
| > | 大于 | 4 > 3 | true |
| <= | 小于等于 | 4 <= 3 | false |
| >= | 大于等于 | 4 >= 3 | true |
是用于对布尔类型的值或表达式进行操逻辑判断的符号。
其返回值类型是布尔类型。
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| & | 与 | a & b | a和b都为true,结果为true,否则为false |
| | | 或 | a | b | a和b中只要有一个为true,则结果为true,否则为false |
| ^ | 异或 | A ^ b | a与b不同,结果为true,否则为false |
| ! | 非 | ! A | 若a为false,结果为true,否则相反 |
| && | 短路与 | a && b | a和b都为true,结果为true,否则为false |
| || | 短路或 | a || b | a和b中只要有一个为true,则结果为true,否则为false |
注意:
逻辑运算符可以针对结果为布尔值的表达式进行逻辑运算。如:5 > 3 && 1 != 0的结果为true。
运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。
“&”和“&&”的区别:在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用&&进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。
运算符“|”和“||”都表示或操作,当运算符任何一边的操作数或表达式为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。
运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。
5 条件运算符也称作三元运算符(或三目运算符),由符号“? :”组合构成。
对布尔类型的表达式判断,如果为true,就执行冒号“:”前面的表达式,否者执行后面的表达式。
格式:
(boolean_expr) ? true_statement : false_statement;
规则:先判断boolean_expr的值,如果为true,就执行表达式true_statement,否者执行表达式false_statement
例如:
int store = 5; System.out.println(store <=0 ? "没有库存啦!" : "库存量为:"+store); // 输出结果为 “库存量为:5”6 运算符的优先级
指的是在表达式中各个运算符参与运算的先后顺序
例如:先乘除,后加减
| 优先级 | 运算符 |
|---|---|
| 1 | . [] () |
| 2 | ++ -- ~ ! |
| 3 | * / % |
| 4 | + - |
| 5 | << >> >>> |
| 6 | < > <= >= |
| 7 | == != |
| 8 | & |
| 9 | ^ |
| 10 | | |
| 11 | && |
| 12 | || |
| 13 | ?: |
| 14 | = *= /= %= += -= <<= >>= >>>= &= ^= |= |
在实际生活中经常需要作出一些判断,比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。Java中有一种特殊的语句叫做选择结构语句,它也需要对一些条件作出判断,从而决定执行哪一段代码。
Java中的选择结构语句分为:if条件语句和switch条件语句
1 if条件语句if条件语句的分类:
(1)if语句
格式:
if(判断条件){
满足条件执行的代码
}
执行流程:
例如:
如果一个人的年龄不满18周岁,那么就可以判定这个人是未成年人
int age = 20;
if(age<18){
System.out.println("此人是未成年人!");
}
(2)if...else语句
格式:
if (判断条件){
执行语句1
...
}else{
执行语句2
...
}
执行流程:
例如:
int age = 16;//定义变量age,保存年龄
if(age>=18){//年龄大于等于18-->代码
//条件成立
System.out.println("恭喜你,被录用了");
}else{
//条件不成立
System.out.println("很遗憾,年龄不满足需求");
}
注意:
if...else语句还可以与前面学习的条件运算符“?:”进行替换。
System.out.println(num % 2 == 0 ? num+"是一个偶数" :num+"是一个奇数" );(3)if...else if...else语句
格式:
if (判断条件1) {
执行语句1
} else if (判断条件2) {
执行语句2
}
...
else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}
执行流程:
例如:
int num = 100;
//根据数字输出对应的星期
if(num==1){
System.out.println("星期一");
}else if(num==2){
System.out.println("星期二");
}else if(num==3){
System.out.println("星期三");
}else if(num==4){
System.out.println("星期四");
}else if(num==5){
System.out.println("星期五");
}else if(num==6){
System.out.println("星期六");
}else if(num==7){
System.out.println("星期天");
}else{
System.out.println("无效的星期");
}
##



