Java零基础教学文档第一篇:JavaSE(3)

接上期后续
本期继续分享尚未结束的JavaSE章节
JavaSE属于初入门阶段,内容很多~
但很基础,
大家需保持耐心,慢慢的学~
争取你们学习的速度!
跟上我更新的速度哦~
在这里插入图片描述

今日新篇章

流程控制语句

【主要内容】

  1. if单选结构

  2. if双选结构

  3. if多选结构

  4. switch选择结构

  5. for循环结构

  6. while循环结构

  7. do-while循环结构

  8. break和continue关键字

  9. 嵌套循环

  10. 带标签的break和continue

  11. 方法定义和调用

  12. 方法重载

【学习目标】
在这里插入图片描述

1. 选择结构

Java程序的执行,一般分为三种执行方式:顺序执行、选择执行和循环执行。

1.1 if选择结构

1.1.1 if单选结构

【语法结构】

if(条件表达式) {

// 当“条件表达式”的结果为true时,则执行此处的代码;

}

【工作原理】

如果条件为真,则执行if中的语句,然后在执行if条件之后的语句;反之则不执行if中的语句,直接执行if之外的语句。
在这里插入图片描述

1、 根据年龄判断是否已经成年,年龄大于18表示成年。

2、 判断一个数是否在5(包含)到10(包含)之间。

1.1.2 if双选结构

【语法结构】

if(条件表达式) {

// 当“条件表达式”的结果为true时,则执行此处的代码;

} else {

// 当“条件表达式”的结果为false时,则执行此处的代码;

}

【工作原理】

如果“条件表达式”的结果为true,则执行if大括号中的代码;如果“条件表达式”的结果为false,则执行else大括号中的代码。
在这里插入图片描述

【随堂练习】

1、 模拟用户登录操作(用户名和密码都用字符串),需要判断出登录成功和登录失败的情况。

注意:判断字符串是否相同,不能使用==,而是需要使用equals方法。

1.1.3 if多选结构

【语法结构】
在这里插入图片描述

【工作原理】
在这里插入图片描述

【随堂练习】

1、 判断一个学生的成绩,如果90(包含)100(包含)为优秀,70(包含)90为良好,60(包含)~70为及格,60分以下输出不及格。

2、 输入一个整数month代表月份,根据月份输出对应的季节。

春季:3、4、5 夏季:6、7、8 秋季:9、10、11 冬季:12、1、2

3、 录入一个年份,判断其是否为闰年。

闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。

4、 输入时(hour)、分(minute)、秒(second)的一个具体时间,要求打印出它的下一秒出来(一天24小时)。

例如输入的是23时59分59秒,则输出00:00:00;例如输入17时09分59秒,则输出17:10:00。
在这里插入图片描述

1.1.4 if选择结构总结

1、 如果if选择结构只需执行一条语句时,那么可以省略{};如果需要执行多条语句,那么就是不能省略{}。为了提高代码的易读性,建议不要省略{}。

2、 {}中的代码语句也称为代码块,在代码块定义的常量或变量的作用域仅限于代码块中,在代码块之外不能被使用。

3、 能用if多选择结构就不要用if单选择结构,因为if多选择结构的效率要高于if单选择结构。

4、 在if选择结构中还可以嵌套别的选择结构或循环结构。

1.2 switch选择结构

1.2.1 switch选择结构

使用switch语句来选择要执行的代码块,与if条件分支语句比较类似。

【语法结构】
在这里插入图片描述

【工作原理】

switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果存在default语句的情况)。

【注意事项】

1、 switch()中的数据类型只能为:byte、short、int、char、String(JDK7)和枚举(后面会学习)。

2、 case后面必须是常量,并且常量的类型应该和switch()中的数据类型保持一致。

并且不允许有重复的case值。

3、 break用于跳出switch语句,根据需求我们我们可以省略break,

如果没有break, 一旦进入case,导致后面的所有case都能进入, 直到遇到break或switch结束。

4、 default可以省略,但是最好不要省略,除非case能匹配所有的可能性。

case和default的是无序的,不过default只能最后执行或不执行。

【随堂练习】

1、 输入一个整数,对应的显示出星期几,例如: 输入“1”,则输出为“星期一” 。

2、 接收一个人的成绩,如果成绩为: 90(包含)到100(包含)输出优秀,70(包含)到90输出良好,60(包含)到70输出及格,60分以下输出不及格。

3、 查询水果的价格,根据输入水果(fruit)的名字,输出对应的水果的价格,例如苹果6块/斤,香蕉3元/斤,榴莲20元/斤,西瓜0.8元/斤。

1.2.2 switch和if的区别

switch:建议判断固定值的时候用。

if:建议判断区间或范围的时候用,对运算结果是boolean类型的表达式进行判断。

注意:用switch能做的,用if都能做,但反过来则不行。

2. 循环结构

2.1 for循环结构

【语法格式】

for(循环初始化表达式; 循环条件表达式; 循环后的操作表达式) {

// 循环体

}

重点:掌握for循环的执行顺序。初始化表达式最先执行,并且在循环过程中只执行一次。

【随堂练习】

1、 输出0(包含)到100(包含)之间的数,分别以递增和递减的方式实现;

2、 输出1到100之间的奇数和偶数;

3、 输入一个正整数n,计算1+2+3+…+n的和;

4、 输入一个正整数n,计算1-2+3-4+5-6+…-(n-1)+n的和;

5、 输出1到1000之间既能被5整除又能被3整除的数,并且每行输出5个。

6、 求100到999之间的水仙花数。水仙花数的每个位上的数字的3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

2.2 while循环结构

【语法格式】

while (循环条件表达式) {

// 循环体

}

while循环和for循环比较类似,while循环会在循环条件表达式为真的时循环执行代码块。

2.3 do-while循环结构

【语法结构】

do {

// 循环体

} while(循环条件表达式) ;

先执行循环体,然后判断循环条件表达式,do-while循环循环体至少执行一次。

2.4 break和continue详解

2.4.1 break关键字**

在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。

适用于switch语句和循环结构中。当break作用于for循环上, “循环后的操作表达式”也不会执行。

注意:break之后不允许书写别的代码语句,因为break会跳出当前循环或switch,那么break之后的代码永远不会执行。

2.4.2 continue关键字

continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

Continue关键字只适用于循环结构中。

2.4.3 带标签的break和continue【了解】

goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用(Java没有goto)。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子,那就是带标签的break和continue。

“标签”是指后面跟一个冒号的标识符,例如:“label:”。对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

【示例】

outer: for(int i = 0; i < 4; i++) {

for(int j = 0; j < 5; j++) {

if (j == 1) {

break outer;

}

}

}

【随堂练习】

1、 使用continue实现输出1到100之间能被5整除的数。

2、 韩信点兵,三人一组余两人,五人一组余三人,七人一组余四人,请问最少需要多少士兵。

3、[难]输入一个任意整数,判断它是否为质数。如果整数为7,则输出“7是质数”,如果整数为9,则输出‘9不是质数’。质数:除了1和它本身之外,不能被其他数整除的数称之为质数。

实现步骤:

1)通过Scanner获取一个正整数, 假设正整数为num。

2)通过循环获得[2, num)之间所有的整数,假设循环变量为i。

3)在循环体内部判断num是否能被i整除,也就是判断num是否为质数。

实现思路:采用假设法来实现。

a)在循环之前,先假设num是一个质数,设置flag标记的值为true

  b)在循环体中,如果num%i==0,则推翻假设,设置flag标记的值为false,并跳出循环

c)在循环之后,如果flag值依旧为true,则证明是一个质数,否则证明不是一个质数。

实现代码:
在这里插入图片描述

2.5 while与for的区别

for和while的区别:

for循环能做的事情while循环都可以实现,使用循环的时候for和while都可以选择。

建议以下条件使用while循环:

1.循环结束后循环变量还需要参与运算,那么建议使用while循。

2.不确定循环次数的时候,建议使用while循环。

2.6 嵌套循环

在一个循环语句内部再嵌套一循环或多个循环,称为嵌套循环。while、do-while与for循环可以任意嵌套多层。

多重循环执行过程:外层循环变量变化一次,内层循环变量要变化一遍。

【随堂练习】

1、 在控制台先打印矩形,然后再打印平行四边形,再然后打印等腰三角形。
在这里插入图片描述

2、 使用嵌套循环实现九九乘法表(注意循环变量的初始值)。
在这里插入图片描述

3、 [难]输入一个正整数,然后把该正整数转化为二进制。

难点1:把正整数转化为二进制,假设输入的正整数为num=20

第一趟:bit = num % 2; num /= 2; --> num = 10, bit = 0

第二趟:bit = num % 2; num /= 2;  --> num = 5,   bit = 0

第三趟:bit = num % 2; num /= 2;  --> num = 2,   bit = 1

第四趟:bit = num % 2; num /= 2; --> num = 1, bit = 0

第五趟:bit = num % 2; num /= 2;  --> num = 0,   bit = 1

循环需要执行多少次呢???不确定,所以采用死循环。

什么时候跳出死循环呢???当num的值为0时跳出循环。

难点2:拼接二进制位,使用String类型的变量保存二进制

我们定义一个字符串类型的变量bitStr,并且设置初始值为空字符串,例如:String bitStr = “”;

第一趟:int bit = 1,bitStr = bit + bitStr; --> bitStr = “1”

第二趟:int bit = 1,bitStr = bit + bitStr; --> bitStr = “11”
第三趟:int bit = 1,bitStr = bit + bitStr; --> bitStr = “111”
第四趟:int bit = 0,bitStr = bit + bitStr; --> bitStr = “0111”
第五趟:int bit = 1,bitStr = bit + bitStr; --> bitStr = “10111”

实现代码:
在这里插入图片描述

4、[难]搬砖问题:36块砖,36个人搬,男搬4块,女搬3块,两个小孩搬1块,要求一次搬完,

问需要男、女、小孩各多少人?

思路分析:

条件:男人 + 女人 + 小孩 == 36 && 男人搬砖数量 + 女人搬砖数量 + 小孩搬砖数量 == 36

我们只需列举出男人、女人和小孩的人数区间范围,然后计算机依次去判断匹配即可!

男人的取值范围???[0, 9]

女人的取值范围???[0, 12]

小孩的取值范围???[0, 36]
在这里插入图片描述

3. 方法(method)

3.1 什么是方法

方法就是定义在类中的具有特定功能的一段独立小程序,用来完成某个功能操作。在某些语言中方法也称为函数或者过程。

特殊的main方法,该方法是程序的入口,由虚拟机来调用执行。在日常的开发中,不可能把程序的所有功能都放到main方法中,我们需要定义其它的方法来完成指定的功能,需要完成该功能时只需要调用方法即可。

3.2 方法声明&调用

3.2.1 方法声明格式**

[修饰符] 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,……) {

// 执行语句;
return 返回值;
}

方法格式说明:

1、 修饰符,用于控制方法的访问权限(后面的课程会细讲)。

2、 返回值类型,方法需要返回值的数据类型,如无返回值,必须声明返回值类型为void。

3、 方法名,方法的名字,要求必须符合标识符规范,并且采用小驼峰命名法则。

4、 形参列表,由参数类型和参数名组成,形参可以为任意多个,用于给方法内部传递数据。

5、 执行语句,书写方法需要实现的功能操作。

6、 返回值,如果定义了返回值类型,那么返回值和返回值类型必须保持一致;如果定义的返回值类型为void,那么需要省略返回值,也就是直接返回return ;即可

注意:当方法返回值类型为void时,还可以省略return;

3.2.2 方法调用格式

方法名(实际参数1, 实际参数2, ……);

实际参数(简称实参):传递给形式参数的具体数值,对应着形式参数(简称形参)。

注意事项:

1、 形式参数(形参)和实际参数(实参)的类型和个数必须一一对应。

2、 在方法中只能调用方法,不可以在方法内部再定义方法。

3、 当方法有返回值类型时,可以用一个变量用于接收方法的返回值,该变量的类型必须和方法返回值类型保持一致。

3.3 方法的运用

Ø 方法的使用,首先明确两个需求:

1、 明确要定义的功能最后的结果是什么?

2、 明确在定义该功能的过程中,是否需要未知内容参与运算?

Ø 方法的使用分为两个步骤:

1、 定义方法

2、 调用方法

Ø 定义方法,根据是否有参数列表、是否有返回值,可将定义方法分为四类:

1、 无参无返回值方法

2、 无参有返回值方法

3、 有参无返回值方法

4、 有参带返回值方法

Ø 调用方法,根据方法是否有返回值,可将调用方法分为两类:

1、 有返回值方法,可以用一个变量来接收返回值,也可以忽略返回值。

2、 无返回值方法,不能用一个变量来接收方法的void返回值。

3.3.1 无参无返回值方法

需求:在方法中输出“hello world”。

分析:不需要参数和返回值,应该选用无参无返回值方法。

【示例】
在这里插入图片描述

3.3.2 无参有返回值方法

需求:调用方法获得常量3+4的和。

分析:不需要外界传入参数,但是需要返回常量3+4之和。

【示例】
在这里插入图片描述

3.3.3 有参无返回值方法

需求:在方法中输出指定两个int变量的和。

分析:需要外界传入两个int类型的参数,但不需要返回值。

【示例】
在这里插入图片描述

3.3.4 有参有返回值方法

需求:调用方法获得指定两个double变量的和。

分析:需要外界传入两个double类型的形参,并返回两个double类型形参之和。

【示例】
在这里插入图片描述

3.4 方法调用过程

重点调用方法的内存图分析,课堂上详解。

3.5 方法的重载

3.5.1 重载的概念**

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

核心为两同两不同:

  • 同一个类,同一个方法名

  • 参数列表不同(类型、个数)

3.5.2 重载的特点

返回值类型不同,不构成方法的重载。

形参的名称不同,不构成方法的重载。

方法修饰符不同,不构成方法的重载。

注意:重载的方法,实际是完全不同的方法!只是方法名称相同而已!

3.5.3 重载的好处

查看JDK文档中System.out.println()方法,发现共有10个println()方法构成了“重载关系”,如下图:
在这里插入图片描述

方法重载通常用来命名一组功能相似的方法,这样做减少了方法名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值