7.3 方法的调用回顾

7.3 方法的调用回顾

  • 方法的调用
    • 静态方法:加了static修饰符的方法
    • 非静态方法:没有加static修饰符
    • 形参和实参
    • 值传递和引用传递
    • this关键字:代表当前的类
  • 在一个类里面写的方法如果想要在其他类中调用只有两种方式
    1. 如果是静态方法可以直接用类名.方法名就能直接调用
    2. 如果是非静态方法,调用的时候就需要将类实例化,也就是需要通过new关键词,调用时使用 : 对象名.方法名;

main方法

package com.baidu.www.oop;

public class Demo02 {
    public static void main(String[] args) {
        Student.say();
        //对象类型 对象名 = 对象值;
        Student student = new Student();
        //对象名.方法名
        student.answer();
    }
}

方法

package com.baidu.www.oop;
//学生类
public class Student {
    //方法,这个方法就是一个非静态方法,因为没有加static
    //在这个类里面写的方法如果想要在其他类中调用只有两种方式
    //如果是静态方法可以直接用类名.方法名就能直接调用
    public static void say(){
        System.out.println("学生说话了");
    }
    //如果是非静态方法,调用的时候就需要将类实例化,也就是需要通过new关键词
    //调用时使用 : 对象名.方法名;
    public void answer(){
        System.out.println("学生回答问题");
    }
}

  • static关键字

    static是和类一起加载的,时间片特别早也就是当类存在的时候static关键词修饰的变量或者方法就已经存在了。而没有被static修饰的方法则是在类实例化之后才会存在的,也就是通过new关键字实例化一个对象之后才能够调用这个方法,不论在类内还是类外,也就是说只有存在的方法和变量才能够被调用。

    在示例中a方法不能调用b方法,但是b方法能够调用a方法。

    package com.baidu.www.oop;
    
    public class Demo02 {
        public static void main(String[] args) {
            Student.say();
            //对象类型 对象名 = 对象值;
            Student student = new Student();
            //对象名.方法名
            student.answer();
        }
        public static void a(){
            
        }
        public void b(){
            a();
        }
    }
    
  • 值传递和引用传递

    1. 如示例所示,我们在main方法中定义了一个整形a=1,当调用静态方法后再打印a依然是1,这就是Java的值传递逻辑就是第一个定义的a=1,输出结果为1,完全不意外,因为在调用change方法时,只是把a当做一个实际的参数传给了change方法,change方法中的a只是一个形式参数,它并没有返回一个结果,它的返回值为空,调用change方法之后,又回到了主方法,主方法中a的值还是1。

    值传递

    package com.baidu.www.oop;
    //值传递
    public class Demo04 {
        public static void main(String[] args) {
            int a = 1;
            System.out.println(a);
            Demo04.chanage(a);
            System.out.println(a);
            Demo04.chan(a);
            System.out.println(a);
        }
        //返回值为空
        public static void chanage(int a){
            a=10;
        }
        public static int chan(int a){
            a=10;
            return a;
        }
    }
    /*1
    1
    1
    
    Process finished with exit code 0
    */
    
    1. 引用传递

      引用传递一般是传递一个对象,本质还是值传递

      一个类里面只能有一个public class,但是可以有多个class

      在示例中,第一次我们打印person.name,因为没有赋值,所以输出位空

      当我们把person传递给了change方法,在方法中person.name赋值的“肆悟先生”时,调用了Person类中的name属性,相当于给对象person的那么属性赋了值。

      package com.baidu.www.oop;
      //引用传递,引用传递一般是传递一个对象
      public class Demo05 {
          public static void main(String[] args) {
              Person person = new Person();
              System.out.println(person.name);//第一次打印因为name没有赋值,默认值为null
              Demo05.change(person);
              System.out.println(person.name);
          }
          public static void change(Person person){
              //在这里person是一个对象,person.name就是调用了这个对象的属性,指向的是Person类
              person.name="肆悟先生";
          }
      }
      //定义了一个person类,有一个属性:name
      class Person{
          String name;
      }
      /*
      * null
      肆悟先生
      
      Process finished with exit code 0
      */
      

你可能感兴趣的:(Java学习,java)