java basic 06

153 阅读2分钟

day06 总结笔记

01-方法介绍

  • 介绍 : 方法 | 函数 (method) 一段具有独立功能的代码块, 不调用就不执行
  • 好处 :
    • 提高了代码的可阅读性
      • 体现 : 将原本挤在一起的臃肿代码, 按照功能进行分类管理
    • 提高了代码的复用性
      • 体现 : 写好的一个方法, 是可以进行多次调用
  • 问题 : 方法的出现是否可以提高程序的执行效率 ?
    • 不能 !

02-方法的通用定义格式

public static 返回值类型 方法名 (参数列表) {
	方法体;
	return 结果数据;
}

public static : (修饰符)目前来说, 暂时记忆
返回值类型 : 跟return返回的结果有关
方法名 : 见名知意, 小驼峰命名法
参数列表 : 方法运行之前, 需要的材料
方法体 : 方法中真正执行的逻辑代码
return :
			1. 用于结束方法
			2. 用于将结果返还给调用者.
  • 方法的设计思路
1. 参数

		思考: 自己这个方法, 内部使用的数据, 是否有灵活性的要求?
				有 : 声明参数
				没有 : 不需要声明参数
		
        需求1: 设计一个方法, 能够打印10次HelloWorld ---> 不需要参数
        需求2: 设计一个方法, 能够从3个整数中求出最大值 ---> 要参数
        需求3: 设计一个方法, 能够对整数数组求和 ---> 要参数
        
        ----------------------------------------------------
        
        思考: 要参数的话, 要几个? 要什么类型的 ?
        
        需求1: 设计一个方法, 能够从3个整数中求出最大值
        			数量: 3个
        			类型: int类型
        			int a, int b, int c
        			
		需求2: 设计一个方法, 能够对整数数组求和
        			数量: 1个
        			类型: 数组类型
        			int[] arr
						

2. 返回值

		先正常编写方法逻辑
		
		观察: 自己这个方法是否有结果产生
				
				有 : 通过return语句返回, 并将void修改为对应的数据类型
				
				没有 : 返回值类型写void (标识此方法没有结果返回)

03-方法的调用

  • 带返回值的
public static int getMax(int a, int b){
	int max = a > b ? a : b;
	return max;
}
1. 单独调用(不推荐)

	getMax(10,20);
	
	不报错, 但是对于方法返回的结果, 并没有接收, 数据就丢失了
2. 赋值调用 (推荐)

	拿到了真实的数据, 数据在手, 干什么都行

	int result = getMax(10,20);
	
	System.out.println(result);
	
	if(result % 2 == 0){
	
	}
	
	for(int i = 1; i <= result; i++){
	
	}
3. 输出调用(偶尔)

	用户以后肯定看不到控制台
	
	偶尔: 写好了一个方法, 测试这个方法的正确性
	
	System.out.println(getMax(10,20));
  • 不带返回值的
public static void print(){
	System.out.println("HelloWorld");
}
只能单独调用

print();

04-方法的常见问题

1. 方法不调用就不执行
    
2. 方法与方法之间是平级关系, 不允许嵌套定义
    
3. 方法的编写顺序和执行顺序无关, 要想梳理执行顺序, 就看调用顺序
    
4. 方法的返回值类型如果是void, 表示此方法没有返回值, 可以省略return语句不写
        如果非要写的话, 只能写成return;

5. return语句下面不能写代码, 因为执行不到, 属于无效代码
    
6. 如果一个方法有具体的返回值类型, 一定要通过return语句带回结果, 无论什么情况下

05-方法重载 (Overload)

  • 介绍 : 方法与方法之间的一种关系
  • 目标1 : 能够独立识别出方法与方法之间是否是正确的重载
在同一个类中, 方法名相同, 参数不同, 与返回值无关
	参数不同: 1. 个数不同  2. 类型不同  3. 顺序不同
  • 目标2 : 能够理解方法重载带来的好处
- 不需要记忆过多繁琐的方法名字了

- 假设没有方法重载

		printInt(10);
		printDouble(12.3);
		printString("abc");
		
- 有方法重载 :

		println(10);
		println(12.3);
		println("abc");

06-方法练习

package com.itheima.test;

public class MethodTest4 {
    /*
        需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的
        例如:[11, 22, 33, 44, 55]

        思路: 打印数组元素的时候, 判断当前元素是否是最后一个
                    不是最后一个 : 数组元素 + ", "
                    是最后一个 : 数组元素 + "]"
     */

    /*

        注意: 方法这样设计, 该方法只能服务一个数组

        public static void printArray() {
            int[] arr = {11, 22, 33, 44, 55};

            System.out.print("[");

            for (int i = 0; i < arr.length; i++) {
                // 如果 i (索引) 变化到了最大的索引, 代表是最后一个
                if (i == arr.length - 1) {
                    System.out.print(arr[i] + "]");
                } else {
                    // 不是最后一个
                    System.out.print(arr[i] + ", ");
                }
            }
        }
     */


    public static void main(String[] args) {

        int[] arr = {11, 22, 33, 44, 55};

        // 抽取方法的快捷键 : 鼠标选中要抽取的代码, ctrl + alt + M

        printArray(arr);

    }

    public static void printArray(int[] arr) {
        System.out.print("[");

        for (int i = 0; i < arr.length; i++) {
            // 如果 i (索引) 变化到了最大的索引, 代表是最后一个
            if (i == arr.length - 1) {
                System.out.println(arr[i] + "]");
            } else {
                // 不是最后一个
                System.out.print(arr[i] + ", ");
            }
        }
    }

}

package com.itheima.test;

public class MethodTest5 {
    public static void main(String[] args) {

        int[] arr = {11, 22, 33, 44, 55};

        int max = getMax(arr);
        System.out.println("最大值为:" + max);
        
        int min = getMin(arr);
		System.out.println("最小值为:" + min);
        
    }

    /*
        需求: 设计一个方法, 从数组中找出最大值
        参数: 我要从哪一个数组中找最大值, 数组不明确
     */
    public static int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

    public static int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }
}