Day 19 回顾方法

方法的定义

一个方法的定义要有

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

break和return的区别

break:跳出switch,结束循环
return:结束方法 返回一个结果,后面就不能再有任何东西了。

异常抛出(以后会说)

看代码

修饰符 返回值类型 方法名(形式参数) 丢出   异常
public void readFile(String file) throws IOException{}

方法的调用

静态方法

image
方法修饰符中有static,表示是静态方法。静态调用静态,直接类名.方法名

非静态方法

image

不能直接使用,,要new一个类,将他实例化,之后才能调用。

相互之间的引用

    //static 是和类一起加载的
    public static void a (){
        b();//错误

    }
    //类实例化之后才存在
    public void b (){

    }

在一个类中,如果两个方法都是静态/非静态的,那方法之间能相互引用,如果像上面的代码一样,一个有static,一个没有。那么他就不能相互引用。

形参和实参

形参就是一个形式,里面没有值,而实际参数就是有值的。
形参和实参的数据类型要相同(存疑)

package com.oop.demo01;

public class Demo03 {
    public static void main(String[] args) {
        Demo03 demo03 = new Demo03();
        //实际参数  参数的值    实际参数和形式参数的类型要对应
        int add = demo03.add(1, 2);
        System.out.println(add);
    }

//形式参数  参数名字
    public int add(int a, int b){
        return a+b;
    }
}

值传递和引用传递(有点晕)

java中都是值传递

package com.oop.demo01;
//值传递
public class Demo04 {
    public static void main(String[] args) {
        int a=1;
        System.out.println(a);//1

        Demo04.change(a);

        System.out.println(a);//1
    }

    public static void change(int a){
        a = 10;
    }
}
package com.oop.demo01;
//引用传递:传递   本质还是值传递

public class Demo05 {
    public static void main(String[] args) {
        //这是引用一个Person类
        Person person = new Person();
        //此时person.name没有值    因为引用的class Person 里name是null
        System.out.println(person.name);  //null
        //person走一个change方法
        Demo05.change(person);
        //因此能输出change后的名字
        System.out.println(person.name);//李建辉
    }

    public static void change(Person person){
        //person是一个对象:指向的--->Person person = new Person(); 这是一个具体的人,可以改变属性!
        //改的是class里面的name
        person.name = "李建辉";
    }
}

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

}
posted @ 2022-03-19 15:30  咩咩子的起床气  阅读(32)  评论(0)    收藏  举报