Java运算符
一、主要内容
-
表达式
- 表达式由运算符和操作数组成
- 如:5,num1,num1+num2,sum = num1 + num2
- 单独一个整型常量或者字符常量,是一个表达式;
- 单独一个变量,也算是一个表达式;
- sum = num1 + num2,这里的 + 号和 = 号是运算符,num1、num2 是操作数。
-
运算符
注意:运算符必须在英文输入法状态下输入;
-
算术运算符:如 (加)+、(减)-、(乘)×、(除)÷、(模、取余)%、(自增)++、(自减)--
9算术运算符.png
public class MathDemo {
public static void main(String[] args) {
int num1=10,num2=5;
int result;//存放结果
//加法
result = num1+num2;
System.out.println(num1+"+"+num2+"="+result);
//减法
result = num1-num2;
System.out.println(num1+"-"+num2+"="+result);
//乘法
result = num1*num2;
System.out.println(num1+"*"+num2+"="+result);
//除法
result = num1/num2;
System.out.println(num1+"/"+num2+"="+result);
//分子分母都是整型时,结果为整除后的结果
System.out.println(13/5);
System.out.println("13.0/5="+13.0/5);
//求余数
result=13%num2;
System.out.println("13.0%5="+result);
System.out.println("13.5%5="+(13.5%5));
}
}
运行结果如下:
10+5=15
10-5=5
10*5=50
10/5=2
2
13.0/5=2.6
13.0%5=3
13.5%5=3.5
-
自增自减运算符:如 ++、--
8自增自减运算符.png
public class MathDemo1 { public static void main(String[] args) { //x++ 的形式 int x = 4; int y = (x++)+5; System.out.println("x="+x+",y="+y); //++x 的形式 x=4; y=(++x)+5; System.out.println("x="+x+",y="+y); //x-- 的形式 x=4; y=(x--)+5; System.out.println("x="+x+",y="+y); //--x 的形式 x=4; y=(--x)+5; System.out.println("x="+x+",y="+y); } }
运行结果如下:
x=5,y=9
x=5,y=10
x=3,y=9
x=3,y=8
单目运算符:只对一个操作数进行操作的运算符,即是单目运算符。如自增(++)、自减(--);
双目运算符:对两个操作数进行操作的运算符,即是双目运算符。如(加)+、(减)-、(乘)×、(除)÷、(模、取余)%。 -
赋值运算符:如 (等于)=
- 格式:变量 = 表达式;
- 例:int n = 3;//将3赋值给变量n
- 注意:
- 赋值运算符是从右往左运算!
- 赋值运算符的左边不能是常量!
-
复合赋值运算符:如 (加等于)+=、(减等于)-=、(乘等于)×=、(除等于)/=、(模等于)%=
7复合赋值运算符.png
-
关系运算符:如 (小于)<、(大于)>、(小于等于)<=、(大于等于)>=、(不等于)!=、(等于)==
-
也叫比较运算符,用于判断两个数据的大小,如大于
-
比较的结果是一个布尔值
-
关系运算符主要用于条件和循环语句中的判断条件
10关系运算符.png
-
例:
-
'A' > 'B' 结果为 false,比较的是两个字符的 ASCII 值;
-
5 != 6 结果为 true,比较两个数值是否相等;
-
true == false 结果为 false,两个布尔值不相等;
-
float f = 5.0f; long l = 5; f == l; 结果为 true,浮点数与整数进行比较,只要值相等就返回 true.
public class RelateDemo { public static void main(String[] args) { int a = 3,b = 5; System.out.println("a < b 是 " + (a < b)); System.out.println("a > b 是 " + (a > b)); System.out.println("a >= b 是 " + (a >= b)); System.out.println("a <= b 是 " + (a <= b)); } }
运行结果如下:
a < b 是 true
a > b 是 false
a >= b 是 false
a <= b 是 true
应用场景:用于判断条件。条件结构就是根据不同的条件去执行不同的操作。
如:成绩 > 60 分 --> 及格,成绩 < 60 分 --> 不及格;
简单 if 语句的格式:if(条件) { <语句块> }
if-else 语句的格式:
if(条件) { <语句块1> }else { <语句块2> }
- if(条件) 后面的语句块如果只有一条语句,则包裹语句块的花括号可以省略;
- 当 if (条件)判断结果为 true 的时候,程序执行语句块1;否则,执行语句块2;
- 例:商场打折,如果两件商品的总价大于100则减20,并把原价和折后价格分别输出。
public class ConditionDemo1 { public static void main(String[] args) { //例:商场打折,如果两件商品的总价大于100则减20,并把原价和折后价格分别输出。 //定义两个变量,分别存放两件衣服的价格 double price1,price2; price1 = 80; price2 = 55; //计算两件商品的总价格 double sum = price1 + price2; double result = 0; if (sum > 100) { result = sum - 20; }else { result = sum; } System.out.println("原价是"+ sum+",折后价格是"+result); } }
运行结果:
原价是135.0,折后价格是115.0
例:判断一个整数是奇数还是偶数,并将结果打印输出。
public class ConditionDemo2 { public static void main(String[] args) { //判断一个整数是奇数还是偶数,并将结果打印输出。 //定义一个变量存放数据 int n = 10; if(n % 2 == 0) { System.out.println(n+"是偶数!"); }else { System.out.println(n+"是奇数!"); } } }
运行结果如下:
10是偶数!
优化上面的例子,将原来写死 n 的值优化成接收从键盘输入的值。代码如下:
import java.util.Scanner; public class ConditionDemo2 { public static void main(String[] args) { //判断一个整数是奇数还是偶数,并将结果打印输出。 //定义一个变量存放数据 // int n = 11; //从键盘接收数据 System.out.print("请输入一个整数:"); Scanner s = new Scanner(System.in); int n = s.nextInt(); if(n % 2 == 0) { System.out.println(n+"是偶数!"); }else { System.out.println(n+"是奇数!"); } } }
运行结果如下:
请输入一个整数:10
10是偶数!
-
-
逻辑运算符:如 &(与、逻辑与)、|(或、逻辑或)、!(非)、&&(逻辑与、短路与)、||(逻辑或、短路或)
- 逻辑运算符用来连接一个或多个条件,判断这件条件是否成立;
- 逻辑运算符的结果是布尔类型
-
& “与”运算符:
-
多个操作数的布尔值,只要有一个为false,则整体结果为false。只有所有操作数的布尔值同时为 true,结果才为 true。
-
栗子:升学考试,英语、数学、C语言三门总成绩大于等于230,并且英语成绩大于等于60,才能升学。
- 三门总成绩大于等于230,表示为:sum >= 230;
-
英语成绩大于等于 60,表示为 en >= 60.
11逻辑“与”运算符.png
ps: &运算符与&&运算符的区别
-
例子1:
- int n =3;
- boolean b = (3>7) &((n++)<2) 问:b = ?, n = ?
- b = false,n = 4;
-
例子2 :
- int n =3;
- boolean b = (3>7) && ((n++)<2) 问:b = ?, n = ?
- b = false,n = 3;
-
结论:&&运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了。
- | 逻辑“或”运算符
- 多个操作数的布尔值,只要有一个为 true,则整体结果为 true。只有所有操作数的布尔值同时为 false,结果才为 false。
- ps: | 运算符与 || 运算符的区别
- 例子1:
- int n = 3;
- boolean b = (3<7)|((n++)<2) 问:b =? ,n = ?
- b = true, n = 4
- 例子2:
- int n = 3;
- boolean b = (3<7)||((n++)<2) 问:b =? ,n = ?
- b = true, n = 3
- 结论:|| 运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算了。
-
! 逻辑“非”运算符
-
对原条件进行取反
-
例:!(3<5),结果为 false
-
栗子:输入一个数,判断是否能被3整除,并输出相应的提示信息。
public class ConditionDemo3 { public static void main(String[] args) { System.out.print("请输入一个整数:"); //输入一个数,判断是否能被3整除,并输出相应的提示信息。 Scanner scanner = new Scanner(System.in); int inputNum = scanner.nextInt(); if (!(inputNum % 3 == 0)) { System.out.println(inputNum+"不能被3整除"); }else { System.out.println(inputNum+"能被3整除"); } } }
运算结果如下:
请输入一个整数:9
9能被3整除
-
条件运算符
- 如 (三目运算符) 格式:布尔表达式?表达式1 : 表达式2
- 当布尔表达式的值为 true,则返回表达式1的值;否则返回表达式2的值。
public class ConditionDemo { public static void main(String[] args) { int a = 4,b = 7; //求 a 和 b 的最大值 int max; // if(a > b) { // max = a; // }else { // max = b; // } max = a > b ? a : b; System.out.println(a +"和" + b + "的最大值是"+max); } }
运行结果如下:
4和7的最大值是7
- 如 (三目运算符) 格式:布尔表达式?表达式1 : 表达式2
-
位运算符:如 (左移)<<、(右移)>>
-
运算符的优先级
12运算符的优先级.png
(1)如上图,箭头方向从上到下优先级依次递减,括号()优先级最高,赋值运算符的优先级最低。
(2)相同优先级的(如*,/,%),代码执行顺序从左往右。
(3)平时编写代码时,尽量多加括号。 -
栗子:用if-else 语句判断输入的年份是否为闰年
public class ConditionDemo4 { public static void main(String[] args) { //用if-else 语句判断输入的年份是否为闰年 System.out.print("请输入年份:"); //闰年的判断规则: //(1)能被4整除但不能被100整除的年份,或者能被400整除的年份是闰年;否则是平年。 Scanner sc = new Scanner(System.in); int year = sc.nextInt(); if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { System.out.println(year + "是闰年"); }else { System.out.println(year + "是平年"); } } }
运行结果如下:
请输入年份:1995
1995是平年