Java第三天:运算符和分支结构

运算符和分支结构

1. 运算符
1.1 自增自减运算符【逐渐淘汰】
自增自减运算符有且只能操作变量!!!

++:
	作用:操作的变量自增1 ==> += 1
--:
	作用:造作的变量自减1 ==> -= 1 

Swift Apple 已经淘汰自增自减运算符,完全使用 += 1 和 -= 1替换

自增自减运算符
	在变量前 首先执行自增自减操作,再来执行对应的语句
	在变量后 首先执行所在行语句,再来执行自增自减操作

【建议】
	1. 尽量使用 += 1 和 -= 1 替换对应的自增自减运算符
	2. 如果非要使用自增自减运算符,尽量单独成行,减少代码中的歧义,增强代码的阅读性
1.2 自增自减运算符不得不说的面试题
int num = 5;
int ret = num++ * ++num;

ret = ?; 35
num = ?; 7


int num = 10;
++(++num);
num = ?
语法错误
    小括号对外数据是一个整体,等价于小括号里面的内容是一个常量,自增自减运算符,不可以操作常量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YXelI7kt-1583647677342)(.\img\面试造航母,开发拧螺丝.png)]

1.3 逻辑运算符
与
	&&
	保险库的门
		顾客有一把钥匙,保管员有一把钥匙,双方同时到场才可以打开,缺一不可
	同真为真,有假【即】假
或
	||
	自己家门
		有一个人带有钥匙就可以开门
	有真【即】真,同假为假
非
	!
	强牛 犟
	取反,你说对,我就说错,你说错,我就说真,杠精!!!
1.4 逻辑运算符的断路原则问题
class Demo5 {
	public static void main(String[] args) {
		int num = 5;
		boolean ret = num >= 10 && num++ < 10;
		/*
		逻辑与断路原则:
			逻辑与中同真为真,有假【即】假,如果在逻辑与表达式中,一旦
			出现一个false条件,从false条件开始,之后的表达式是没有任何
			作用的,计算机为了保证效率问题,不再执行之后的代码。
		*/
		
		System.out.println("ret : " + ret); // false
		System.out.println("num : " + num);	// 5 or 6

		int num1 = 10;
		boolean ret1 = num1 > 5 || num1++ > 100;
		/*
		逻辑或断路原则:
			逻辑或中有真【即】真,同假为假,如果在逻辑或表达式中,一旦
			出现一个true条件,从true条件开始,之后的表达式是没有任何
			作用的,计算机为了保证效率问题,不再执行之后的代码。
		*/
		System.out.println("ret1 : " + ret1); // true
		System.out.println("num1 : " + num1); // 10
	}
}
课堂小练习
1. 使用关系运算符,逻辑运算符,写出一个判断一个字符是不是大写英文字母的条件
char ch;
'A' <= ch <= 'Z'; ×
ch >= 'A' && ch <= 'Z';

2. 使用关系运算符,逻辑运算符,写出一个判断一个字符是不是英文字母的条件
char ch;
A ~ z 
(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')

3. 使用关系运算符,逻辑运算符,写出一个判断一个字符是不是数字字符的条件
char ch;
ch >= '0' && ch <= '9';

4. 使用关系运算符,逻辑运算符,写出一个闰年判断条件
闰年:
	能被4整除,但是不能被100整除
	或者能被400整除
int year;
(year % 4 == 0 && year % 100 != 0) || year % 400 == 0

要求:
	只允许使用字符本身!!!
2. 分支结构【重点】
2.1 开发中的常用结构
顺序结构
	代码从上之下执行运行
分支结构
	代码在不同的条件下,执行的不同的运行操作,得到不同的结果
循环结构
	存在复用代码可以利用循环来简化一定的结构
2.2 if 分支结构
2.2.1 if
if (/* 判断条件 true or false */) {
    // 执行语句
}
/*
执行流程:
	如果代码执行到if分支结构,首先判断if之后的小括号内容是否为true,如果为执行,执行大括号里面的语句,如果为false,执行大括号之外的语句
*/
2.2.2 if else
if (/* 判断条件 true or false */) {
    // true语句体
} else {
    // false语句体
}
/*
执行流程:
	如果代码运行到if else分支结构,首先判断if之后的条件是否为true,如果为true,执行if大括号内true语句体,如果为false,执行else大括号里面的false语句体
*/
2.2.3 if else - if
if (/* 匹配条件1 */) {
    // 处理方式1
} else if (/* 匹配条件2 */) {
    // 处理方式2
} else if (/* 匹配条件3 */) {
    // 处理方式3
} else {
    // 最终处理方式
}
/*
执行流程:
	当程序执行到if else if结构时,匹配if之后的条件,找到第一个匹配的if条件之后,执行对应的处理方式,如果没有任何一个if条件匹配,执行else里面的处理方式
	注意: 最后的else 可以省略!!!

90 ~ 100 秀儿
80 ~ 90 良儿
70 ~ 80 中儿
60 ~ 70 过儿
60以下
	让你爹穿着拖鞋来学校一趟
*/
【补充知识点 从键盘上获取用户输入的数据】
基本的Java代码中是没有从键盘上获取数据的能力
1. 导包
在class之前,输入
import java.util.Scanner;

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

3. 常用方法,复制粘贴
int num = sc.nextInt(); 从键盘上获取用户输入的int类型数据
float num = sc.nextFloat(); 从键盘上获取用户输入的float类型数据
char ch = sc.nextLine().charAt(0); 从键盘上获取用户输入的一个char类型数据
【补充知识点 用户体验问题】
在实际开发中,我们的程序需要考虑用户体验和用户友好性,从而建立足够的用户粘性。
用户如果体验不好,你们的软件就没有任何的价值!!!
【补充知识点 用户输入数据合法性判断问题】
实际使用情况下用户输入的数据需要进行合理化判断,如果用户输入的数据是不合理的, 不要进行正常的业务流程,
例如:
	用户输入的学生成绩超出了0 ~ 100 
	用户登录账号,密码或者账号错误
2.3 switch case 分支结构
switch (/* 一个变量 */) {
    case 常量1:
        处理方式1;
        break;
    case 常量2:
        处理方式2;
        break;
    case 常量3:
        处理方式3;
        break;
    case 常量4:
        处理方式4;
        break;
    default:
        最终处理方式;
        break;
}
/*
执行流程:
	当程序运行到switch case结构之后,首先使用switch之后的变量,匹配case之后的常量,找到对应的处理方式,如果没有任何一个case匹配变量对应的数值,则采用default方式处理。
	
switch case 使用注意事项:
	1. 在switch case结构中,有且只能执行case,或者default之后的语句,如果语句不在这两者范围以内是无效代码。Java开发,不允许废话。
	2. 在switch case结构中,不允许出现相同的case选项
	3. 在switch case结构中,break可以省略,如果执行了缺少break的case或者default选择,代码会继续执行,到下一个break或者大括号结束。这里可以利用省去break结构的方式,整合一些相同处理方式的选项。
	4. 在switch case结构中,default选择可以省略,不影响正常的逻辑,只是缺少了一种在非指定条件下的处理方式。这里需要根据实际的业务需求来作出选择。
*/

希望大家关注我一波,防止以后迷路,有需要的可以加我Q讨论互相学习java ,学习路线探讨,经验分享与java Q:2415773436

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值