匿名对象:
概念:没有名字的对象,没有被变量引用指向的对象空间。
语法:
- new 类名()
public class NiMingDemo{
int num;
}
public class Demo{
public static void main(String[] args){
(1) SyStem.out.println(new NiMingDemo().num);// 0
(2)NiMingDemo nm = new NiMingDemo();
System.out.println(nm.num); // 0
nm = null;
语句(1)和语句(2)的效果一样
匿名对象的优缺点:
优点:使用匿名对象成员后,该对象空间会变成垃圾空间等待JVM回收,无需设置
null值。
缺点:匿名对象成员只能使用一次,再次使用时就不是原来对象了,因为被JVM回收
了,所以再次使用时是一个新对象,故匿名对象只能使用一次。
结论:如果在开发中只需要使用某对象的成员一次,这时该对象可以定义成匿名对象。
}
}
- 自定义类作为参数类型使用
public class NiMingDemo{
int mun;
}
public class Demo{
public static void main(Striing[] args){
将匿名对象作为实际参数使用
testNiMing(new NiMingDemo());
作用:被调用方是匿名对象,定义方会变成普通对象,
在方法中解决匿名对象成员只能使用一次的问题。
}
public static void testNiMing(NiMingDemo nm){
nm 变成普通对象
nm.num++;
System.out.println(nm.num);// 1
}
}
- 自定义类作为返回值类型使用
public class NiMingDemo{
int num;
}
public class Demo{
public static void main(String[] args){
方法调用方法是普通对象,成员可以使用多遍,但该对象释放空间需要置空
NiMingDemo nm = testNiMing(); 用于生成对象
nm.num++;
System.out.println(nm.num);// 1
nm.num = null;
}
将自定义类作为返回值类型使用
public static NiMingDemo testNiMing(){
方法定义方式匿名对象
return new NiMingDemo();
}
}