Java - 运算符,含if的选择结构
第三章 运算符
3.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 |
2)案例演示
//算术运算符的使用
public class AirthmeticOperator {
//编写一个main方法
public static void main(String[] args) {
int num1 = 12;
int num2 = 14;
//1. () 的优先级最高
System.out.println("num1/(num2-num1)=" + num1 / (num2 - num1));
//2. /的优先级比+要大
System.out.println("num1+num2/num1=" + (num1 + num2 / num1)); //13,把()去除结果就变成121
//自增自减
//++a,a++单独出现都为 a = a + 1
int a = 3;
// ++a;
// System.out.println("a =" + a); //a=4
a++;
System.out.println("a =" + a); //a=4
int flag = 1;
flag++; //2
System.out.println("flag : " + flag); //2
++flag; //3
System.out.println("flag : " + flag); //3
flag--; //2
//(flag++)即为
//int d = flag++;
//System.out.println("flag++ :" + d);
System.out.println("flag++ : " + (flag++)); //2
--flag;
System.out.println("++flag : " + (++flag)); //3
}
}
3)注意
- 如果想要优先进行运算,可以考虑添加 ()号
- 运算结果的数据类型会取参与运算的数据中最大的数据类型
- 结果输出时注意 + 号和()号的使用,不然输出的可能是拼接的而不是运算结果,此时需要用 () 将运算表达式包裹
4)练习
从键盘输入一个5位数,拆分每一位并打印
//练习
import java.util.Scanner;
public class Practice01 {
//编写一个main方法
public static void main(String[] args) {
//从键盘输入一个5位数,拆分每一位并打印
System.out.println("请输入一个5位数:");
Scanner scanner = new Scanner(System.in);
//定义一个变量保存这个5位数
int number = scanner.nextInt();
//拆分这个5位数
//万位
int a,b,c,d,e;
a = number / 10000;
b = number / 1000 % 10;
c = number / 100 % 10;
d = number / 10 % 10;
e = number % 10;
//System.out.println(a + ',' + b + ',' + c + ',' + d + ',' + e);
//单引号是字符,这里变成了','对应的unicode值参与运算
System.out.println("拆分后变成:");
System.out.println(a + "," + b + "," + c + "," + d + "," + e);
}
}
3.2、赋值运算符
1)简单赋值运算
把 = 号右边的值/表达式,赋值给左边的变量
int num = 1;
2)复合赋值运算
*运算符* | *运算规则* | *范例* | *结果* |
---|---|---|---|
= | 赋值 | 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 |
3)案例演示
//赋值运算符的使用
public class AssigningOperator {
//编写一个main方法
public static void main(String[] args) {
//复合赋值运算
int a = 10;
a %= 9;
System.out.println("a = " + a);
}
}
3.3、比较运算符
1)介绍
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
2)运算规则
*运算符* | *运算规则* | *范例* | *结果* |
---|---|---|---|
== | 相等于 | 4==3 | False |
!= | 不等于 | 4!=3 | True |
< | 小于 | 4<3 | False |
> | 大于 | 4>3 | True |
<= | 小于等于 | 4<=3 | False |
>= | 大于等于 | 4>=3 | True |
3)案例演示
import java.util.Scanner;
public class Practice02 {
//编写一个main方法
public static void main(String[] args) {
//键盘录入两个数据比较是否相等
//引导输入数字
System.out.println("请输入第一个数字");
Scanner input = new Scanner(System.in);
double num1 = input.nextDouble();
System.out.println("请输入第二个数字");
double num2 = input.nextDouble();
boolean flag = (num1 == num2);
System.out.println("flag = " + flag);
}
}
3.4、逻辑运算符
1)介绍
逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false
作用:用来连接两个运算
例如:既要比较年龄,也要比较身高,等等。
2)运算规则
运算符 | 运算规则 | 范例 | 结果 | 简记 |
---|---|---|---|---|
! | 非,取反 | !true | Flase | 是真则假 |
&& | 短路与 | false&&true | False | 有假则假 |
|| | 短路或 | false||true | True | 有真则真 |
3)短路与&&和逻辑与&的区别
&&短路与:如果第一个条件为 false ,则第二个条件不会判断,最终结果为 false ,效率高
一般使用的都是短路与&&,效率高
短路或|| 和 逻辑或| 的区别
||短路或:如果第一个条件为 true ,则第二个条件不会判断,最终结果为 true ,效率高
一般使用||
4)案例演示
//逻辑运算符的使用
public class LogicalOperator {
//编写一个main方法
public static void main(String[] args) {
//逻辑运算符
//短路与
System.out.println(19 >= 17 && 18 <= 54); //true
System.out.println(25 >= 15 && 10 >= 20); //false
//短路或
System.out.println(19 >= 17 || 18 <= 54); //true
System.out.println(25 >= 15 || 10 >= 20); //true
System.out.println(10 >= 20 || 20 <= 10); //false
//取反
System.out.println(!false); //true
System.out.println("-----------------");
// && 和 & 的区别
// &&:如果第一个条件为 false ,则第二个条件不会判断,最终结果为 false ,效率高
int a = 10;
System.out.println(11 == 12 && ++a >= 12);
System.out.println("a = " + a); //10
int b = 10;
System.out.println(11 == 12 & ++b >= 12);
System.out.println("b = " + b); //11
}
}
3.5、三元运算符
1)介绍
条件表达式?表达式1:表达式2;
- 如果条件表达式为true,运算后的结果是表达式1;
- 如果条件表达式为false,运算后的结果是表达式2;
2)案例演示
import java.util.Scanner;
//三元运算符的使用
public class TernaryOperator {
//编写一个main方法
public static void main(String[] args) {
//三元运算符
//键盘录入两个数据获取最大值
Scanner input = new Scanner(System.in);
//引导输入两个数字
System.out.println("请输入第一个数字:");
int num1 = input.nextInt();
System.out.println("请输入第二个数字:");
int num2 = input.nextInt();
//三元运算符
System.out.println(num1 > num2 ? "最大值是" + num1 : "最大值是" + num2);
}
}
3.6、运算符的优先级
第四章 流程控制
4.1、顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
总的来说:写在前面的先执行,写在后面的后执行
4.2、选择结构
a. if 结构
一定会进行条件判断(布尔类型),如果满足条件,执行代码,如果不满足条件,就不执行代码,程序继续向后执行
注意:如果 if 或者 else 中,只有一条执行语句,那么可以不写 {} 号;
简单的 if...else 语句可以用三元运算符代替。
语法
if(判断条件) {
执行语句;
}
流程图
演示
int age = 18;
if(age >= 18) {
System.out.println("恭喜你,成年了");
}
System.out.println("程序继续执行");
b. if...else 结构
如果满足某种条件,就进行某种处理,否则就进行另一种处理。
语法
if(判断条件) {
执行语句1;
} else {
执行语句2;
}
流程图
案例
int age = 18;
if(age >= 18) {
System.out.println("恭喜你,成年了");
} else {
System.out.println("真可惜,你还没成年");
}
System.out.println("程序继续执行");
c. 多重if...else if...else 语句
可以有多个选择,但只能选择一个
语法
if(判断条件1) {
执行语句1;
} else if(判断条件2) {
执行语句2;
} else if(判断条件3) {
执行语句3;
......
} else if(判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
流程图
案例
import java.util.Scanner;
public class Practice04 {
//编写一个main方法
public static void main(String[] args) {
//从键盘录入一个成绩进行判断,根据要求打印
//成绩在[0,60)打印该成绩为差
//成绩在[60,70)打印该成绩为中
//成绩在[70,80)打印该成绩为良
//成绩在[80,100]打印该成绩为优
//不满足条件,提示“成绩输入错误”
System.out.println("请输入成绩:");
Scanner input = new Scanner(System.in);
int score = input.nextInt();
//判断
if (score >= 80 && score <= 100) {
System.out.println("优");
} else if (score >= 70) {
System.out.println("良");
} else if (score >= 60) {
System.out.println("中");
} else if (score <60 && score >=0){
System.out.println("差");
} else {
System.out.println("成绩输入错误");
}
}
}
d. 嵌套 if...else 语句
选择条件是层级递进的,这样的结构叫嵌套结构
语法
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
流程图
案例
public class Practice05 {
//编写一个main方法
public static void main(String[] args) {
//案例:学校要举办选美大赛:
/*报名条件:
1、只能是女生,否则提示男士勿扰
2、只能是年龄大于18岁,否则提示年龄不够
3、身高大于一米六,否则提示身高不够
4、如果条件都满足,就提示“欢迎进入海选!”
*/
char sex = '女';
int age = 20;
double height = 1.67;
//判断
if(sex == '女') {
//进入下一层的判断
if(age >= 18) {
//进入下一层的判断
if(height >=1.6) {
System.out.println("欢迎进入海选!");
} else {
System.out.println("身高不够");
}
} else {
System.out.println("年龄不够");
}
} else {
System.out.println("男士勿扰");
}
}
}
本文来自博客园,作者:Thecong,转载请注明原文链接:https://www.cnblogs.com/hwphwc/p/16448522.html