本套课程将会从0基础讲解Java语言核心技术,适合人群:
- 大学中开设了Java语言课程的同学
- 想要专升本或者考研的同学
- 想要考计算机等级证书的同学
- 想要从事Java相关开发开发的同学
精品专题:
01.《C语言从不挂科到高绩点》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12753294.html?spm=1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12753294.html?spm=1001.2014.3001.5482
02. 《SpringBoot详细教程》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12789841.html?spm=1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12789841.html?spm=1001.2014.3001.548203.《SpringBoot电脑商城项目》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12752883.html?spm=1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12752883.html?spm=1001.2014.3001.548204.《VUE3.0 核心教程》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12769996.html?spm=1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12769996.html?spm=1001.2014.3001.5482
================================
|| 持续分享系列教程,关注一下不迷路 ||
|| 视频教程:小破站:墨轩大楼 ||
================================
======【正文开始】======
1. 程序执行流程
在大多数时候程序的执行都是从主方法开始从上往下顺序执行,但是并非所有的需求都能够顺序执行完成,例如,对一些不同的条件判断获取不同的结果,此时需要使用分支结构;对某些操作反复执行,此时需要循环结构;所以在Java中对于程序的执行流程分为三种类别:
- 顺序结构(从main方法开始从上往下顺序执行)
- 分支结构(对不同的判断条件执行不同的操作)
-
- if...else..
- switch
- 循环结构(对一些需要重复执行的程序反复运行,对容器的遍历操作)
-
- for
- while
- do...while
- forEach
- 递归
2. 分支语句
2.1. 分支概述
在日常开发中通常对于相关业务需求会涉及到不同的条件,执行不同的操作,例如管理员登录和普通用户登录,看到不同的菜单;对电商系统用户购买了不同件数的商品提供不同的折扣。对以上情况来说就需要使用分支结构实现功能;
Java中的分支语句主要分为两种结构:
- if..else... 条件分支
- switch 选择结构
2.2. if..else..
2.2.1. 结构分类
if..else..实际使用方式包含三种:
if(判断条件){
//执行体
}
if(判断条件){
//成立时执行
}else{
//不成立执行
}
if(判断条件1){
//执行体1
}else if(判断条件2){
//执行体2
}else if(判断条件3){
//执行体3
}else{
//都不成立执行
}
条件判断表达式结果一定是布尔类型
2.2.2 if..else..使用案例
- 案例一
int age = 16;
//当年龄未到达18岁时,增加10岁
if(age < 18){
age += 10;
}
System.out.println(age);
- 案例二
//提供一个年龄,输出该年龄对应的人是否成年
int age = 16;
if(age >= 18){
System.out.println("成年人,欢迎入内");
}else{
System.out.println("未满18岁禁止入内");
}
- 案例三
public static String getType(int age){
if(age < 18){
return "未成年";
}else if(age < 36){
return "青年";
}else if(age < 48){
return "中年";
}else if(age < 60){
return "中老年";
}else {
return "老年";
}
}
注意事项:
如果if..else的执行体中只有一行需要被执行的代码,则可无需使用{}包裹,例如:
if(age < 18)
return "未成年";
else if(age < 36)
return "青年";
else if(age < 48)
return "中年";
else if(age < 60)
return "中老年";
else
return "老年";
虽然以上的做法语法上是正常编译通过的,但是出于代码可读性的考虑,并不推荐
2.2.3.课堂练习
现在需要设计一个电商系统的的优惠活动算法,对于某件商品,提供一种折扣活动,例如:商品的原价为100RMB,如果用户购买的件数小于5件,按原价出售,如果>=5件<10件,按8折出售,如果>=10件<20件按7折出售,如果超过20件按六折出售;请计算购买N件商品,总共需要花费多少钱?
价格:price
折扣:offset
总件数:count
public class Demo5 {
/**
* 根据提供的商品单价和购买件数,返回总价格
* @param price 单价
* @param count 购买数
* @return 总价格
*/
public static double getTotal(double price,int count){
double offset;
if(count < 5){
offset = 1.0;
}else if(count < 10){
offset = 0.8;
}else if(count < 20){
offset = 0.7;
}else{
offset = 0.6;
}
//计算总价
return price * count * offset;
}
public static void main(String[] args) {
double price = 10;
int count = 20;
//调用方法
double total = getTotal(price,count);
System.out.println("总价格"+total);
}
}
2.3. switch语句
if..else..大多数时候用于对一些区间值的分支进行判断操作,但是某些时候对一些确定的值判断可能不太容易,例如:
输入一个月份(1~·12),返回该月份所属的季节:
3,4,5:春
6,7,8:夏
9,10,11:秋
12,1,2:冬
对于以上的问题使用if..else..略显不合理,由于以上的数值取值基本是固定的,因此更适合另一种分支语句:switch
2.3.1. 语法规范
switch语句的流程图如下:
对应的语法规范:
switch(变量表达式){
case 值1:
//执行体
break;
case 值2:
//执行体
break;
case 值3:
//执行体
break;
...
default:
//执行体
break;
}
案例代码:
public static String roles(int r){
String name = "";
switch(r){
case 0:
name = "学生";
break;
case 1:
name = "老师";
break;
case 2:
name = "院长";
break;
case 3:
name = "管理员";
break;
default:
name = "角色错误";
}
return name;
}
2.3.2. case穿透
在switch语句中为了防止case穿透,需要在每一个case条件之后使用break关键字;否则,程序将会逐层向下穿透。例如上述程序中,如果去掉所有的break:
public static String roles(int r){
String name = "";
switch(r){
case 0:
name = "学生";
//break;
case 1:
name = "老师";
//break;
case 2:
name = "院长";
// break;
case 3:
name = "管理员";
//break;
default:
name = "角色错误";
}
return name;
}
调用方法之后,最终无论输入什么都会返回“角色错误”;因此,为了防止case穿透,必须在case语句内容执行完之后,增加break关键字;
当然case穿透在某些时候也能减少一些不必要的代码开销,例如:
public static String getSeason(int month) {
switch (month) {
case 3:
case 4:
case 5:
return "春季";
case 6:
case 7:
case 8:
return "夏季";
case 9:
case 10:
case 11:
return "秋季";
case 12:
case 1:
case 2:
return "冬季";
}
return "月份错误";
}
2.3.3. switch支持的数据类型
switch语句主要用于对某些确定值的分支,支持的数据类型也是有限的,目前switch支持的数据类型主要包含:
- byte
- short
- int
- char
- String(java7新增)
- enum
枚举类是java5新增的一种类型,用于将一些确定的值列举,以往在对某些状态或者标志位定义时一般使用整型或者字符串类型,但是这种定义方式值的可选范围过于广泛,在开发过程中还需要对一些例外值进行容错处理,而使用枚举类型可以有效避免这一问题;枚举的声明语法:
public enum 枚举类名称{
枚举值1,
枚举值2,
...
}
例如:
- 季节只有四个(春夏秋冬)
public enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER
}
- 性别是有两个(男女)
public enum Sex{
MALE,
FAMALE
}
- 系统的登录角色只有固定的某几个
public enum Role{
Student,
Teacher,
Admin
}