匿名对象的定义
没有名字的对象称为匿名对象。
class people{
String name;
int age;
String sex;
public void live(){
System.out.println(name+"活着真好");
}
public void eat(){
System.out.println("好好吃饭");
}
}
//测试类
class dome{
public static void main(String[] args) {
//用匿名对象
new people().name="tom";
new people().live();
//创建非匿名对象
people tom=new people();
tom.name="tom";
tom.live();
}
}
结果:
null活着真好
tom活着真好
上面的两个new people()就是两个个匿名对象,可以通过它调用类中的方法和属性。
又因为这两个不是一个对象,所以给第一个匿名对象的name赋的值,第二个匿名对象的name属性依旧为空。
非匿名对象由于是有名字的,可以通过名字多次使用。
匿名对象的特点
1、匿名对象顾名思义,它没有名字,即使你赋值了也永远获取不到它。
2、两个匿名对象永远不会相等(这里指地址不相等)。
当new一个匿名对象的时候就是一个新的对象了。
public class demo {
//以下两行的对象不是一个对象,所以这个二狗子是取不出来的。
new people().name="二狗子";
System.out.println(new people().name);
//判断两个地址是否一样
if(new people()==new people()) {
System.out.println("地址相等");
}else System.out.println("地址不等");
}
}
结果:
null
地址不等
匿名对象的应用
1、在这个类中只调用一次这个对象的方法或者属性的时候。注意,前提是只调用一次。
因为只调用一次,如果用非匿名对象需要先声明再使用,比如:
people tom=new people();
tom.eat();
如果用匿名对象的话直接用就可以了,比如:
new people().eat;
既不用想变量名怎么取,还少一行,这就很方便嘛。
2、匿名对象可以作为实参使用。
public class circle {
double r;
double pi=3.14;
public double getCircumference() {
return 2*pi*r;
}
}
//测试类
public class demo {
public static void main(String[] args) {
System.out.println("圆周率约等于"+new circle().pi);
}
}
结果:
圆周率约等于3.14