对象作为参数在函数中的传递问题

2020-06-28  本文已影响0人  资本家大恶人

对象的生命周期

public class Personal {
//  成员变量自动初始化
    private int age;
    private String name;

    void shout() {
//      如果局部变量与成员变量一致时取至等于局部变量
//      int age=60;
        System.out.println(age);
    }

//  构造方法
    public Personal() {
//      对类中 变量进行初始化
//      age=10;
        System.out.println("tt");
    }

    public Personal(String y) {
        this.name = y;
    }

    public Personal(int x, String y) {
//      一个构造方法通过通过调用另一个构造方法
        this(y);
        this.age = x;
//      this.name=y;
    }

    public void someOne(Personal p) {
        p.shout();

    }

    public void fun1() {
        System.out.println(name);
    }

    public void fun2() {
        Personal personal4 = new Personal("a1");
        personal4.fun1();
//  this指代主方法产生的对象
        this.fun1();

    }
// 主方法
    public static void main(String[] args) {

        new Personal();
        new Personal();
        new Personal();
//      调用垃圾回收器
        System.gc();

        // TODO Auto-generated method stub
//      创建对象
        Personal personal1 = new Personal(1, "angel");
        Personal personal2 = new Personal();
//        复值
//        对象可以调用该类的属性和方法
        personal1.age = -30;
//        调用方法
        personal1.shout();
        personal2.shout();

//        personal1调用personal2的方法
        personal1.someOne(personal2);

        String str1 = new String("angel1");
        String str2 = new String("angel2");
        String str3 = new String("angel3");

//        比较对象在堆内存的内容是否相等
        boolean b = str1.equals(str2);
        System.out.println(b);

             //  在主方法创建对象,在方法中通过this直接引用此对象
        Personal personal3 = new Personal("a2");
        personal3.fun2();
    }

// 垃圾回收器 在Java中自动启用或调用  System.gc()方法
    @Override
    protected void finalize() throws Throwable {
        // TODO Auto-generated method stub
        super.finalize();
        System.out.println("finalize is going");
    }

}

数据作为参数在函数中的过程

基本变量

对象和数组

重新创建数组

具体代码

public class PassParams {
     int x;

    public static void main(String[] args) {
        // TODO Auto-generated method stub

//       基本变量不会改变取值 
         int x = 5;
         change(x); 
             System.out.println("基本数据"+x);

        PassParams passParams = new PassParams();
        passParams.x = 5;
        change(passParams);
        System.out.println("对象"+passParams.x);

        int[] arr = new int[1];
        arr[0] = 5;
        change(arr);
        System.out.println("数组"+arr[0]);
    }

//  基本数据
    public static void change(int x) {
        x = 3;
    }

//  引用对象
    public static void change(PassParams p) {
//      重新创建新的对象,当方法结束时定义的值也会消失
        p=new PassParams();
        
        p.x = 3;
    }

//  数组
    public static void change(int[] x) {
        x[0] = 3;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读