Day46 回顾方法(方法的定义与调用)

发布时间 2024-01-09 20:43:16作者: 白小帆

回顾方法

  • 方法的定义

  • 修饰符

  • 返回类型

  • break:跳出switch,结束循环 和 return:结束方法,返回一个结果(空或其他) 的区别

  • 方法名 :注意规范就OK 见名知意

  • 参数列表:(参数类型, 参数名)...

  • 异常抛出(还未学 后面讲解)

  • 方法的调用

    • 静态方法

    • 非静态方法

    • 形参和实参

    • 值传递和引用传递

    • this关键字:当前这个类或当前这个对象

1.方法的定义Demo01

package com.oop.demo01;

import java.io.IOException;

//Demo01 类
public class Demo01 {
    //main方法
    public static void main(String[] args) {
    }

    /*
    修饰符  返回值类型   方法名(...){
    //方法体
    return 返回值;
    }
     */
    
    //return 结束方法,返回一个结果!
    public String SayHello(){
        return "hello,world";
    }

    public int max(int a,int b){
        return a>b ? a : b;  //三元运算符!  如果a>b 则结果是a 否则结果是b
    }

    public void print(){
        return;
    }

    //数组下标越界:Arrayindexoutofbounds
    public void readFile(String file) throws IOException{

    }
}

2.方法的调用

2.1静态方法和非静态方法

方法分为两种 静态方法 (加了static)

​ 非静态方法(没有static)

下图是不同的class 静态方法直接调用

下图是不同的class 非静态方法的调用

方法调用的特殊情形:

package com.oop.demo01;

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

    //static 和类一起加载的
    public void a(){
     b();              //当a和b都为静态方法时(都有static)或都不是静态方法时  a可以直接调用b方法
    }                  //当a为静态方法时   b不是静态方法时  a不能直接调用b方法
    //类实例化之后才存在
    public void b(){
    }
}

2.2 形参和实参

package com.oop.demo01;

public class Demo03 {

    public static void main(String[] args) {
//两种调用方法
        //1.    new Demo03().add(1,2);//下面方法没有static的时候这么调用
        //2.
        int add = Demo03.add(1, 2);//输入等号右边的然后点击小灯泡自动补全
        System.out.println(add);


    }
             //实际参数跟形式参数的类型要对应! 
    public static int add(int a,int b){
        return a+b;

    }


}

2.3 值传递和引用传递

2.3.1值传递

package com.oop.demo01;

//值传递
public class Demo04 {

    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);

        Demo04.change(a);

        System.out.println(a);// 这里的结果是1
    }

     //返回值为空
    public static void change(int a){
        a = 10;
    }
}

2.3.2 引用传递

package com.oop.demo01;

//引用传递:对象,本质还是值传递

//对象,内存

public class Demo05 {
    public static void main(String[] args) {
        Person person = new Person();

        System.out.println(person.name);//这个结果是null

        Demo05.change(person);
        System.out.println(person.name);//这个结果是帅哥
    }
    public static void change(Person person){
        //person是一个对象:指向的是----> Person person = new Person();这是一个具体的人,可以改变属性!
        person.name = "帅哥";
    }
}

//定义了一个Person类,有一个属性:name
class Person{
    String name;//String默认值是null
}