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

news2024/11/16 7:43:59

接上期后续
本期继续分享尚未结束的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()方法构成了“重载关系”,如下图:
在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java多线程编程中的异常处理策略

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天聊聊异常处理。想必大家在写代码的时候都遇到过各种各样的异常吧&#xff1f;有时候&#xff0c;一个小小的异常如果处理不当&#xff0c;就可能导致整个程序崩溃。特别是在多线程环境下&#xff0c;异常…

H2S硫化氢荧光探针之星戈瑞实验室单品

H2S硫化氢荧光探针&#xff08;近红外二区&#xff09;优势和应用 λe x 1064 nm &#xff0c;λem 1100 nm 近红外二区硫化氢荧光探针具有许多优势&#xff0c;使其在生物医学领域具有诸多应用。以下是其主要优势和应用方面&#xff1a; **优势&#xff1a; 1.深度穿透性&…

Git分支学习

Commit 每次 Commit &#xff0c;都会多一个节点&#xff0c;C1是C2的父节点&#xff0c;在C1的基础上产生。 使用 git commit 提交代码分支。 Branch 根据逻辑分解工作到不同的分支&#xff0c;在将分支和提交记录结合起来后&#xff0c;我们会看到两者如何协作。 在 mai…

subversion httpd

通过http访问模式部署SVN的操作步骤如下&#xff1a; 步骤一&#xff1a;安装SVN 步骤二&#xff1a;安装Apache 步骤三&#xff1a;安装mod_dav_svn 步骤四&#xff1a;配置SVN 步骤五&#xff1a;配置Apache 步骤六&#xff1a;浏览器测试访问 步骤一&#xff1a;安装SVN 1.…

2024第15届电子教育、电子商务、电子管理和电子学习国际会议

第十五届电子教育、电子商务、电子管理和电子学习国际会议&#xff08;IC4E 2024&#xff09;将于2024年3月18日-21日在日本福冈举办。本次会议以电子技术为核心&#xff0c;围绕电子教育、电子商务、电子管理以及电子学习等各个方面展开研讨&#xff0c;为相关领域的专家学者们…

yolov8实战第五天——yolov8+ffmpeg实时视频流检测并进行实时推流——(推流,保姆教学)

yolov8实战第一天——yolov8部署并训练自己的数据集&#xff08;保姆式教程&#xff09;_yolov8训练自己的数据集-CSDN博客 yolov8实战第三天——yolov8TensorRT部署&#xff08;python推理&#xff09;&#xff08;保姆教学&#xff09;-CSDN博客 今天&#xff0c;我们继续y…

‘pip‘ 不是内部或外部命令、ImportError: cannot import name ‘SCHEME_KEYS‘

错误一&#xff1a;启动程序中出现致命错误:无法使用“f:\pythonv\scripts\python.exe” G:\pythonv\scripts\ pip.exe” 错误二&#xff1a;‘pip‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 错误三&#xff1a;ImportError: cannot import name SCH…

九州金榜|孩子厌学,不是不想学,而是学不会

不是我不想学&#xff0c;而是我不会学&#xff0c;很多孩子这学习过程中是不是有这种感想&#xff0c;家长也是看孩子非常努力&#xff0c;但是效果却不尽如人意&#xff0c;时间长了&#xff0c;得不到有效的结果&#xff0c;孩子就此产生厌学情绪&#xff0c;这一类孩子原因…

非常好用的三款图片模糊变清晰的软件

在数字时代&#xff0c;照片的清晰度对于呈现高质量的视觉效果至关重要。然而&#xff0c;由于各种原因&#xff0c;我们有时会遇到模糊的照片。这时候&#xff0c;使用适当的软件来提高照片的清晰度就显得尤为重要。本文将介绍一些可以使模糊照片变清晰的软件&#xff0c;帮助…

Windows内存管理(二):内存架构 浅谈一二

《Windows内存管理&#xff08;一&#xff09;&#xff1a;Windows性能监视器(PerfMon)》 Windows内存管理是一个复杂的主题&#xff0c;涉及多个层次和组件。以下是一个分层的概述。 1、虚拟内存管理 Windows使用虚拟内存来给每个进程提供一个看似连续的内存空间&#xff0c…

20个城市公交线路数据分享,Shp+excel格式,2020年,城市发展、公共设施规划必备数据,已实现数据可视化

随着城市交通的不断发展&#xff0c;公交线路已经成为人们出行的重要方式之一。 公交线路数据和公交站点数据是GIS系统中的重要数据集之一。公交线路数据包括公交车辆行驶的路径和站点之间的连接信息&#xff0c;今天分享的就是部分城市的公交线路数据&#xff0c;始发站、终点…

Spring MVC(day1)

什么是MVC MVC是一种设计模式&#xff0c;将软件按照模型、视图、控制器来划分&#xff1a; M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为数据承载Bean&#xff1a;专门存储业务数据…

无法自动装配。找不到 ‘RabbitTemplate‘ 类型的 Bean

解决方案&#xff1a;把这个项目的spring-rabbit依赖的<scope>test</scope>删除并重新加载maven

WPF 基础入门(资源字典)

资源字典 每个Resources属性存储着一个资源字典集合。如果希望在多个项目之间共享资源的话&#xff0c;就可以创建一个资源字典。资源字段是一个简单的XAML文档&#xff0c;该文档就是用于存储资源的&#xff0c;可以通过右键项目->添加资源字典的方式来添加一个资源字典文件…

Python基础(二十二、自定义模块和包)

文章目录 一、自定义模块1.如何自定义模块并导入?2.__main__变量的功能3.注意事项 二、自定义包1.什么是Python的包?2.__init __.py文件的作用?3.__all__变量的作用?4.示例 三、自定义模块和自定义包的好处 一、自定义模块 1.如何自定义模块并导入? 在Python代码文件中正…

不通过微软商店进行安装 UWP 软件

参考&#xff1a; 不通过微软商店下载安装uwp应用_uwp应用只能去商店下载吗-CSDN博客离线下载和安装UWP(windows应用商店)软件 - 赵青青 - 博客园UWP程序安装正确步骤(例:华硕奥创安装错误200) - 哔哩哔哩 1 前往线上商店&#xff0c;搜索想要安装的应用。 以安装 Microsoft…

sonarqube配置本地扫描代码

一、本地maven设置setting文件&#xff1a; 1&#xff09;添加pluginGroup <pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups> 2&#xff09;添加profile&#xff1a; <profile><id>sonar</i…

python语言在web上的应用:如何节省服务器资源?

背景介绍​ 在web开发中的应用广泛​ 在web开发中的应用广泛。随着互联网的发展&#xff0c;web应用越来越普遍&#xff0c;而Python作为一种简洁、高效的编程语言&#xff0c;被广泛应用于web开发领域。Python提供了丰富的库和框架&#xff0c;如Django、Flask等&#xff0c…

C#,快速排序算法(Quick Sort)的非递归实现与数据可视化

排序算法是编程的基础。 常见的四种排序算法是&#xff1a;简单选择排序、冒泡排序、插入排序和快速排序。其中的快速排序的优势明显&#xff0c;一般使用递归方式实现&#xff0c;但遇到数据量大的情况则无法适用。实际工程中一般使用“非递归”方式实现。 快速排序(Quick Sor…

基于ssm的常见小儿疾病中医护理系统的设计+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本小儿疾病中医护理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…