public class Account {
String customer;
double balance;
/*create a new instance of Account*/
public Account(String name) {
customer = name;
}
//get balance
public double getBalance() {
return balance;
}
//depoist
public void deposit(double sum) {
if(sum>0) {
balance = balance+sum;
}
}
//withdraw money
public void withdraw(double sum) {
if(sum<balance&&sum>0) {
balance = balance-sum;
}
}
public String getCoustomer() {
return customer;
}
public String getDetail() {
return "Type: " + "Account\n"
+ "Customer: " + customer + "\n"
+ "Balance: " + balance;
}
}
public class TestAccount {
public static void main(String[] args) {
Account acc;
//一个对象引用可以指向一个或0个对象
acc = new Account("me");
acc.deposit(300);
Account acc1;
//一个对象可以有多个引用指向它
acc1 = acc;
System.out.println(acc1.getBalance());
acc1.withdraw(200);
System.out.println(acc1.getBalance());
System.out.println(acc.getBalance());
//一旦重新赋值,就是一个新的地址引用,引用指向了一个新开辟的地址
acc1 = new Account("aaa");
System.out.println(acc1.getDetail());
System.out.println(acc.getBalance());
}
}
通过例子我们来理解对象,与对象引用,
Account acc; //这是一个引用,属于一个引用变量,引用变量在栈中开辟内存空间
acc = new Account("me");//这是一个新建对象,此时会在堆中开辟一个内存来存储这个对象,并把地址赋值给引用变量acc
Account acc1;//新的引用
acc1 = acc; //acc1与acc指向同一个内存地址,所以是对同一对象进行操作,相互影响
acc1 = new Account("aaa"); //新建对象,此时会在堆中开辟一个内存来存储这个对象,并把地址赋值给引用变量acc1所以此时 acc1和acc指向的不是同一内存地址,也就是说指向的不是同一对象,相互不影响。