初识Java—(八)流程控制(1)(java8入门教程)
wptr33 2024-11-16 01:27 37 浏览
任何一门编程语言都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。
Java中的分支结构语句为:if、switch
Java中的循环结构语句为:while、do while、for、foreach
Java中提供了break、continue来控制程序的循环结构
这里用到Scanner类。这里简单一说,后续很详细介绍。
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
4.1 顺序结构
顺序结构就是程序从上到下逐行的执行,中间没有任何判断和跳转。
举例1:
package com.langsin.test;
public class TestCar {
public static void main(String[] args) {
int a = 3;
int b = 5;
int c = a+b;
System.out.println("输出结果:"+c);
}
}
4.2方法以及剖析类
方法就是一段可重复调用的代码段,例如,有某段长度约100行的代码,要在多个地方使用此段代码,如果在各个地方都重复编写此部分代码,则肯定会比较麻烦,而且此部分代码如果进行修改,也比较困难,那么此时可以将些部分代码定义成一个方法,以供程序反复调用。方法在有些书籍称为函数,这两者本身并没有什么区别,是同样的概念,只是称呼方式不一样而已。
定义方法的定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
函数体;
return 返回值;
}
方法格式解释
(1)修饰符:比较多,后面会详细介绍。目前public static
(2)返回值类型:用于限定返回值的数据类型
(3)方法名:一个名称,为了方便我们调用方法
(4)参数类型:限定调用方法时传入参数的数据类型
(5)参数名:是一个变量,接收调用方法时传入的参数
(6)方法体:完成功能的代码
(7)return:结束方法以及返回方法指定类型的值
(8)返回值 程序被return带回的结果,返回给调用者
要特别注意的是,如果不需要传递参数到方法中,只要将括号写出,不必填入任何内容。此外,如果方法没有返回值,则在返回值类型处要明确写出void,此时,在方法中的return语句可以省略。方法执行完后无论是否存在返回值都将返回到方法的调用处并向下继续执行。
举例1:
package com.langsin.test;
public class TestCar {
public int getNum(int a,int b){
return a+b;
}
Public static void main(String[] args) {
TestCar test = new TestCar();
int result = test.getNum(5, 6);
System.out.println("计算后的结果为:"+result);
}
}
4.3 分支结构
Java语言使用if语句和switch语句来进行分支控制,其中if语句使用boolean表达式或boolean值来作为分支条件进行分支控制;switch语句则用于对多个数值进行匹配,从而实现分支。
4.2.1 if条件语句
if语句格式1 :
if(比较表达式) {
语句体;
}
执行流程:
先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
if语句格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
首先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体1;
如果是false,就执行语句体2;
注意:else后面是没有比较表达式的,只有if后面有。
if语句的格式3:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
...
else {
语句体n+1;
}
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
...
如果都是false,就执行语句体n+1
if语句的注意事项:
A:比较表达式无论简单还是复杂,结果必须是boolean类型
B:if语句控制的语句体如果是一条语句,大括号可以省略;
如果是多条语句,就不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号
举例1:
package com.langsin.test;
public class TestCar {
public static void main(String[] args) {
boolean flag = 5>3;
//使用变量,此种方式为常用方式
if(flag){
System.out.println("条件为真执行");
}
//使用常量
if(true){
System.out.println("使用常量,此代码永远会被执行");
}
//使用表达式,此种方式为常见使用方式
if(5>3){
System.out.println("表达式的结果为true时,代码会被执行");
}
//完整的if分支结构
int a = 5;
int b = 8;
if(a>b){
System.out.println("a的值大于b的值");
}else{
System.out.println("a的值不大于b的值");
}
//分支的嵌套使用
if(a>b){
if(b>0){
System.out.println("a的值大于b的值,并且b的值大于0");
}
}
//此代码段等价于上面的代码
if(a>b && b>0){
System.out.println("a的值大于b的值,并且b的值大于0");
}
//完整结构下的嵌套
if(a>b){
if(b>0){
System.out.println("a的值大于b的值,并且b的值大于0");
}else{
System.out.println("a的值大于b的值,但是b的值不大于0");
}
}else{
if(a>0){
System.out.println("a的值不大于b,并且a的值大于0");
}else{
System.out.println("a的值不大于b,并且a的值不大于0");
}
}
//if语句串联使用
if(a>b){
System.out.println("a的值大于b的值");
}else if(a>0){
System.out.println("a的值不大于b的值,并且a的值大于0");
}
}
}
4.2.2 switch分支语句
switch语句由一个控制表达式和多个case标签组成,表达式的数据类型只能是byte、short、int、char四个整数类型和枚举类型。JDK 1.7开始,可以接收String类型的值 。
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式的解释:
switch:表示这是switch选择结构
表达式:这个地方的取值是有限定的
byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面跟的是要和表达式进行比较的值,这个值是常量,而且还得是唯一
语句体:要执行的代码
break:表示中断,结束的意思,可以控制switch语句的结束。
default:当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。
举例1:
package com.langsin.test;
public class TestCar {
public static void main(String[] args) {
int a = 1;
switch (a) {
case 1:
System.out.println("当key值为1时的运行代码段");
int x = 2;
int y = 3;
int z = x + y;
System.out.println("计算加法后的结果:"+z);
break;
case 2:
System.out.println("当key值为2时的运行代码段");
int x1 = 2;
int y1 = 3;
int z1 = x1 - y1;
System.out.println("计算减法后的结果:"+z1);
break;
default:
System.out.println("当key值不符合任意条件时,默认执行的代码段");
break;
}
}
}
switch语句的注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
A,B,C,D
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
相关推荐
- 第 28 章:核心功能 SQL 查询 - PostgreSQL入门
-
欢迎来到我们史诗级教程的最终章!在上一章,我们成功地构建了博客系统的数据库骨架。现在,这个结构精良的数据库正静静地等待着我们去使用它。...
- postgresql的6种索引介绍_postgresql默认用户名和密码
-
postgresql几种索引PostgreSQL支持多种索引类型,每种索引的设计原理、适用场景和优缺点各有不同。以下是对主要索引类型的详细介绍:...
- 第 20 章:索引与性能优化 - PostgreSQL入门
-
到目前为止,我们已经学习了如何设计表、保证数据完整性、以及如何用各种方式查询数据。但当我们的表从几十行增长到几百万、甚至上亿行时,一个之前只需要0.1秒的查询,可能会变成需要几分钟甚至几小时的“灾...
- PostgreSQL 主从复制 完整指南_主从复制mysql
-
PostgreSQL主从复制(StreamingReplication)完整指南PostgreSQL主从复制是一种实时同步数据的机制,可以实现高可用性(HA)、读写分离和负载均衡。其...
- PostgreSQL监控神器,千万注意这5大关键指标!
-
PostgreSQL监控神器,千万注意这5大关键指标!在当今数据驱动的业务环境中,数据库的性能和稳定性直接关系到企业的运营效率与用户体验。PostgreSQL作为一款功能强大的开源关系型数据库,被广泛...
- Retool 如何升级主应用 4TB 的 PostgreSQL 数据库
-
本文最初发布于Retool官方博客。...
- PostgreSQL查询计划_postgresql查询计划中的cost组成
-
深入解析PostgreSQL查询计划:优化性能的关键在数据库管理系统中,查询计划是执行SQL查询时的关键组成部分。PostgreSQL作为一款功能强大的开源关系型数据库,其查询计划的生成与优化对于提升...
- 第 27 章:数据库与表结构实现 - PostgreSQL入门
-
在上一章,我们已经绘制好了博客系统的宏伟蓝图。现在,是时候戴上安全帽,化身“建筑工程师”,将图纸上的设计一砖一瓦地搭建成真实的数据库结构了。...
- PostgreSQL事务处理_postgresql时区问题
-
PostgreSQL事务处理:原理、应用与优化引言...
- 第 14 章:集合运算 (UNION, INTERSECT, EXCEPT) - PostgreSQL入门
-
在之前的章节里,我们所有的操作(JOIN...
- PostgreSQL 安装指南及日常使用_postgresql 11安装
-
PostgreSQL安装与日常使用PostgreSQL是一款功能强大、开源的对象关系型数据库,支持高级SQL标准、扩展功能、事务完整性和高并发。本指南涵盖安装、配置、日常使用、性能优化、常见...
- 第 23 章:函数与存储过程 (PL/pgSQL) - PostgreSQL入门
-
到目前为止,我们与数据库的交互方式都是从外部客户端(如psql...
- PostgreSQL是不是你的下一个JSON数据库?
-
根据Betteridge定律(任何头条的设问句可以用一个词来回答:不是),除非你的JSON数据很少修改,并且查询很多。最新版的PostgreSQL添加更多对JSON的支持,我们曾经问过PostgreS...
- "揭秘PostgreSQL:你必须掌握的数据类型全解析!"
-
揭秘PostgreSQL:你必须掌握的数据类型全解析!在数据库管理系统中,PostgreSQL以其强大的功能和稳定性而著称。为了充分发挥其性能,理解并熟练掌握其数据类型是至关重要的。本文将深入探讨Po...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
程序员的开源月刊《HelloGitHub》第 71 期
-
Java面试必考问题:什么是乐观锁与悲观锁
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
如何将AI助手接入微信(打开ai手机助手)
-
redission YYDS spring boot redission 使用
-
SparkSQL——DataFrame的创建与使用
-
一文带你了解Redis与Memcached? redis与memcached的区别
-
如何利用Redis进行事务处理呢? 如何利用redis进行事务处理呢英文
-
- 最近发表
-
- 第 28 章:核心功能 SQL 查询 - PostgreSQL入门
- postgresql的6种索引介绍_postgresql默认用户名和密码
- 第 20 章:索引与性能优化 - PostgreSQL入门
- PostgreSQL 主从复制 完整指南_主从复制mysql
- PostgreSQL监控神器,千万注意这5大关键指标!
- Retool 如何升级主应用 4TB 的 PostgreSQL 数据库
- PostgreSQL查询计划_postgresql查询计划中的cost组成
- 第 27 章:数据库与表结构实现 - PostgreSQL入门
- 谁帮我看看,为啥我的PostgreSQL查询速度这么慢???
- PostgreSQL事务处理_postgresql时区问题
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)