一 键盘录入数据 二 选择结构与分支结构 一 键盘录入数据 Scanner 是Java核心类: java.util.Scanenr; (Java中只要不是java.lang包下的类都需要导包) Scanner
使用步骤: 1)导包:(目前写在class上面) 固定写法 格式 import java.util.Scanner; (用哪个类,导哪个类) 2)固定格式: 创建键盘录入对象 Scanner 键盘录入的对象名 = new Scanner(System.in) ; 3)友情提示: 输出语句 "请您输入一个数据:" 4)接收数据 (接收int类型数据) int 接收的变量名= 键盘录入的对象名.nextInt() ; //录入下一个int类型的数据 5)输出/完成业务操作键盘录入里面的细节
1)同时录入两个int 2)同时录入两个字符串String nextLine() 3)先录入字符串,在录入一个int 以上三个都没有问题. 4)先录入int,在录入一个String 存在问题: 先录入int类型的数据,在录入String---->字符串数据没有录入,直接漏掉了, 回车符号 每次录入数据----->敲"回车符号" 10,回车符号本身---->字符串值二 选择结构
1)顺序结构语句 (简单) 一旦进入main方法中(由Jvm 调用),从有效行开始依次从上往下执行! 2)选择结构语句 if语句的格式:a.第一种格式
if(表达式){ 语句; } 执行流程: 判断表达式是否成立,如果是true,成立,执行语句; 如果不成立,不执行! if语句整体的注意事项: 1)有if的地方需要有一对{} 有{}的地方不能分号; if语句整体的注意事项: 1)有if的地方需要有一对{} 有{}的地方不能分号; 2)在一个方法中(main() )定义一个{xxxd代码}---->局部代码块 (了解) 作用:限定局部变量的生命周期 局部变量:在方法定义中的变量---->随着方法的调用完毕而消失! 内存中:GC 垃圾回收器(自动回收这些对象或者变量) if格式1)应用场景: 针对单个业务场景进行判断 代码块----(局部代码块) 局部代码块:作用:限定变量的生命周期f格式2:
if(表达式){ 语句1; }else{ 语句2; } 执行流程: 1)首先判断表达式是否成立,如果是true,执行语句1 2)如果不成立,执行语句2; 应用场景 针对两种情况进行判断if语句的第三种结构:
if(表达式1){ 语句1; }else if(表达式2){ 语句2; ... ... ... }else{ 语句n+1 ; } 执行流程: 1)首先判断表达式1是否成立,如果成立,执行语句1,if语句结束! 2)如果表达式1不成立,再次判断表达式2是否成立,如果成立,执行语句2,语句结束! 3)如果上述表达式都不成立,就执行else中的语句,if语句结束! 应用场景: 针对多种情况进行判断if语句格式2的嵌套:
if(表达式){ //表达式成立 if(表达式1){ 语句1; }else{ 语句2; } }else{ //不成立 if(表达式11){ 语句11; }else{ 语句22; } } 流程: 首先判断外层if中表达式是否成立, 如果成立,执行表达式2是否成立 如果表达式2成立,执行语句1;否则,执行语句2; 外层if中表达式不成立,就执行else中的语句 首先判断表达式11是否成立,如果成立,执行语句11, 否则执行语句22;switch语句的格式
switch(表达式){ case 值1: 语句1; break ; case 值2: 语句2; break ; ... ... default: 语句n; break ; } 执行流程: 1)先判断表达式的值它和case语句值1,是否匹配 如果匹配,执行语句1,遇见break ,switch语句结束了! 2)如果值1不匹配,继续判断值2是否和表达式中的值是否匹配,如果匹配,执行语句2 遇见break,switch语句结束! 3)如果上面的所有case语句都不匹配,执行default语句,执行语句n,直接结束 switch(表达式)---->本身可以使用的类型:byte,short,char,int类型 JDK5以后可以枚举enum(引用类型--->定义常量) 后面讲(Java高级部分多线程Thread类: State(枚举类型)) JDK7以后:可以使用String类型 switch语句使用的注意事项: 1)switch语句中的case语句后面跟的常量值,不能跟变量! 对比:javascript:switch语句 中的case可以是常量也可以变量 2)case语句中的break不能轻易省略,否则就会造成"case穿透" 如果没有写break,跟下面case值不进行比较,直接运行语句,直到遇见break结束! 3)switch中的default语句:书写位置默认是在末尾,但是它也可以在switch语句中的任何位置,但是不影响执行流程 都需要先跟case中的值进行比较,如果都没有匹配,都需要执行default... 如果default在语句的末尾,break可以省略,如果在语句中的话,不建议省略break ; 4)关于switch语句的结束问题: 1)遇见break (中断,结束的意思) ,switch语句结束 break:属于跳转控制语句中一种:两种场景:switch中/循环语句中 2)语句默认执行到末尾! 应用case穿透2.while循环语句格式:
基本格式 while(初始化语句以及条件表达式){ 循环体语句; 步长语句(控制体语句) ; } 扩展格式:(推荐) 初始化语句; while(条件表达式){ 循环体语句; 步长语句(控制体语句) ; } 执行流程: 1)首先初始化语句进行赋值 2)判断条件表达式是否成立,如果成立,执行循环体语句 再次执行步长语句; 3)继续判断条件表达式是否成立,如果成立,执行循环体语句 再次执行步长语句; ... ... 4)当条件表达式为false,不成立,while循环语句结束while循环和for循环的区别?
1)从格式上不太一样 for(初始化语句;条件表达式;步长语句){ 循环体; } 初始化语句; while(条件表达式){ 循环体语句; 步长语句; } 2)从内存角度:(是否节省内存空间) 变量: 编译时期变量 运行时期变量 int i = 10 ; Integer(引用类型) i = 100 ; for循环:for循环语句结束,变量从内存中释放掉了,节省内存空间(优先) while循环:while循环语句结束,依然可以访问变量,耗费内存空间 变量/对象 最终程序结束,都需要垃圾回收器GC (jvm:假想计算机--->开启:垃圾回收线程) 3)应用场景:是否明确次数 针对for循环:(使用居多) 明确循环次数 举例: == :基本类型: int a = 10 ; int b = 20 ; 模拟用户登录, 给三次机会! (String类:equals()) 针对while循环:(使用:仅此for) :不明确循环次数3.两个死循环
格式1: for(;;){ 循环体语句; } 格式2 :(推荐) while(true){ 循环体语句; } //死循环:要灵活使用: //学习:java.lang.Math:数学运算(提供三角函数/基本的数学运算) //方法random()--->产生随机数java.lang.Math
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 获取随机数的方法 使用: public static double random() :取值范围[0.0,1.0) static:静态的 (面向对象讲) 需求:使用Math类中的方法 random()获取一个1-100之间的随机数 然后在键盘录入一个int类型的数据,猜产生的随机数! 分析: 1)使用Math的random()产生一个1-100之间的随机数 2)然后使用Scanner:键盘录入录入int类型的数据 while(true){ //保证不断录入数据,不知道录入多少次,使用while循环 3)判断当前录入的数据和随机数的数据进行对比 要么大了,提示"数据大了" 小了,提示"数据小了" 相等, break ; 结束while循环4.Do-While 循环
do-while循环语句的格式: (开发中:使用不多,在java原码中) 格式: 初始化语句; do{ 循环体语句; 步长语句(控制体语句) ; }while(条件表达式) ; 执行流程: 1)初始化语句赋值 2)直接执行循环体语句---->步长语句--->条件表达式 .... .... 特点:循环体至少执行一次 (它和while,for的区别)5.for循环的嵌套:
for(初始化语句;条件表达式;步长语句){ //循环体语句 for(初始化语句;条件表达式;步长语句){ } } 如:99乘法表 转移字符: \t : 制表符号 ----->类似于文本文件中那个tab键 :缩进 \n : 换行符号 后面学习:IO流(输入/输出) : windows操作系统:换行符号"\r\n"6.跳转控制语句:
break :中断,结束 continue: 结束当前循环,立即进入下一次循环 单独不能使用 结合循环语句中使 return :结束方法方法去使用的!(结合方法) break:中断,结束的意思 不能单独使用,没有意义! 在switch中以及循环中使用! 循环中使用: 1)可以在单层循环中使用 2)早期的使用:用在for循环嵌套中使用(外层循环,内层循环) 标签语句 给外层循环/内层循环中起一个名字 格式:标签名称:for(初始化语句;条件表达式;步长语句){...} 标签名称:for(){} 循环嵌套:应用场景: 后期使用: 增强for循环: 遍历集合 类上于: HashMap<String,ArrayList<>> 集合嵌套集合