public class InstanceTest {
public static void main(String[] args) {
Phone p = new Phone();
// p = null;
System.out.println(p);
p.sendEmail();
p.playGame();
//匿名对象
// new Phone().sendEmail();
// new Phone().playGame();
new Phone().price = 1999;
new Phone().showPrice();//0.0
//**********************************
PhoneMall mall = new PhoneMall();
// mall.show(p);
//匿名对象的使用
mall.show(new Phone());
}
}
class PhoneMall{
public void show(Phone phone){
phone.sendEmail();
phone.playGame();
}
}
class Phone{
double price;//价格
public void sendEmail(){
System.out.println("发送邮件");
}
public void playGame(){
System.out.println("玩游戏");
}
public void showPrice(){
System.out.println("手机价格为:" + price);
}
}
- new phone().price = 1999; new phone().showPrice();
- 这两个语句都在调用phone()类的匿名对象,但是第二个语句输出的price仍然是price的默认初始值0.0,第一个的复制操作和第二个语句毫无关联,也就是说,匿名对象一次只能使用一次,就被jvm垃圾回收。
- 上面代码有一行:mall.show(new Phone()); mall对象的show方法需要传入一个Phone对象的参数,这里可以直接传入 new Phone(),而不用再去麻烦的定义一个Phone的对象p传入
匿名对象特点:
1、由于我们没有记录堆内存对象的地址值,所以只能用一次,再次使用就找不到了
2、匿名对象的好处就是使用完毕就是垃圾,可以在垃圾回收器空闲时回收,节省内存空间