posts - 206,  comments - 26,  views - 17万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

七、程序流程控制

判断结构

 if else

注意事项:
A.if语句的{}是可以省略的,但是如果省略只能控制下面的一行代码,如果想控制多行代码,必须有{}

选择结构

格式:
switch(表达式)
{
  case 取值1:
  执行语句;
  break;


  case 取值2:
  执行语句;
  break;


  default:
  执行语句;
  break;
}

表达式:是一个常量或者变量,类型可以是:byte,short,int,char
jdk1.5以后支持枚举
jdk1.7以后支持String

 

注意事项:
A.break可以省略码?
break可以省略,但是会执行后面case里的代码,直到遇见break结束或者执行完后面所有case(default)中代码然后结束.

最后一行可以省略break.


B.default可以放在其他位置吗?
可以放在其他的位置,但是就算是放到第一行,也是最后所有case都不成立才执行
default放在其他行,是不可以省略break的
C.case可以重复吗?
当case重复的时候会出现错误:标签重复

循环结构

  (1).循环的组成
A:循环体,就是要做的事情。
B:初始化条件。一般定义的是一个初始变量
C:判断条件。用于控制循环的结束。
D:控制条件。用于控制变量的变化。一般都是一个++/--操作。
  (2)循环的分类:
A:for


for(初始化条件;判断条件;控制条件)
{
循环体;
}

执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。

for循环的注意事项:
1、变量作用域问题:
  如果后边要使用这个变量,需要定义在for循环前
  如果后边不使用这个变量,需要定义在for循环中
2、第一个表达式可以放置在循环体前,可以为空
3、第三个表达式可以放置在循环体中,可以为空
4、第二个表达式可以为空,不报错,但是为死循环。除非特殊业务或算法需求,否则不会出现该种情况

B:while


初始化条件;
while(判断条件)
{
循环体;
控制条件;
}

执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。

 

 

C:do...while
初始化条件;
do{
循环体;
控制条件;
}while(判断条件);

执行流程:
a:先执行初始化条件;
b:执行循环体和控制条件;
c:执行判断条件
d:根据返回值
true:返回b。
false:就结束循环。

注意:
a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
b:do...while循环至少执行一次循环体。

  (3)break和continue

break:
作用:跳出整个循环,不再进行循环,结束switch语句

continue:
作用:跳出当前这次循环,继续下一次循环,整个循环不结束

注意事项:
在跳出循环关键字后边,不要写其他语句,因为永远不会执行到,这样对于java虚拟机来说是没有意义的。会报错。

  (4)如何退出嵌套循环:

当存在循环嵌套时,break语句跳出的为当前的循环,不会跳出所在循环的外层循环

如果我们想在内存循环直接跳出外层循环的话,可以使用标号

标号:
为循环起一个名字,或者叫做为循环做一个标记,可以通过break 标记达到直接跳出该标记循环的目的。

标签名:

for(){
  for(){
    if()
      {
        break 标签名;
      }
  }
}

1
2
3
4
5
6
7
8
9
out:for(int j = 0; j<b; j++){
    inner:for(int i = 0; i<a;i++)
    {
        System.out.print("*");
        if(i==2)
            break out;
    }
    System.out.println();
}

  应用场景

if语句:如果是一个范围的判断,boolean类型的表达式的判断,几个数据的判断。
switch语句:几个数据的判断。一般这种情况,有限选择switch。
for语句:如果次数或者范围特别明确。(水仙花)
while语句:如果次数或者范围不明确。(珠穆朗玛峰)

八. 函数

(1)定义在类中,可以独立运行,完成独立功能,1、提高了代码的复用性 2、简化了开发

 

(2)函数的格式:
修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)
{
  函数体;
  reutrn 返回值;
}

A:修饰符 public static
B:返回值类型 根据需求,定义返回值类型
C:函数名 其实就是函数的名称,方便我们调用。符合小驼峰式命名规则。
D:参数
形参类型 数据类型
形式参数 就是接收实际参数的变量
实际参数 就是实际参与操作的变量(常量)
E:函数体 就是按照正常的逻辑完成功能的代码。
F:返回值 就是程序的最终结果

G:return 返回值 哪里调用程序,return就把结果返回到哪里。

如果返回值为void则不需要显示地写出return

在有返回值的方法中,如果有条件的话,每种条件都需要有return语句,否则会报错"缺少返回语句"



(3)函数的特点:
A:函数与函数之间是平级关系。不能在函数中定义函数。
B:运行特点 函数只有被调用才执行。

(4)函数的调用
1、函数调用顺序与定义顺序无关
2、可以多层调用
3、具有返回值的函数,我们调用都会将值赋值给一个变量
4、单独调用一个函数时,通常这个函数是没有返回值的。
(5)函数重载

方法重载:
规则:方法名相同,但是参数不同,与返回值无关

重载方法在调用时:
先寻找最符合参数类型的方法,如果没有完全符合的,寻找接近的参数类型的方法 ,符合隐式转换的规律
请注意:
参数是有顺序的,必须按照顺序,判断形参的赋值

举例:
public static int sum(int a,int b){...}
public static int sum(int a,int b,int c){...}
public static int sum(float a,float b){...}

九.数组

(1)数组是存储同一种类型的多个元素的容器。
(2)好处:数组中的元素会被自动从0开始编号,方便我们获取。

(3)定义格式:

数组定义格式第一种方式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
int[] arr = new int[5];

数组定义的第二种方式:
int[] arr = new int[]{3,5,1,7};
数组定义的第三种方式://隐含了new的关键字
int[] arr = {3,5,1,7};
有部分情况第三种定义方式无法定义!!
二维数组\对象封装

推荐使用:int[] arr = new int[3];和nt[] arr = {1,2,3};

(4)操作:

数组的索引。
数组的长度。数组名.length

数组常见的两种异常:
1、数组索引(角标,脚标,编号)越界异常:没有这个索引还去访问。ArrayIndexOutOfBoundsException
2、空指针异常:变量没有指向一个内存地址(实例对象)。NullPointerException

(5)二维数组
格式:
A:int[][] arr = new int[3][2];
B:int[][] arr = new int[3][];
C:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};

posted on   努力--坚持  阅读(179)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示