Java面向对象(二)Java方法的补充

Java面向对象(二)Java方法的补充

静态方法

Student类里的静态(static)方法say

public class Student {
    public static void say(){
        System.out.println("正在说话");
    }
}

主函数调用Student类里的静态方法

public class Demo01 {
    public static void main(String[] args) {
        Student.say();
    }
}
//输出:
正在说话

非静态方法

Student2类里的非静态方法say

public class Student2 {
    public void say(){
        System.out.println("正在说话2");
    }
}

主函数调用Student2类里的非静态方法

public class Demo01 {
    public static void main(String[] args) {
        //new:实例化这个类
        //对象类型 对象名   =  对象值
        Student2 student2 = new Student2();
        student2.say();
    }
}
//输出:
正在说话2

方法调用

  • 在一个类中:

    1. 静态方法之间可以互相调用

    2. 非静态方法之间可以互相调用

    3. 非静态与静态方法之间不能互相调用(static不能调用非static)

      • 原因:

        static静态方法是和类一起加载的,但是非静态方法是在类实例化之后才存在的,存在 的调用不存在的就会报错

值传递

  • Java是值传递(传递的是值,不是地址)

  • public class Demo02 {
        public static void main(String[] args) {
            int a=5;
            x(a);
            System.out.println("主函数中的a的值:"+a);
        }
        public static void x(int a){
            a=10;
            System.out.println("方法中的a的值:"+a);
        }
    }
    //输出:
    方法中的a的值:10
    主函数中的a的值:5
    

引用传递

Java如何实现引用传递

  • 对象的传递是引用传递(本质还是值传递)

  • public class Demo03 {
        public static void main(String[] args) {
            Person person = new Person();
            System.out.println(person.name);//第一次输出默认值:null
            x(person);
            System.out.println(person.name);//第二次输出修改后的值,证明x方法是引用传递(传的是地址)而不是值传递
        }
        public static void x(Person person){
    //person是一个对象,指向的是----->Person person = new Person();这是一个具体的,可以以改变属性
            person.name="史小鹏";
        }
    }
    class Person{
        String name;
    }
    //输出:
    null
    史小鹏
    
上一篇:Java 反射技术总结


下一篇:辛星解读之php中的重点函数第一节之数组函数