Java学习笔记(八)—— 方法

方法的定义和调用

  • 对一个功能进行提取,提取出一段代码,这就是一个方法
  • 方法和方法是并列的关系,注意不要在main方法中写方法

方法的定义格式

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

方法的定义与调用实例

import java.util.Scanner;

public class Method_test1{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入第一个整数:");
        int num1 = sc.nextInt();
        System.out.print("请输入第二个整数:");
        int num2 = sc.nextInt();
        study(num1,num2); // 也可以直接传入实参,例如 study(10,25);
    }
    public static void study(int num1,int num2){ // 形参
        int sum = 0;
        sum += num1;
        sum += num2;
        System.out.println("两数的和为"+sum);
    }
}

要点

  • 如果方法有返回值的话:return + 返回值
  • 方法不需要返回值的话:return可以省略不写,并且方法的返回值类型为 void
  • 一般使用不确定的因素当做方法的形参

方法的作用:提高代码的复用性,一个功能对应一个方法,要使用哪个功能就直接调用那个方法即可,减少重复代码

测试1

猜数字

// 猜数字:我心里有一个数字,你来猜,看是否猜对

import java.util.Scanner;

public class Method_Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("猜猜我心里的数(1-6):");
        int guessNum = sc.nextInt();
        guess(guessNum);
    }
    public static void guess(int guess){
        int num = (int)(Math.random()*6)+1;
        System.out.println(guess==num?"猜对了":"猜错了");
    }
}
扩展

两个数是否交换成功

public class TestM{
        public static void main(String[] args){
                int a=10;
                int b=20;
                System.out.println("输出交换前的两个数:"+a+"---"+b);
                changeNum(a,b);
                System.out.println("输出交换后的两个数:"+a+"---"+b);
        }
        public static void changeNum(int num1,int num2){
                int t;
                t=num1;
                num1=num2;
                num2=t;
        }
}


/*
    结果为:
    输出交换前的两个数:10---20
    输出交换后的两个数:10---20
*/
  • 在栈中,先进后出,a先被定义,放在最底层
  • 一个方法有一块内存区域,在方法运行完后,这块内存区域也会消失

当a和b这两个实参的值给了num1和num2,之后的运行都是在changenNum方法的内存区域内交换值,所以num1和num2的值交换后没有返回给a和b,内存区域消失后,num1和num2也消失了


    栈        堆        方法区    
    —            /        /
    b    20          /      /
    a    10        /    /

方法的重载

在同一个类当中,方法名相同但形参列表不同

public class Method_Test3{
    public static void main(String[] args){
        // 10+20
        int sum = add(10,20);
        System.out.println(sum);
        // 20+40+80
        System.out.println(add(add(20,40),80));
        // 30+60+90+120
        System.out.println(add(add(add(30,60),90),120));
        // 9.8+4.7
        System.out.println(add(9.8,4.7));
    }
    // 两个数相加
    public static int add(int num1,int num2){
        return num1+num2;
    }
    // 三个数相加
    public static int add(int num1,int num2,int num3){
        return num1+num2+num3;
    }
    // 四个数相加
    public static int add(int num1,int num2,int num3,int num4) {
        return num1 + num2 + num3 + num4;
    }
    // 两个double类型的数相加
    public static double add(double num1,double num2){
        return num1+num2;
    }
  • 方法的重载只需方法名一致,形参列表不同
  • 形参列表的不同为:
    【1】类型不同【2】个数不同【3】顺序不同
  • 与方法的修饰符和返回值类型无关
  • 注意int a和int b不构成重载

在方法重载中,类型级别也同样适用

byte,short,char—>int—>long—>float—>double

public class Method_Extend1 {
    public static void main(String[] args) {
        add(5);
    }
    public static void add(long num1){
        System.out.println(4);
    }
    public static void add(float num1){
        System.out.println(3);
    }
    public static void add(double num1){
        System.out.println(2);
    }
    public static void add(int num1){
        System.out.println(1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值