第二章 java 方法

目录

2.1、方法的作用

2.2、main和其他方法的关系

2.4、方法的返回值类型如何决定?

2.5、方法应该有什么形式参数如何决定? 未知因素

2.6、调用方法的语法,为什么这里可以使用类去调用方法?

2.7、实际参数和形式参数的关系

2.8、如何理解可变参数

2.9、方法重载的判断依据

2.10、基本类型和引用类型的参数传递的区别

2.11 .方法的思维导图


 

2.1、方法的作用

在其他地方如果会用到相同的功能,我们可以将这个功能抽取成一个方法,在相同功能的地方,我们就可以通过调用该方法的方式,替换掉这些代码,从而解决代码重复,代码冗余的情况

就比如两个数求和这个功能,在本类中跟多地方需要用到,或者其他类可能需要用到,就可以将该功能抽取成一个方法,用到该功能时,就直接调用即可。

2.2、main和其他方法的关系

并列关系,所以不能将方法定义在主方法main的内部

2.3、定义方法的语法

// 修饰符 : public static等,static表示该方法是静态的,能够直接被类名调用,如果没有static修饰符修饰的
// 方法,在其他类中调用该方法时,就需要创建该方法所在类的对象,通过这个对象才能调用该方法

// 返回值类型 :基本类型、引用类型、void
// 方法名 :跟标识符一样的命名规则,采用小驼峰命名法来命名
// 这里的参数,是形参
修饰符 返回值类型 方法名 (参数类型 参数1 , 参数类型 参数2 ,….){
    // 如果返回值类型是void 就不需要return
	[return 返回值;]
}

2.4、方法的返回值类型如何决定?

看方法的调用者需要什么类型的数据

比如,一个人(方法的调用者)去水果店(方法)买水果,这个人给了钱(参数),而这个人需要获得的是苹果,或者香蕉(返回值),而苹果、香蕉的类型就是水果类型

2.5、方法应该有什么形式参数如何决定? 未知因素

定义方法时,不知道参数具体的值,需要从外界给出,这样的参数,就是方法所需要的形参

2.6、调用方法的语法,为什么这里可以使用类去调用方法?

因为在方法定义的时候,方法的修饰符是static,而有了static修改该方法,该方法就可以通过类直接调用该方法。

2.7、实际参数和形式参数的关系

  • 实际参数:是我们实际知到且,知道这个参数的值

  • 形式参数:不知道具体的值,只知道参数的类型,明确规定,调用该方法时,需要什么样的参数

  • 两者之间的关系:在调用方法时,实际参数的传递,需要根据形式参数的类型、个数、顺序决定

2.8、如何理解可变参数

如果形式参数中有数组的时候,我们传递实参时,通常都会先定义一个数组的变量,然后将变量传给方法,这样多多少少会有点麻烦,所以,我们可以使用可变参数来传递数组类型的参数。

语法是:

修饰符 返回值类型 方法名(参数类型 参数1,参数类型... 参数){
    方法体;
}

2.9、方法重载的判断依据

方法名相同,但参数类型、个数、顺序不一样

例如:

1、参数个数不一样,但参数名是一样的

// 两个数相加
public void getSum(int a , int b){}
// 三个数相加
public void getSum(int a , int b , int c){}

2、参数个数相同,参数名相同,但参数类型不一样

blic void hava(int a, int b){}
public void hava(int a , boolean b){}

3、参数个数、参数类型和参数名都相同,但是参数的顺序不一样

public void hava(int a , boolean b){}
public void hava(boolean b , int a){}

4、以下是反例:

public void hava(int a, boolean b){}

与上述方法相比

public void hava(int x , boolean y){} // 只是参数的名字不一样,其他都一样,这不算方法的重载
public String hava(int a , boolean b){} // 只是方法的返回值类型不一样,这不是方法的重载

2.10、基本类型和引用类型的参数传递的区别

  • 基本类型

以下面代码为例:

public class test {
    public static void main(String[] args) {
       
        int num = 1;
        
        test(num);

        System.out.println(num); // num = 1
        
    }
    
    // 基本类型
    public static void test(int num){
        System.out.println(num); // num = 1
        num = 2;
        System.out.println(num);// num = 2
    }
    
}

在方法中num的赋值跟main主方法中定义的num不一样,main中的num,是成员变量,而方法中的num是局部变量

main方法中的num作为参数传递给成员方法,其实,也仅仅只是将num中的值传递过去了而已,并不是把这个变量本身传递过去了

  • 引用类型

以下面代码为例:

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

        int[] nums = {1,2,3};

        test(nums);

        System.out.println(nums[0]);// nums[0] = 2

    }

    // 基本类型
    public static void test(int[] nums){
        System.out.println(nums[0]); // nums[0] = 1
        nums[0] = 2;
        System.out.println(nums[0]);// nums[0] = 2
    }

}

main中的数组nums,作为参数传递给了自定义的方法,而传过去的值是数组在堆内存中的地址值,不是数组中的值,所以当成员方法中,对数组中的值重新赋值,也就是将堆内存中的数组中的值做了改变,所以在main方法中再次打印出来的值,就是在方法中改变了的值

2.11 .方法的思维导图

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值