Java基础 - 5 - 方法

一. 概述

方法是什么?

        方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用

方法的完整格式:

        修饰符 返回值类型 方法名(形参列表){

                方法体代码(需要执行的功能代码)

                return 返回值;

        }

public static void main(String[] args) {
    int rs = sum(10,20);
    System.out.println(rs);

    int rs2 = sum(20,30);
    System.out.println(rs2);
}

public static int sum(int a,int b){
    int c = a + b;
    return c;
}

方法如何执行?

        方法定义后,必须调用才可以跑起来,调用格式:方法名(……);

注:

        · 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据

        · 形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值

使用方法的好处?

        提高了代码的复用性和开发效率,让程序的逻辑更清晰

二. 方法的其他形式

方法定义时:需要按照方法解决的实际业务需求,来设计合理的方法形式解决问题

        1.方法是否需要接受数据处理?

        2.方法是否需要返回数据?

public static void main(String[] args) {
    //打印三行hello world
    printHello();
    //打印duo行hello world
    printHelloWorld(5);
}
// 无参数 无返回值的方法
public static void printHello(){
    for (int i = 0; i < 3; i++) {
        System.out.println("hello world");
    }
}
// 有参数 无返回值的方法
public static void printHelloWorld(int a){
    for (int i = 0; i < a; i++) {
        System.out.println("Hello World");
    }
}

注:

        如果方法不需要返回数据,返回值类型必须声明为void(无返回值声明),此时方法内部不可以使用return返回数据

        方法如果不需要接收数据,则不需要定义形参,且调用方法时也不可以传数据给方法了

三. 方法使用时的常见问题

        1.方法在类中的位置放前放后无所谓,但一个方法不能定义在另一个方法里面(不能嵌套

        2.方法的返回值类型为void(无返回值)时,方法内不能使用return返回数据;如果方法的返回值类型写了具体类型,方法内则必须使用return返回对应类型的数据

        3.return语句的下面,不能编写代码(属于无限代码)

        4.方法不调用就不会执行,调用方法时,传给方法的数据,必须严格匹配方法的参数情况

        5.调用有返回值的方法有三种方式:可以定义变量接收结果、直接输出调用、直接调用

        6.调用无返回值的方法只能直接调用

四. 方法的案例

设计方法的技巧:

        1.方法是否需要接收数据进行处理?需要则要定义形参列表

        2.方法是否需要返回数据?需要则要声明具体的返回值类型+return

        3.方法要处理的业务

4.1 计算1到n的和

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数字n(n>=1):");
    int n = sc.nextInt();
    System.out.println("1到n的和为:"+sum(n));
}
    
public static int sum(int n) {
    int n_sum = 0;
    for (int i = 1; i <= n; i++) {
        n_sum += i;
    }
    return n_sum;
}

4.2 判断一个整数是奇数还是偶数

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数字n:");
    int n = sc.nextInt();
    System.out.println("n是"+isodd(n));
}

public static String isodd(int n){
//    if(n%2==0){
//        return "偶数";
//    }else{
//        return "奇数";
//    }

    return n%2==0 ? "偶数" : "奇数";
}

五. 方法在计算机中的执行原理

        方法被调用的时候,是进入到栈内存中运行(栈:先进后出,方法在栈中执行完之后会被清理掉)

六. Java的参数传递机制

        Java的参数传递机制都是:值传递。所谓的值传递指的是在传输实参给方法的形参的时候,传输的是实参变量中存储的值的副本

实参:在方法内部定义的变量

形参:定义方法是(……)中所声明的参数

6.1 基本类型的参数传递

        基本类型的参数传递,传递的是存储的数据值

6.2  引用类型的参数传递

        引用类型的参数传递,传递的是存储的地址值        

6.2.1 引用类型参数传递的相关案例

1.输出一个int类型的数组内容,要求输出格式为[11,22,33,44,55]

public static void main(String[] args) {
    int[] arr = new int[]{11,22,33,44,55};
    printArray(arr);
    int[] arr2 = null;
    printArray(arr2);
    int[] arr3 ={}
    printArray(arr3);
}

public static void printArray(int[] arr){
    //处理空指针异常
    if(arr == null){
        System.out.println(arr);
        //return关键字的单独使用
        //return; 可以用在无返回值的方法中,作用是立即跳出并结束当前方法的执行
        return;
    }

    System.out.print("[");
    for (int i = 0; i < arr.length; i++) {
        //一般写法
        if(i != arr.length - 1){
            System.out.print(arr[i]+",");
        }else{
            System.out.print(arr[i]);
        }

        //高级写法
        //System.out.print(i!=(arr.length-1) ? arr[i]+"," : arr[i]+"]");
    }
    System.out.println("]");
}

2.比较两个int类型的数组是否一样

public static void main(String[] args) {
    int[] arr1 = new int[]{11,22,33,44,55};
    int[] arr2 = new int[]{11,22,33,44,55};
    System.out.println(isSame(arr1,arr2));
}

public static boolean isSame(int[] arr1, int[] arr2){
    //判断arr1和arr2是否都是null
    if(arr1 == null && arr2 ==null){
        return true; //相等
    }
    //判断arr1或arr2是否是null
    if(arr1 == null || arr2 ==null){
        return false; //相等
    }

    if(arr1.length != arr2.length){
        return false;
    }

    for (int i = 0; i < arr1.length; i++) {
        if(arr1[i] != arr2[i]){
            return false;
        }
    }
    return true;
}

七. 方法重载

  一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,这些方法就称为方法重载

注:

· 一个类中,只要一些方法的名称相同,形参列表不同,就是方法重载,其他(修饰符、返回值类型等)不考虑

· 形参列表不同是指:形参的个数、类型、顺序不同,不关心形参的名称

方法重载的应用场景:

        开发中需要为处理一类业务,提供多种解决方案,此时应该用方法重载

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值