课程:1-1 阶段|2024.6.6
课程:1-1 阶段|2024.6.6
学院:大数据云
注释:该文件只用于记录课程讲解内容。
运算符
概念:
Java中用来做运算的相关符号
分类:
1、算数
2、比较
3、赋值
4、逻辑
5、三目
6、位移
算数:
对数字类型的数据进行数学运算
符号:
+ - * / % ---- 基础运算
注意点:
1、相同类型的数据进行运算结果数据类型就是参与运算的数 据类型
2、不同的数据类型进行运算数据类型就是参与运算的最大类 型
3、整数做除法运算结果为整数类型有一方为小数结果为小数
++ -- ----- 数字类型变量进行加减1运算
使用场景:
单独使用:符号前 或后 结果是一样
混合使用:
对变量自身的自增或自减运算没有影响对混合运算 的结果有影响
前:
混合运算的时候:
先变量自增自减 再做其他运算
后:
混合运算的时候:
先做其他运算 再变量自增自减
比较:比骄两个数据是否一样
只能比较基本数据类型:
> < >= <=
可以比较任意数据类型数据:
== !=
比较基本数据类型比较的是数据本身大小
比较的引用数据类型比较的是引用数据的地址值
赋值:就是给变量存值
普通: =
扩展:先给变量做对应符号中的算数运算再把结果赋值给变量
+= -= *= /= %=
特点:自带强制转换
逻辑:
逻辑或 | 短路或 ||
或者的关系
运算原则:有真则真 全假则假
运算过程:
| :
1、计算第一个表达式的结果
2、计算第二个表达式的结果
3、按照运算原则得出最终结果
||:
如果第一个表达式为true 直接得到最终结果不执行第二个 表达式,如果为false运算过程照旧
逻辑与 & 短路与 &&
并且的关系
运算原则:有假则假 全真则真
运算过程:
& :
1、计算第一个表达式的结果
2、计算第二个表达式的结果
3、按照运算原则得出最终结果
&&:
如果第一个表达式为false 直接得到最终结果不执行第二个 表达式,如果为true运算过程照旧
逻辑非 :! 取反
逻辑异或:^ 相同为假 异同为真
三元【三目】:
语法格式:
布尔表达式 ? 表达式2 : 表达式3
执行流程:
判断布尔表达式是否成立:
成立:执行表达式2 得到结果结束运算
不成立:执行表达式3 得到结果结束运算
使用场景:
根据一个已知条件对两个结果进行判断选择流程控制语句
(一)概述
概述
Java中的一种按照固定流程进行执行并得到结果的语句分类
1、顺序结构 --- 日常的代码 2、分支结构 3、循环结构
(二)分支结构
- 概述
- Java中书写的代码有多个分支可以执行但是每次执行只会执行其中的一个分支的语句
- 分类
- 判断语句
- 选择语句【开关语句】
判断语句
- 概述
- 根据提供得条件进行判断并准备对应的要执行的分支结构
- 分类
- 单条件判断
- 多条件判断
单条件判断语句
if语句
语法
if(判断的条件){条件成立要执行的分支}执行流程
判断条件是否成立: 成立:执行花括号对应的成立分支语句 不成立:结束语句案例
小女孩回家相亲,内心反抗的,但是又得去所以对相亲的结果设定一个上限条件,满足条件就可以约会,不满足直接走人 上限条件: 薪资30000块以上练习
某公司现在要给员工进行薪资调整, 工作年龄大于等于5年, 加薪3000元, 工龄不够5年的, 没有加薪
if...else语句
语法
if(条件){条件成立的分支}else{条件不成立的分支}执行流程
判断条件是否成立: 成立:执行第一个花括号对应的成立分支语句 不成立:执行else后的花括号对应的成立分支语句案例
练习
某公司现在要给员工进行薪资调整, 工作年龄大于等于5年, 加薪3000元, 工龄不够5年, 加薪1000元
多条件判断语句
概述
涉及到多个条件每个条件对应都有自己的分支,条件一个一个的去判断 不管分支有多少最终只会执行一个分支语法 【掌握】
if(条件1){条件1成立执行的分支1 }else if(条件2){条件2成立要执行的分支2 }else if(条件3){条件2成立要执行的分支3 }...... else if(条件n){条件n成立要执行的分支n }else { 所有条件都不成立执行的分支n+1 }执行流程【了解】
1、判断条件1是否成立: 成立:执行条件1对应的分支1 ,执行完毕结束语句 不成立: 判断下一个条件 成立:执行分支2 不成立:继续判断下一个条件重复上述过程 .... 一直到最后一个条件判断: 成立:执行分支n 不成立: 1、有else分支执行分支n+1 2、没有else分支结束语句案例
相亲:女孩真的去找相亲对象,内心给自己设定了几个档次。 30000以上确定关系 20000到30000的交朋友 10000到20000的交换联系方式 10000以下不做考量练习
某公司现在要给员工进行薪资调整,根据工龄决定涨薪级别 1)[0-5): 涨薪2000元 2)[5-10): 涨薪3000元 3)[10-15): 涨薪4000元 4)[15,以上): 涨薪5000元
选择语句
概述
属于分支结构的一种,提前准备好要进行选择的选项方案,执行的时候根据获取到的标准值【开关值】和选项值相匹配的方案进行执行方案的语句。语法格式
switch (表达式){ case 常量值1 : 代码段1; break; ....... case 常量值n : 代码段n; break; default : 代码段n; break; }语法解释
switch : 关键字 表示开关的意思 控制某一个方案的执行 表达式:就是一个算数表达式 他的结果就是要去做选择的一个遵循标准 case 常量值 :选择项 提前准备好的去做选择的代码段 break :关键字 打折 打断 用来结束选择语句执行 default : 关键字 默认的意思 表示所有的选项均不匹配 标准值 默认执行项执行流程
1、执行表达式得到要做选择的标准值 2、拿着标准值从上往下依次的去和case的常量值匹配: 匹配到了:执行对应的代码段 没有匹配到继续下一个所有的case都不匹配执行default的代码段案例
键盘录入一个整数,用于进行星期匹配,数据范围1-7,对应匹配星期一到星期天,如果不是1-7范围,那么报出数据错误 提示信息 整数就是将来选择语句用来匹配选项的标准值 范围是1 - 7 :选择语句就得准备7个case项 case项的常量值就是1-7 case项的内容:匹配对应的星期几进行输出 default项内容:提示录入数据有误 代码示例: import java.util.Scanner; public class SwitchSentenceDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 友好提示 System.out.println("请输入要选择星期天的数字【1-7】:"); int num = sc.nextInt(); // 根据num进行选择 switch (num){ case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default : System.out.println("输入的数据有误!"); break; } } }注意事项【面试题】
1、表达式的结果的数据类型有要求的: jdk1.5之前:byte short int char jdk1.5时候 :增加枚举【enum】 jdk1.7版本:增加了String 2、表达式的结果数据类型尽量和case项的常量的数据类型一致 3、case中的break一般情况下不能省略: 一旦省略会发生case项穿透现象 case的穿透性: 没有break代码会执行相邻的多个case项中的代码段 使用场景: 多个case项执行内容是一致利用case的穿透性实现 4、default项理论上可以书写在语句内部的任意位置,永远都是没有匹配到case项最后去执行的 【一般建议书写在最后。】 如果case项没有匹配到不做任何事情的情况default项可以省略案例:
键盘录入一个整数,用于进行工作日与休息日匹配,数据范围1-5,输出工作日; 数据范围6-7输出休息日; 其余数据报出”数据有误”提示信息 import java.util.Scanner; public class SwitchSentenceText { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 友好提示 System.out.println("请输入要选择星期天的数字【1-7】:"); int num = sc.nextInt(); // char num = 'a'; // 根据num进行选择 switch (num){ case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("休息日"); break; default : System.out.println("输入的数据有误!"); break; } } }
(三)循环结构
概述
java中用来重复执行相同或相似的事情的固定格式的语句分类
1、for循环 2、while循环 3、do...while循环
(一)循环结构之for循环
语法格式
for (初始化语句;循环条件;初始化变量的改变) {循环体}格式解释
for : 关键字 表示循环 初始化语句:是变量的创建 作用:记录每次循环的开端值 循环条件:是一个布尔表达式 作用:判断是否要继续重复做事情 初始化变量的改变:是一个计算表达式 作用:改变初始化变量的值获取下一次的开端值 循环体:是一段代码段 作用:表示重复做的事情执行流程【重点】
图示
文字描述
1、先执行初始化语句创建记录每次开端值的变量 2、判断循环条件是否成立 成立: 3、执行循环体 4、执行初始化变量的改变获取下一次的开端值 5、重新判断循环条件是否成立 成立:形成 2 3 4 5闭环 达到循环的效果 不成立:结束循环 不成立:结束循环
代码示例
public class ForLoopDemo { public static void main(String[] args) { System.out.println("金莲有想法,你有没有?"); System.out.println("金莲有想法,你有没有?"); System.out.println("金莲有想法,你有没有?"); System.out.println("金莲有想法,你有没有?"); System.out.println("金莲有想法,你有没有?"); System.out.println("=========================="); for (int i = 1; i <= 5; i++){ System.out.println("金莲有想法,你有没有?"); } } }练习
1、计算1到100之间所有能被3整除的数的累和 分析: 1、定义存放和的变量 2、获取1到100之间所有数字在进行判断 满足条件【被3整除】:把数字加到和变量中
2、计算水仙花数的个数并打印水仙花数 水仙花数:是一个三位数 数的每一个数制位上的数字的3次方和等于数字本身
分析: 想要记录水仙花数的个数的到100到999 之间所有的数字中去寻找【对所有三位数进行判断】 判断数字又是重复的过程 需要循环【循环的原理和练习一一样】 代码示例 public class ForLoopText { public static void main(String[] args) { //定义和的变量 int sum = 0; // 获取数字 for (int i = 1; i <= 100 ; i++){ // 每次获取到的数字是i // 判断数字i能不能被3整除 if (i % 3 == 0){ // 把数字i 加到sum中 sum += i; } } System.out.println("1到100之间能被3整除的数字和为:" + sum );// 水仙花数的个数 // 1、定义一个计数器 int count = 0; // 判断所有的三位数 // 2、先获取每一个三位数 for (int num = 100; num < 1000; num++){ // 取到三位数进行判断 // 3、获取每个数制位上面的数字 int g = num % 10; int s = num / 10 % 10; int b = num / 100 % 10; // 4、三次方和求取 int sum1 = g*g*g + s*s*s + b*b*b; // 5、判断和和数字是否相等 if (sum1 == num){ // 找到水仙花数需要计数 count++; // 输出水仙花数 System.out.println("第" + count + "个水仙花数为:" + num ); } } System.out.println("水仙花数的个数为" + count ); }}
练习: 5到805之间能被3整除但是不能被7整除的数的个数和累和 分析: 计数 ----- 需要一个计数器【变量】 累和 ----- 需要一个和变量 处理数字: 从5到805之间所有的数字找到被3整除不能被7整除的数字 使用循环从5开始获取数字获取到805结束 获取到数字进行判断: 符合条件: 计数 累和 代码示例 public class ForLoopText02 { public static void main(String[] args) { // 定义计数器和和变量 int count = 0; int sum = 0;
// 获取5到805之间的所有数字 for (int num = 5;num < 806 ; num++ ){ // 每次获取的数字是num // 判断num if (num % 3 == 0 && num % 7 != 0){ // 符合需要计数和累和 count++; sum += num; } } System.out.println("5到805之间能被3整除不能被7整除的数字的个数为:" + count); System.out.println("5到805之间能被3整除不能被7整除的数字的累和为:" + sum); }}
(二)循环结构之while循环
概述
属于循环结构的一种,理解他是for循环的格式变形优化,所以while循环的学习参考for循环,for循环怎么用为了就可以怎么用,只不过单独记忆格式。语法格式
初始化语句; while(循环条件){循环体;初始化变量的改变}代码示例
public class WhileLoopDemo { public static void main(String[] args) { int line = 1; while (line <= 5){ System.out.println("金莲有想法,大郎喝了药"); line+=2; } } }执行流程
1、执行初始化语句 2、判断循环条件 成立: 3、执行花括号的代码段【包含循环体和初始化变量的改变】 4、如果条件一直成立 往复执行 2 3 达到循环效果 一直到条件不成立 不成立:结束循环练习
1、使用while循环打印1到100之间所有的偶数和 分析: 1、定义和变量 2、把1到100之间的所有数字获取到 3、获取到数字判断该数字是不是偶数 是: 累和 代码示例: public class WhileLoopText01 { public static void main(String[] args) { // 1、定义和变量 int sum = 0; // 2、把1到100之间的所有数字获取到 int num = 1; while (num < 101){ // 3、获取到数字判断该数字是不是偶数 if (num % 2 == 0){ // 是:累和 sum += num ; } num++; } System.out.println("1到100之间所有偶数的和为:" + sum ); } } 2、使用while循环完成:假设一张足够大的纸张,初始厚度为0.05毫米,需要对折多少次厚度才会超过8844.44米 分析: 纸张的厚度和8844440毫米比较 小:对折纸张 记录一次次数 大:不折 循环结束 代码示例 public class WhileLoopText01 { public static void main(String[] args) { // 定义纸张的厚度 double thickness = 0.05;// 初始化变量 double height = 8844.44 * 1000; // 定义一个计数器 int count = 0 ; while (thickness < height){ // 折纸 thickness *= 2 ; // 折纸一次计数一次 count++; } System.out.println("纸张需要折叠" + count + "次厚度超越山峰的高度" ); } }
(三)循环结构之do...while循环
语法格式
初始化语句; do{循环体;初始化变量的改变}while(循环条件);执行流程
1、执行初始化语句得到初始化变量 2、执行do后面花括号的代码段【循环体 初始化变量改变】 3、判断循环条件是否成立 成立: 进行2 3 反复执行 达到循环的效果 不成立:结束循环代码示例
public class DoWhileSentenceDemo { public static void main(String[] args) { int line = 1; do{ System.out.println("金莲有想法,庆庆得了好"); line++; }while (line >= 5); } }特点
循环体至少会执行一次
(四)三种循环的对比
区别:
for循环的初始化语句书写在小括号中,创建的初始化变量属于for循环语句的一部分,变量随着for循环的执行创建出来,只能在for循环的内部使用,一旦for循环结束,变量就消失,for循环的外部不能使用该变量 while循环和do...while循环的初始化变量在循环语句结构之前就定义好,不属于循环的一部分,独立存在,优先循环创建的,循环执行完毕,该变量还是存在的,可以继续使用。【循环对该变量的改变是生效】 实际使用: 一般知道循环次数的时候优先使用for循环,不知道具体循环次数只知道具体的停止条件优先使用while循环
(五)死循环
概述
循环结构语句的循环条件恒成立导致循环体不停的执行的现象。 好处: 解决一些特殊的场景功能 比如:无限登录功能 服务器的启动 坏处: 堆内存要求特别高,终归会导致死机【内存会被用完】 一般死循环结合跳转语句来解决实际需求各个循环的标准死循环格式
for循环的死循环: for (;😉{循环体} while循环 while (true){} do...while循环 do{}while(true)
(六)循环跳转语句
概述
java中用来人为干预循环执行流程的语句就叫做跳转语句分类:
break : 终止整个循环结构 continue : 停止当前循环继续后续循环代码示例
public class ForLoopDemo { public static void main(String[] args) { for (int i = 1; i <= 5; i++){ // 当循环执行到第3次的时候人为的干预 if (i == 3){ // break;// 结束整个循环 continue;// 结束当前循环 } System.out.println("金莲有想法,你有没有?" + i); } } }
(七)综合练习
需求
已知用户名为 123,密码为 789; 模拟用户无限登录功能。 分析: 定义两个变量存放注册的用户名和密码 -------=- 模拟数据库管理注册的数据 使用键盘录入功能录入用户名和名 ------- 模拟页面输入用户名和密码 验证登录: 判断输入的用户名和密码是不是同时和注册的一样 一样: 提示登录成功 ------ 模拟跳转首页 停止登录【结束循环】 不一样:重新登录【登录的过程重复一次】代码示例
import java.util.Scanner; public class LoginDemo { public static void main(String[] args) { // 定义两个变量存放注册的用户名和密码 -------=- 模拟数据库管理注册的数据 int username = 123; int password = 789; // 使用键盘录入功能录入用户名和密码 ------- 模拟页面输入用户名和密码 Scanner sc = new Scanner(System.in); while(true){ // 提示输入用户名 System.out.println("请输入用户名:"); int uname = sc.nextInt(); // 提示输入密码 System.out.println("请输入密码:"); int pwd = sc.nextInt(); //验证登录: // 判断输入的用户名和密码是不是同时和注册的一样 if (uname == username && pwd == password){ //一样: //提示登录成功 ------ 模拟跳转首页 System.out.println("欢迎来到男人的天堂"); //停止登录【结束循环】 break; }else{ // 不一样:提示登录失败重新登录【登录的过程重复一次】 System.out.println("用户名或密码错误,请重新登录"); } } } }

