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()方法构成了“重载关系”,如下图:
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统&#xff0c;该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度&#xff0c;市面上的培训机构管理系统收费越来越贵&#xff0c;为了给协会内培…

什么情况?DDD 中的每个任务都执行了两次?

最近在使用 COLA 框架自带的异步任务时&#xff0c;发现每次执行异步都执行了两次&#xff0c;如果一些没有做幂等的接口&#xff0c;这样是会有问题的&#xff0c;比如入库操作之类的&#xff0c;就会造成数据重复入库&#xff0c;造成严重 bug。 带着疑惑&#xff0c;开始了…

目标检测-One Stage-YOLOx

文章目录 前言一、YOLOx的网络结构和流程1.YOLOx的不同版本2.Yolox-Darknet53YOLOv3 baselineYolox-Darknet53 3.Yolox-s/Yolox-m/Yolox-l/Yolox-x4.Yolox-Nano/Yolox-Tiny 二、YOLOx的创新点总结 前言 根据前文CenterNet、YOLOv4等可以看出学界和工业界都在积极探索使用各种t…

HackTheBox - Medium - Linux - Shared

Shared Shared 是一台中等难度的 Linux 机器&#xff0c;它具有通向立足点的 Cookie SQL 注入&#xff0c;然后通过对 Golang 二进制文件进行逆向工程并利用两个 CVE 来获得 root shell 来提升权限。 外部信息收集 端口扫描 循例nmap Web枚举 查看证书 看到这个扫了一下vhos…

骑砍战团MOD开发(36)-千人千面

骑砍1战团mod开发-千人千面_哔哩哔哩_bilibili骑砍1战团mod开发-千人千面, 视频播放量 5、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 1、转发人数 0, 视频作者 霸王奉先, 作者简介 csdn:blog.csdn.net/qq_35829452project:gitcode.net/users/qq_35829452&#xff0c;相关视频…

【解决方案】 无法将“pip“项识别为 cmdlet、函数、脚本文件

在当今的软件开发和运维领域&#xff0c;Python已经成为了一个不可或缺的工具。而pip&#xff0c;作为Python的包管理工具&#xff0c;更是Python生态系统中不可或缺的一部分。然而&#xff0c;有时候我们可能会遇到一个令人困扰的问题&#xff1a;无法将“pip”项识别为cmdlet…

【思扬赠书 | 第2期】语义解析为何作为连接自然语言与机器智能的桥梁?

⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 文章目录 01 …

汽车中的ECU、VCU、MCU、HCU

一、ECU是汽车电脑&#xff0c;刷汽车电脑可以提高动力&#xff0c;也可以减低动力&#xff0c;看需求。 简单原理如下。 1.汽车发动机运转由汽车电脑&#xff08;即ECU&#xff09;控制。 2.ECU控制发动机的进气量&#xff0c;喷油量&#xff0c;点火时间等&#xff0c;从而…

用PDETool计算磁场

学习FEM和磁场&#xff0c;Matlab中的PDETool可以直观的展示数学的结果。 在PDETool中计算磁场的步骤如下&#xff1a; 1.启动matalb&#xff0c;输入命令pdetool 2.画三个矩形 3.在工具栏的下拉列表中选Magnetostatics 4.设置区域电密 在PDE菜单中&#xff0c;选择PDEmode…

AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

8年测试总结,正确的自动化测试实施-单元/接口/Web自动化...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 今天给大家分享自…

苹果电脑Markdown写作工具:ulysses mac软件介绍

ulysses for mac是一款Markdown写作工具&#xff0c;支持Markdown拼写检查、语音识别、iCloud同步、版本管理等功能&#xff0c;并且可以导出为 PDF、word、RTF、TXT、Markdown、HTML 和 ePub等文件格式。 ulysses for mac软件介绍 适用于Mac&#xff0c;iPad和iPhone的终极写…

【码银送书第十一期】《自然语言生成SQL与知识图谱问答实战》

语义解析技术可以提高人机交互的效率和准确性&#xff0c;在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代&#xff0c;语义解析能够帮助企业更快速地从大量的数据中获取有用的信息&#xff0c;从而提高决策效率。 01 语义解析的应…

数据库:如何取消mysql的密码

因为调试MySQL数据接口&#xff0c;总是需要输入密码很烦&#xff0c;所以决定取消mysql的root密码&#xff0c; 网上推荐的有两种方法&#xff1a; 1、mysql命令 SET PASSWORD FOR rootlocalhostPASSWORD(); 2、运行 mysqladmin 命令 mysqladmin -u root -p password …

中国IT产经新闻:新能源汽车发展前景与燃油车的利弊之争

随着科技的进步和环保意识的提高&#xff0c;新能源汽车在全球范围内逐渐受到重视。然而&#xff0c;在新能源汽车迅速发展的同时&#xff0c;燃油车仍然占据着主导地位。本文将从新能源与燃油车的利弊、新能源汽车的发展前景两个方面进行分析&#xff0c;以期为读者提供全面的…

无线信号强度测试板/射频产品量产测试神器

目录 一、测试板特点 二、应用场景 三、芯片特点 四、测试板接口图 …

Freertos:

裸机编程通过中断实现不同任务的切换&#xff0c;实际上RTOS中通过不断更换CPU的使用权达到多任务运行的目的。FreeRTOS 中任务存在四种任务状态&#xff0c;分别为运行态、就绪态、阻塞态和挂起态。任务一般通过函数 vTaskSuspend()和函数 vTaskResums()进入和退出挂起态&…

为什么流不关闭会导致内存泄漏

引言 经常有人告诉你流用完要记得关&#xff0c;不然会导致内存泄漏&#xff0c;但你是否考虑过下面这些问题: 为什么流不关会导致内存泄漏&#xff1f;JVM不是有垃圾回收机制吗&#xff1f;这些引用我用完不就变垃圾了为什么不会被回收呢&#xff1f;流未关闭除了导致内存泄…

分布式(5)

目录 22.什么是Paxos算法&#xff1f;如何实现&#xff1f; 24.全局唯一ID有哪些实现方案&#xff1f; 25.数据库方式实现方案&#xff1f;有什么缺陷&#xff1f; 22.什么是Paxos算法&#xff1f;如何实现&#xff1f; Paxos算法是Lamport宗师提出的一种基于消息传递的分布…

【2024系统架构设计】 系统架构设计师第二版-通信系统架构设计理论与实践

目录 一 通信系统网络架构 二 网络构建的关键技术 三 网络构建和设计方法 四 案例分析 注:本节内容可作为知识储备,做一个基本的了解即可。