Java从入门到精通笔记六

01 方法的概述

1、方法是什么?
方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用
2、使用方法的好处是?
提高了代码的复用性
让程序的逻辑更清晰

package com.itheima.type;

public class TypeDemo1 {
    public static void main(String[] args) {
        int c1 = sum(10,30);
        System.out.println(c1);

        int c2 = sum(10,50);
        System.out.println(c2);
    }
    public static int sum(int a, int b) {
        int c = a + b;
        return c;
    }
}

02 方法定义格式、常见问题

1、方法的完整格式是什么样的?
在这里插入图片描述
2、方法要执行必须怎么办,如何进行?
必须进行调用;调用格式:方法名称(…)

package com.itheima.type;

public class TypeDemo1 {
    public static void main(String[] args) {
        //学习方法的完整定义格式,并理解其调用和执行流程
        int rs = add(100,200);
        System.out.println("和是:" + rs);
    }
    public static int add(int a, int b){
        int c = a + b;
        return c;
    }
}

3、如果方法不需要返回结果,不需要接收参数,应该怎么办,要注意什么?

  • 方法不需要返回结果,则申明返回值类型为void
  • 方法不需要参数,则形参列表可以不写
  • 方法没有申明返回值类型,内部不能使用return返回数据
  • 方法如果没有形参列表,调用的时候则不能传入参数值,否则报错
package com.itheima.type;

public class TypeDemo1 {
    public static void main(String[] args) {
        print();
        System.out.println("---------");
        print();
    }
    public static void print(){
        for (int i = 0; i < 3; i++) {
            System.out.println("HelloWord");
        }
    }
}

4、方法常见问题

  • 方法的编写顺序无所谓
  • 方法与方法之间是平级关系,不能嵌套定义
  • 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据
  • return语句下面,不能编写代码,因为永远执行不到,属于无效的代码
  • 方法不调用就不执行, 调用时必须严格匹配方法的参数情况
  • 有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用

03 方法案例:求和、判断奇偶数、求最值

1、计算1-n的和返回

package com.itheima.type;

public class TypeDemo1 {
    public static void main(String[] args) {
        System.out.println("1-5的和是:" + sum(5));
        System.out.println("----------------");
        System.out.println("1-5的和是:" + sum(100));
    }
    public static int sum(int n){
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += i;
        }
        return sum;
    }
}

2、判断整数是奇数还是偶数

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        System.out.print("请输入您的数据:");
        Scanner sc = new Scanner(System.in);
        int data = sc.nextInt();
        check(data);
    }
    public static void check(int number){
        if(number % 2 == 0){
            System.out.println("该数是偶数");
        }else{
            System.out.println("该数是奇数");
        }
    }
}

3、数组求最值改方法实现

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        System.out.print("请输入数组的长度:");
        Scanner rs = new Scanner(System.in);
        int length = rs.nextInt();
        int[] arr = new int[length];
        System.out.print("请输入该数组的数据:");
        for (int i = 0; i < arr.length; i++) {
            arr[i] = rs.nextInt();
        }
        int max = getArrayMaxData(arr);
        System.out.println("最大的数据是:" + max);
    }
    public static int getArrayMaxData(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i] > max) max = arr[i];
        }
        return max;
    }
}

在这里插入图片描述

04 方法的内存原理

1、方法的运行区域在哪里?
栈内存
在这里插入图片描述
在这里插入图片描述

05 方法参数传递机制:值传递

1、形参和实参各指什么?
形参:以方法为例,就是方法定义时的变量
实参:在方法内部定义的变量
2. Java的参数传递机制是什么样的?
值传递,传输的是实参存储的值

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        int a = 10;
        change(a);
        System.out.println(a); //10
    }
    public static void change(int a){
        System.out.println(a); //10
        a = 20;
        System.out.println(a); //20
    }
}

3、基本类型和引用类型的参数在传递的时候有什么不同?
都是值传递
基本类型的参数传输存储的数据值
引用类型的参数传输存储的地址值

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        int[] arrs = new int[]{10, 20, 30};
        change(arrs);
        System.out.println(arrs[1]); //222
    }
    public static void change(int[] arrs){
        System.out.println("方法内部2:" + arrs[1]); //20
        arrs[1] = 222;
        System.out.println("方法内部2:" + arrs[1]); //222
    }
}

06 方法参数传递的案例

1、打印整型数组内容

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        int[] arrs1 = {10, 20, 30};
        printArray(arrs1);
        System.out.println("---------------");
        int[] arrs2 = {30, 40, 50};
        printArray(arrs2);
        System.out.println("---------------");
        int[] numbers = {};
        printArray(numbers);
    }
    public static void printArray(int[] arr){
        System.out.print("[");
        if(arr.length > 0 && arr != null){
            for (int i = 0; i < arr.length; i++) {
                System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ",");
            }
        }
        System.out.println("]");

    }
}

2、从数组中查询指定元素的索引

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        int[] arrs1 = {11, 22, 33, 44, 55};
        Scanner rc = new Scanner(System.in);
        System.out.print("请输入您的数据:");
        int number = rc.nextInt();
        int res = findArrayIndex(arrs1, number);
        if(res != -1) System.out.println("您要查询的数组索引是:" + res);
        else System.out.println("没有该元素!");
    }
    public static int findArrayIndex(int[] arr, int n){
            for (int i = 0; i < arr.length; i++) {
                if(arr[i] == n) return i;
            }
            return -1;
    }
}

3、比较2个数组是否一样

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        int[] arrs1 = {10, 220, 30};
        int[] arrs2 = {10, 20, 30};
        System.out.println(compare(arrs1, arrs2));
    }
    public static boolean compare(int[] arr1, int[] arr2){
            if(arr1.length == arr2.length){
                for (int i = 0; i < arr1.length; i++) {
                    if(arr1[i] != arr2[i]) return false;
                }
                return true;
            }else{
                return false;
            }
    }
}

07 方法重载、return关键字

1、方法重载是什么样的?
同一个类中,多个方法的名称相同,形参列表不同
2、使用方法重载的好处 ?
对于相似功能的业务场景:可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计

package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        fire();
        fire("岛国");
        fire("岛国", 1000);
    }
    public static void fire(){
        fire("米国");
    }
    public static void fire(String location){
        fire(location, 1);
    }
    public static void fire(String location, int number){
        System.out.println("默认发送" + number + "枚武器给" + location +"~~~");
    }
}

3、方法重载的识别技巧

  • 只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!(如:修饰符,返回值类型都无所谓)
  • 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    //新方法
    public static void open(){}
    //重载方法
    public static void open(int a, int b){}
    //重载方法
    public static void open(double a, int b){}
    //重载方法
    public static void open(int a, double b){}
    //重复方法
//    public static void open(int i, double d){}
    //新方法
    public static void OPEN(){}
}

4、如果要直接结束当前方法的执行,怎么解决?

  • return; 跳出并立即结束所在方法的执行
  • break; 跳出并结束当前所在循环的执行
  • continue; 结束当前所在循环的当次继续,进入下一次执行
package com.itheima.type;

import java.util.Scanner;

public class TypeDemo1 {
    public static void main(String[] args) {
        System.out.println("main开始。。");
        chu(10, 0);
        System.out.println("main结束。。");
        chu(10, 2);
    }
    public static void chu(int a, int b){
        if(b == 0){
            System.out.println("您输入的数据有误,除数不能是0!");
            return;
        }
        int c = a / b;
        System.out.println("结果是:" + c);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白*进阶ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值