Java方法01:方法的定义、调用、重载、值传递与引用传递

何谓方法?

  • Java方法是语句的集合,它们一起执行一个功能
  1. 方法是解决一类问题的步骤的有序组合
  2. 方法包含于类和对象之中
  3. 方法在程序中被创建,在其他方法被引用
  • 设计方法的原则:方法的本意是功能块,就是实现某种功能的语句块的集合。设计方法时,最好是一个方法只实现一个功能

方法的定义

  • Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
  • 方法包括一个方法头和一个方法体
  1. 修饰符:可选,定义该方法的访问类型。
  2. 返回值类型:方法可能会有返回值类型。一般是事先约定的返回值的数据类型,在没有返回值的情况下,使用关键字void。
  3. 方法名:方法的实际名称,方法名和参数表共同构成方法签名。
  4. 参数类型:可选,参数像是一个占位符。当方法被调用时,传递值(实参)给参数(形参)。
    1. 形式参数:在方法被调用时用于接受外界输入的数据。
    2. 实参:调用方法时实际传给方法的数据。
  5. 参数列表:指方法的参数类型、顺序和参数的个数。
  6. 方法体:包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名(参数类型 参数名){
	……
	方法体
	……
	return 返回值;
}

方法调用

  • 调用方法:对象名.方法名(实参列表)
  • Java支持两种调用方法的方式,根据方法是否返回值来选择
    1. 当方法返回一个值时,方法调用通常被当作一个值。
      int large = max(22,97);
      
    2. 方法返回值是void时,方法调用一定是一条语句。
      System.out.println("Hello,World!!!")
      
  • 拓展了解:值传递(Java)和引用传递
    Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”,也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。
  1. 基本数据类型参数的传值:传递的是值得副本,副本改变不会影响原件。
  2. 引用类型参数的传递:传递的是值的副本,但是引用类型指的是“对象的地址”。因此,副本和原参数都指向同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。
    值传递与引用传递
    值传递与引用传递
    添加链接描述
    添加链接描述
package com.oop.demo01;

//引用传递:对象,本质还是值传递,需分析内存
public class Demo05 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);//null

        change(person);
        System.out.println(person.name);//panpan
    }
    public static void change(Person person){
        //person是一个对象
        person.name = "panpan";
    }
}
//定义了一个Person类,有一个属性:name
class Person{
    String name;
}
package com.panpan.method;

public class Demo01 {
    //main方法
    public static void main(String[] args) {
        //实际参数:调用方法时,实际参与方法运算传递给方法的数
        int sum = add(3,2);//调用方法
        System.out.println(sum);

        System.out.println("----------");
        Demo01 demo = new Demo01();
        int num = demo.max(22,22);//调用方法
        System.out.println(num);
    }
    //方法:实现加法
    //形式参数:起定义的作用,如:int a,int b
    public static int add(int a,int b){
        return  a+b;
    }

    //方法:比大小
    public int max(int a,int b){
        int result = -1;
        if (a==b){
            System.out.println("a==b");
            return 0;//return还有终止方法的功能
        }
        if (a>b){
            result = a;
        }else {
            result = b;
        }
        return  result;
    }
    //方法的重载
    public static int add(double a,int b){
        return  (int)a+b;
    }
    public static int add(int a,int b,int c){
        return  a+b+c;
    }
    public static int add(int b,double a){
        return (int)a+b;
    }
}

方法的重载

  • 重载就是在一个类中,有相同的方法(函数)名称,但是形参不同的方法(函数)。
  • 重载的方法,实际是完全不同的方法,只是名称不同而已。
  • 方法重载的规则:
    1. 方法名称必须相同
    2. 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等构成重载)
    3. 方法的返回类型可以相同也可以不同
    4. 仅仅返回值类型不同不足以成为方法的重载
    5. 只有形参的名称不同不构成方法的重载
  • 实际理论:
    方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐一匹配,以选择对应的方法,如果匹配失败,则编译器报错。

注意事项

  1. 实参的数目,数据类型和次序必须和调用的方法声明的形式参数列表匹配。
  2. return语句终止方法的运行并指定要返回的数据。
  3. Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)。
  4. 基本类型传递的是该数据值的copy值。
  5. 引用类型传递的是该对象引用的copy值,但指向的是同一个对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值