自学内容网 自学内容网

疯狂Java讲义——第4章 流程控制与数组

目录

​编辑

一.流程控制

1.顺序结构

2.分支结构

(1).if条件语句

(2).switch语句


一.流程控制

1.顺序结构

任何编程语言中最常见的程序结构就是顺序结构,顺序结构就是从上到下逐行执行,中间没有任何判断和跳转

如果Main方法的多行代码之间没有任何流程控制,则程序总从上向下依次执行,排在前面的先执行,排在后面的后执行。

public class Order {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        int c=a+b;
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

2.分支结构

Java提供了两种常见的分支结构:if语句和switch语句

if语句使用布尔表表达式或布尔值作为分支条件来进行分支控制;

switch语句则用于对多个整型值进行匹配,从而实现分支控制;

(1).if条件语句

if语句使用布尔表达式或布尔值作为分支条件来进行分支控制;

if语句有以下三种形式:单分支结构,双分支结构,多分支结构

单分支结构的语法格式:
if (条件表达式) {
    语句体;
}


执行流程:条件为真进入执行代码,条件为假不进入不执行代码。
双分支结构的语法格式:
if (条件表达式) {
    语句体 1;
} else {
    语句体 2;
}

执行流程:条件为真进入 if 执行代码语句体 1,条件为假进入 else 执行代码语句体 2
多分支结构的语法格式:
if (条件表达式 1) {
    语句体 1;
} else if (条件表达式 2)
{
    语句体 2;
} else if (条件表达式 3)
{
    语句体 3;
}. . . 
else {
    语句体 n;
}

执行流程:条件为真进入if 执行代码语句体 1,条件为假进入 else if 并且判断条件是否为真,为真执行代码 语句体2,条件为假进 入 else 执行代码。
注意:前面都为假就执行 else 中的代码 

(2).switch语句

switch语句由一个控制表达式和多个case标签组成

switch(表达式){
    case 值 1:
        执行代码...;
        break;
    case 值 2:
        执行代码...;
        break; …
    case 值 n-1:
        执行代码...;
        break;
    default:
    执行代码 n;
}

分支的执行流程:
先执行表达式的值,再拿着这个值去与 case 后的值进行匹配。
与哪个 case 后的值匹配为 true 就执行哪个 case 块的代码,遇到 break 就跳出 switch 分支。
如果全部 case 后的值与之匹配都是 false,则执行 default 块的代码;

 示例:


public class CaseBlockTest
{
public static void main(String[] args)
{
// 声明变量season
var season = "秋天";
// 执行switch分支语句
switch (season)
{
case "春天", "夏天" -> {
System.out.println("春夏不是读书天.");
// 定义count变量,该变量仅在该case块中有效
int count = 20;
System.out.println(count);
}
case "秋天", "冬天" -> {
   System.out.println("秋多蚊蝇冬日冷.");
// 再次定义count变量,不会与前面的count变量冲突
int count = 30;
System.out.println(count);
}
default -> {
System.out.println("读书只好等明年!");
//System.out.println(count); // 报错,找不到count变量
}
}
//System.out.println(count); // 报错,找不到count变量
}
}

Java17的新式switch语句:

为了简化switch语句的写法,Java17引入了一种新的switch语句,同时还可作为表达式使用。

switch{
case value1->表达式、代码块
case value2、value3->表达式、代码块
···
case valueN->表达式、代码块
default->表达式、代码块
}

public class SwitchExprTest
{
public static void main(String[] args)
{
// 声明变量score,并为其赋值为'C'
var score = 'C';
// 将switch表达式的值赋值给变量
var judge = switch (score)
{
// case后的箭头后是一个表达式
case 'A', 'B' -> "成绩还不错,希望继续保持";
case 'C', 'D', 'F' -> "成绩不足,还需努力!";
default -> "成绩输入错误";
};
System.out.println(judge);

var judge2 = switch (score)
{
// case后的代码块有多条语句,使用yield返回值
case 'A', 'B' -> {
System.out.println("成绩还不错,希望继续保持");
yield "优良";
}
// case后的代码块有多条语句,使用yield返回值
case 'C', 'D', 'F' -> {
System.out.println("成绩不足,还需努力!");
yield "不足";
}
default -> "成绩输入错误";
};
System.out.println(judge2);

var judge3 = switch (score)
{
// case后的代码块有多条语句,使用yield返回值
case 'A', 'B':
System.out.println("成绩还不错,希望继续保持");
yield "优良";
// 传统case后即使只有一条语句,也需要使用yield返回值
case 'C', 'D', 'F':
yield "不足";
default:
yield "成绩输入错误";
};
System.out.println(judge3);
}
}

使用 switch 分支的几点注意事项:
表达式类型只能是 byte、short、int、char,JDK5 开始支持枚举,JDK7 开始支持 String、不支持 double、float、long
case 给出的值不允许重复,且只能是字面量,不能是变量
正常使用 switch 的时候,不要忘记写 break,否则会出现穿透现象
当存在多个 case 分支的代码相同时,可以把相同的代码放到一个 case 块中,其他的 case 块都通过穿透性穿透到该 case 块执行代码即可,这样可以简化代码。

if、switch 的比较,以及各自适合什么业务场景?
  • if 在功能上远远强大于 switch
  • 当前条件是区间的时候,应该使用 if 分支结构
  • 当条件是与一个一个的值比较的时候,switch 分支更合适:格式良好,性能较好,代码优雅

 (3).循环结构

for循环

for 循环:控制一段代码反复执行很多次。

for 循环语法格式:

for (初始化语句; 循环条件; 迭代语句) {
    循环体语句(重复执行的代码);
}

//例如:
// 输出 3 次 Hello World
for (int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}

while 循环:

初始化语句;
while (循环条件) {
    循环体语句(被重复执行的代码);
    迭代语句;
}

//例如:
int i = 0;
while (i < 3) {
    System.out.println("Hello World");
    i++;
}

do-while 循环

初始化语句;
do {
    循环体语句;
    迭代语句;
} while (循环条件);

//例如:
int i = 0;
do {
    System.out.println(“Hello World!");
    i++;
} while( i < 3);

三种循环的区别小结
for 循环 和 while 循环(先判断后执行); do...while (先执行后判断)
for 循环和 while 循环的执行流程是一模一样的,功能上无区别,for 能做的 while 也能做,反之亦然。
使用规范:如果已知循环次数建议使用 for 循环,如果不清楚要循环多少次建议使用while 循环。
其他区别:for 循环中,控制循环的变量只在循环中使用。while 循环中,控制循环的变量在循环后还可以继续使用

二.数组类型

数组是编程语言中最常见的一种数据结构,可用来存储多个数据,每个数组元素存放一个数据,通常可通过数组元素的索引来访问数组元素。

数组也是一种引用类型,例如int是一种基本类型。但int[ ]就是一个引用类型;

1.定义数组

后面的明天写!!!!!!!!!


原文地址:https://blog.csdn.net/qq_52409179/article/details/143514937

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!