欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习Java的第三天: 运算符,分支结构和循环结构

程序员文章站 2022-06-26 08:02:24
...

运算符,分支结构和循环结构

1. 运算符

1.1 自增自减运算符
【注意】
	自增自减运算符有且只能操作变量。

++:操作的变量自增 1
	变量前: 先执行自增语句,再来参与当前代码行运行
	变量后: 先执行当前代码行运行,再执行自增语句

--:操作的变量自减 1
	变量前: 先执行自减语句,再来参与当前代码行运行
	变量后: 先执行当前代码行运行,再执行自减语句

【开发建议】
	1. 非要使用自增长运算符,建议单独成行。
	2. 使用 += 1 和 -= 1 替换自增自减运算符
1.1.1自增自减运算符面试题
1. 
	int num = 5;
	int ret = num++ * num;
	
	num = ?;    6
	ret = ?;    30

2.
	int num = 10;
	++(num++);
	num = ?; 	编译报错
	(num++)首先执行,但是小括号里面的内容对外是一个整体,也就是一个常量!!!
	自增自减运算符【不能操作常量】
1.2 逻辑运算符
&&
	保险柜的门,顾客一把钥匙,管理员一把钥匙,缺一不可
	同真为真,有假【即】假
||
	自己家门,任何一个人带有钥匙,都可以开门
	有真【即】真,同假为假
!   非
	取反
1.2.1逻辑运算符的断路原则问题
class Demo4 {
	public static void main(String[] args) {
		int num = 10;
		boolean ret = 4 < 3 && num++ > 10;
		/*
		逻辑与断路原则问题
			逻辑与同真为真,有假【即】假。
			逻辑与表达式中如果出现了任何一个false条件,
			从false条件开始,之后的表达式不再运行,因为
			整个逻辑与表达式的结果已经确定为false。为了
			简化计算机的运算逻辑复杂度!!!
		*/
		System.out.println("ret : " + ret);
		System.out.println("num : " + num);
		
		int num1 = 20;
		boolean ret1 = 10 > 5 || ++num1 < 30;
		/*
		逻辑或断路原则问题
			逻辑或有真【即】真,同假为假
			逻辑或表达式中如果出现了一个true条件,之后的
			表达式就不再运行,因为整个逻辑或的结果已经确定
			为true,这样做是为了简化计算机运算逻辑复杂度
		*/
		System.out.println("ret1 : " + ret1);
		System.out.println("num1 : " + num1);
	} 
}

2. 分支结构

2.1 开发中常见的结构
顺序结构
	代码从上之下,从左至右执行!!!
分支结构
	条件判断,条件满足执行对应代码
循环结构
	在程序中重复执行功能代码
2.2 if
2.2.1 if分支
if (/* 条件判断 true or false */) {
    // 条件结果为true执行大括号以内的语句
}
/*
执行流程:
	代码运行到if分支结构,首先判断if之后的条件是否为true,如果为true,执行大括号里面的语句,如果为false直接执行大括号之外的语句,
*/
class Demo5 {
	public static void main(String[] args) {
		int money = 10;
		
		if (money > 2000000) {
			System.out.println("郑州一套房!!!");
		}
		
		System.out.println("你怕不是在做梦!!!");
	}
}
2.2.2 if - else分支
if (/* 条件判断 true or false */) {
    // true语句体
} else {
    // false语句体
}
/*
执行流程:
	代码运行到if-else结构时,首先判断if之后的条件是否为true,如果为true,执行if之后大括号内容,true语句体,如果为false,执行else大括号内容,false语句体
*/
class Demo6 {
	public static void main(String[] args) {
		int money = 20;
		
		if (money > 50) {
			System.out.println("老板,要一份大盘鸡,微辣");
		} else {
			System.out.println("吃砖头去吧!!!");
		}
	}
}
2.2.3 if - else if结构
if (/* 条件匹配1 */) {
    // 处理方式1
} else if (/* 条件匹配2 */) {
    // 处理方式2
} else if (/* 条件匹配3 */) {
    // 处理方式3
} else {
    // 没有任何条件满足下的处理方式
}
/*
执行流程:
	代码运行到if-else if结构时,匹配if之后的条件,找到匹配项,执行对应的处理方式,如果没有任何一个条件匹配,执行else里面的语句。
	
成绩等级划分:
	90 ~ 100 天秀
	80 ~ 90 地秀
	70 ~ 80 还中
	60 ~ 70 点正
	60 以下
		准备挨打!!!
*/
class Demo7 {
	public static void main(String[] args) {
		int score = 59;
		
		if (score >= 90) {
			System.out.println("天秀");
		} else if (score >= 80) {
			System.out.println("地秀");
		} else if (score >= 70) {
			System.out.println("还中");
		} else if (score >= 60) {
			System.out.println("点正");
		} else {
			System.out.println("准备挨打!!!");
		}
	}
}

【补充知识点 从键盘上获取用户输入的数据】

1. 【导包】
在class之前复制粘贴
import java.util.Scanner;

2. 创建一个Scanner的变量
Scanner sc = new Scanner(System.in);

3. 使用Scanner的方法从键盘上获取数据
获取int类型数据
	int类型变量 = sc.nextInt();
获取float类型数据
	float类型变量 = sc.nextFloat();
获取char类型数据
	char类型变量 = sc.nextLine().charAt(0);

【补充知识点 用户体验问题】

在代码运行过程中需要给予用户更好的体验!!!是非常友好的体验。

【补充知识点 用户输入数据合法性判断】

在实际代码运行过程中,用户提供的数据很有可能是非法情况。这是需要在满足用户基本需求的情况下,同时满足代码的正常运行!!!
增强代码的健壮性,稳定性
2.3 switch case
switch (变量) {
    case 常量1:
        处理方式1;
        break;
    case 常量2:
        处理方式2;
        break;
    case 常量3:
        处理方式3;
        break;
    default:
        没有匹配任何case之后的处理方式
        break;
}
/*
执行流程:
	代码运行到switch case结构,使用switch之后小括号里面的变量,去匹配case之后的常量,如果有匹配项,执行对应的处理方式,如果没有匹配项执行default里面的处理方式。
	
特征:
	1. 在switch - case 结构中,能够使用的代码有且只能是case 到 break 或者 大括号之间,还有就是default之后的的语句
	2. break可以省略,对应case执行是会继续执行到下一个break或者switch大括号停止
	3. 在switch case结构中,不能出现相同case选项,case之后的选择是唯一的。
	4. 在switch case结构中,可以出现并列选项
		case 3:
		case 4:
		case 5:
	5. default可以省略,需要根据实际的开发需求而定。
*/

3. 循环结构

3.1 为什么是用循环结构
代码中一定会出现多次使用的代码块,而代码中重复使用 如果仅仅是依赖于CV大法,那么会导致以下问题出现
	1. 代码冗余
	2. 代码阅读性极差
	3. 代码维护性极差【亲,请给自己留个活路,不要作死!!】
3.2 while循环结构
while (/* 循环条件 true or false */) {
    // 循环体
    // (循环条件变更)
}