从零开始学Java–day04–流程控制语句(二)&方法
文章目录
一、流程控制语句
1.死循环
死循环:在程序中无法通过靠自身控制终止的循环
分类:
for语句的死循环
for ( ; ; ) {
循环体语句;
}
while语句的死循环
while (true) {
循环体语句;
}
(补充)
- for语句的死循环执行效率优于while语句的死循环,在编写算法,设计模式,框架,计算机编程语言等,推荐使用for语句的死循环格;
- 在实际业务需求开发过程中,选择while语句的死循环,while语句的死循环代码阅读性更强,更容易理解;
2.嵌套循环
如果把 环语句放在另外一个循环语句的循环体中,那么就可以形成嵌套循环,嵌套循环既可以是 for 循环语句的嵌套,也可以是 while 循环语句的嵌套和do…while循环语句的嵌套……即各种类型的循环语句都可以作为外层循环,也可以作为内层循环;但常规的嵌套循环一般指代"for循环语句的嵌套"。
for语句的嵌套循环格式
for (外层循环的初始化语句;外层循环的循环条件语句;外层循环的迭代语句) {
for (内层循环的初始化语句;内层循环的循环条件语句;内层循环的迭代语句) {
内层循环的循环体语句;
}
}
二、方法
1.概念
方法是面向对象部分中类或对象的行为功能的抽象,是类或对象最重要的组成部分。但从功能上来看,方法就是封装特殊功能的代码块,我们可以将main方法中多次重复操作的功能性代码抽取出来,封装到方法中,以便可以重复使用。需要注意的是,Java中的方法不能独立存在,所有的方法都必须定义在类中或接口中。
方法的优点
- 提高代码的复用性,减少代码的书写量,从而提高开发效率。
- 将程序中每个功能性的代码进行独立,从而降低代码的耦合性。
2.定义方法的格式
修饰符 返回值类型 方法名 (形参类型1 形参名1 ,形参类型2 形参名2 , ...... ,形参类型n 形参名n)
{
方法体;
return 返回值;
}
-修饰符:目前没有学习修饰符,暂时用 public static 固定写法进行替代;
-返回值类型:方法运行结果(返回值)的数据类型,方法执行完毕后将结果数据返回到调用者方法;
-方法名:给方法起的名字;
-():形参列表,方法在执行的过程中需要使用调用者方法中的数据时,因为作用域的原因无法直接使用,需要
通过参数传递的方式将数据传递过来;
-无参数:()形参列表中什么都不写
-方法体:在原有程序中抽取的特殊功能代码;
3.定义方法的两个明确
返回值类型:明确方法返回值的数据类型
形参列表:明确形参列表中需要使用调用者方法中几个数据;明确每个数据的数据类型分别是什么
4.方法调用
方法的特点:
不调用,不执行
方法的调用格式
-
如果调用属于类的方法(暂时没有学)
类名.方法名(实参);
-
如果调用属于对象的方法(暂时没有学)
对象名.方法名(实参);
-
如果调用同一个类中的方法
直接调用,格式如下:方法名(实参);
-
输出调用,格式如下:
System.out.println(方法名(实参));
-
赋值调用,格式如下:
数据类型 变量名 = 方法名(实参);
形式参数和实际参数
形式参数:在定义方法时方法名后面()中的变量称为形式参数(简称形参)。
实际参数:在调用方法时方法名后面()中的参数称为实际参数(简称实参)。
代码如下(示例):
// 需求:定义方法实现两个整数的求和计算
public class Demo {
public static void main(String[] args) {
// 直接调用
// getSum(3,4);
// 输出调用
// System.out.println(getSum(3,4));
// 赋值调用
int sum = getSum(3,4);//通过getSum(3,4)找到同一个类中的getSum(int a, intb),代码从第10行,直接跳到第20行,同时将3和4一起带过去
System.out.println("sum = " + sum);
}
/*
定义计算两个整数求和的方法
两个明确:
返回值类型:int
形参列表:int a,int b
*/
public static int getSum(int a, int b) { //
return a + b;
}
}
5.void关键字
- void关键字:方法没有返回值
- void关键字注意事项:
1.在方法没有合适的返回值的时候,定义方法时返回值类型的位置不能什么都不写,需要用到void关键字进行占位;
2.当方法的返回值类型是void时,调用的方式只能是直接调用
-方法返回值类型为void时,只能使用直接调用
-方法返回值类型不是void时,推荐使用赋值调用
3.当方法的返回值类型是void时,方法后面的return关键字可以省略不写
6.方法的重载
- 方法重载:在同一个类中(或者子父类继承关系中),出现了方法名相同,形参列表不同的现象
- 重载的特点
1.必须在同一个类中(或者子父类继承关系中)
2.方法名必须相同
3.形参列表必须不同(至少满足以下一点)
①形参列表中的数据类型不同
②形参列表中形参个数不同
③形参列表中数据类型的顺序不同
代码如下(示例):
public class Demo {
public static void main (String[] args) {
}
public static void getSum (int a , int b) {}
public static void getSum (int a , double b) {}
public static int getSum (double a , int b) {
return 0;
}
public static void getSum (double a , double b) {}
public static void getSum (int a , int b , int c) {}
}
6.方法的递归
- 递归:指在当前方法内调用自己的这种现象。
- 递归的分类:
递归分为两种,直接递归和间接递归。
直接递归称为方法自身调用自己。
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
“求1到指定数之前的累加和”
代码如下:
// 需求:求1到指定数之前的累加和
public class MethodDemo05 {
public static void main(String[] args) {
//计算1~num的和,使用递归完成
int num = 5;
// 调用求和的方法
int sum = getSum(num);
// 输出结果
System.out.println(sum);
}
/*
通过递归算法实现.
参数列表:int
返回值类型: int
*/
public static int getSum(int num) {
/*
num为1时,方法返回1,
相当于是方法的出口,num总有是1的情况
*/
if(num == 1){
return 1;
}
/*
num不为1时,方法返回 num +(num-1)的累和
递归调用getSum方法
*/
return num + getSum(num-1);
}
}
小白求关注!!! 小白求关注!!! 小白求关注!!! (重要的事情说三遍)