对象作为参数在函数中的传递问题
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;
}
}