Java成员方法快速入门和方法的调用机制原理

成员方法快速入门和方法的调用机制原理

  • 基本介绍

    在某些情况下,我们要需要定义成员方法(简称方法)。比如人类: 除了有一些属性外( 年龄,姓名…),我们人类还有一些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这时就要用成员方法才能完成。现在要求对 Person 类完善。
  • 成员方法的定义

    public 返回数据类型 方法名(形参列表..){//方法体
           语句;
           return 返回值;
    }
    
    1. 参数列表: 表示成员方法输入cal(int n)
    2. 数据类型(返回类型): 表示成员方法输出,void表示没有返回值
    3. 方法主体: 表示为了实现某一功能代码块
    4. return语句不是必须的
  • 成员方法使用细节

    1. 一个方法最多有一个返回值,如果返回多个结果,用返回数组的方法.
      package Hsp;
      
      public class Method {
          public static void main(String[] args) {
              AA a = new AA();
              int[] res = a.getSumAndSub(1,4);
              System.out.println("和=" + res[0]);
              System.out.println("差=" + res[1]);
          }
      }
      
      class AA{
          //方法,接收一个二维数组
          public int[] getSumAndSub(int n1,int n2){
              int[] resarr = new int[2];//创建一个数组
              resarr[0] = n1 + n2;
              resarr[1] = n1 - n2;
              return resarr;
          }
      }
      
    2. 返回类型可以为任何类型,包含基本类型或引用类型(数组,对象)
    3. 如果方法要求有返回数据类型, 则方法体中最后的执行语句必须为return值,而且要求返回值类型必须和return的值类型一致或兼容
    4. 若方法体内有void, 则方法体中可以没有return语句,或者只写return
    5. 一个方法可以有0个参数,也可以有多个参数,之间用逗号隔开,比如getSum(int n1,int n2)
    6. 参数列表可以为任意类型, 包含基本类型或引用类型,比如printArr(int[][] [] [] map)
    7. 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
    8. 方法定义时的参数称为形式参数,简称形参; 方法调用时的参数称为实际参数,简称实参,实参和形参的类型一定要一致或兼容,个数,顺序必须一致
    9. 方法体: 里面写完成功能的具体语句, 可以为输入,输出,变量,运算,分支,循环,方法调用,但里面不能再定义方法! 即: 方法不能嵌套定义
    10. 方法调用细节: 同一个类中的方法调用,直接调用即可. 比如print(参数)
      package Hsp;
      
      public class Method {
          public static void main(String[] args) {
              A a = new A();
              a.sayOk();
      
          }
      }
      
      class A{
      
          public void print(int n) {
              System.out.println("print()方法被调用 n=" + n);
          }
      
          public void sayOk(){
              print(19);
              System.out.println("继续执行sayOk" );
          }
      }
      
    11. 跨类中的方法a类调用b类方法: 需要通过对象名调用
      package Hsp;
      
      public class Method {
          public static void main(String[] args) {
              A a = new A();
              a.m1();
      
          }
      }
      
      class A{
      
          public void print(int n) {
              System.out.println("print()方法被调用 n=" + n);
          }
      
          public void sayOk(){
              print(19);
              System.out.println("继续执行sayOk" );
          }
           public void  m1(){
              //创建B对象,然后再调用方法
               System.out.println("m1()方法被调用");
               B b = new B();
               b.hi();
               System.out.println("m1()方法继续执行:");
           }
      }
      
      class B{
          public void hi() {
              System.out.println("B类中的hi()被执行");
          }
      }
      
    12. 跨类的方法调用和方法的访问符相关,先暂时这么提一下,后面我们讲到访问修饰符时,还要再细说
  • 成员方法快速入门

    • 添加 speak 成员方法,输出 “我是一个好人”
      public class Method01 { 
      	public static void main(String[] args) {
      		//方法使用
      		//1. 方法写好后,如果不去调用(使用),不会输出
      		//2. 先创建对象 ,然后调用方法即可
      		Person p1 = new Person();
      		p1.speak(); //调用方法
      	}
      }
      class Person {
      	String name;
      	int age;
      	//方法(成员方法)
      	//添加speak 成员方法,输出 “我是一个好人”
      	//1. public 表示方法是公开
      	//2. void : 表示方法没有返回值
      	//3. speak() : speak是方法名, () 形参列表
      	//4. {} 方法体,可以写我们要执行的代码
      	//5. System.out.println("我是一个好人"); 表示我们的方法就是输出一句话
      	
      	public void speak() {
      		System.out.println("我是一个好人");
      	}
      }
      
      
      package Hsp;
      public class Method {
          public static void main(String[] args) {
              //测试
              B p1 = new B();
              p1.speak();
              p1.age(2);
          }
      }
      //添加 `speak` 成员方法,输出 “我是一个好人”
      class B{
          String name;
          int age;
          public void speak(){
              System.out.println("我是一个好人");
          }
          
          public void age(int i) {
              System.out.println(i);
          }
      }
      
    • 添加 cal01 成员方法,可以计算从 1+..+1000 的结果
      public class Method01 { 
      	public static void main(String[] args) {
      		//方法使用
      		//1. 方法写好后,如果不去调用(使用),不会输出
      		//2. 先创建对象 ,然后调用方法即可
      		Person p1 = new Person();
      		p1.cal01(); //调用cal01方法
      	}
      }
      
      	//添加cal01 成员方法,可以计算从 1+..+1000的结果
      	class Person {
      	public void cal01() {
      		int res = 0;
      		for(int i = 1; i <= 1000; i++) {
      			res += i;
      		}
      		System.out.println("cal01方法 计算结果=" + res);
      	}
      	}
      
    • 添加 cal02 成员方法,该方法可以接收一个数 n,计算从 1+..+n 的结果
      public class Method01 { 
      	public static void main(String[] args) {
      		Person p1 = new Person();
      		p1.cal02(5); //调用cal02方法,同时给n = 5
      		p1.cal02(10); //调用cal02方法,同时给n = 10
      	}
      }
      
      	//添加cal02 成员方法,该方法可以接收一个数n,计算从 1+..+n 的结果
      	//1. (int n) 形参列表, 表示当前有一个形参 n, 可以接收用户输入
      	class Person {
      	public void cal02(int n) {
      		int res = 0;
      		for(int i = 1; i <= n; i++) {
      			res += i;
      		}
      		System.out.println("计算结果=" + res);
      	}
      	}
      
    • 添加 getSum 成员方法,可以计算两个数的
      public class Method01 { 
      	public static void main(String[] args) {
      		Person p1 = new Person();
      		//调用getSum方法,同时num1=10, num2=20
      		//把 方法 getSum 返回的值,赋给 变量 returnRes
      		int returnRes = p1.getSum(10, 20); 
      		System.out.println("getSum方法返回的值=" + returnRes);
      	}
      }
      class Person {
      	public int getSum(int num1, int num2) {
      		int res = num1 + num2;
      		return res;
      	}
      }
          //添加getSum成员方法,可以计算两个数的和
      	//解读
      	//1. public 表示方法是公开的
      	//2. int :表示方法执行后,返回一个 int 值
      	//3. getSum 方法名
      	//4. (int num1, int num2) 形参列表,2个形参,可以接收用户传入的两个数
      	//5. return res; 表示把 res 的值, 返回
      
  • 方法的调用机制原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值