持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情
匿名对象【理解】
概念
需求:
1、创建一个学生的类Student,并在Student类中定义两个属性name和age。
2、在Student类中定义一个函数demo()。
3、定义一个测试学生类的类StudentTest。
说明:匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。
Student:是一个类。描述的是学生这个事物
student:类所创建的对象名(实例名)
匿名对象:就是指没有名称的对象。创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。
格式:
new 类名(参数列表);
举例:
new Scanner(System.in);
new Student();
匿名对象应用场景
匿名对象的局限性
上述代码结果:
null 学习中。。。。。
出现以上问题的原因如下图所示:
注意:只要在程序中使用new关键字创建对象,那么在堆中都会有一个新的对象产生。
注意:匿名对象通常是在对象只需要访问成员一次的情况下使用
如果对象需要多次的操作成员,就不能使用匿名对象来访问。
注意:匿名对象可以简化代码的书写,但是匿名对象一旦使用结束,这时这个对象就立刻变成垃圾。
如果对象只使用一次,这时可以采用匿名对象,如果这个对象要使用多次,必须给对象起名。
匿名对象作为参数传递(理解)
需求:
1)定义一个Person类,在这个类中定义人的名字和年龄,并定义一个说话的功能;
2)再定义一个测试Person类的类PersonTest,在PersonTest类中定义一个功能,给所有的Person类的对象下的属性name和age进行相同数据的赋值,并调用Person类中的说话的方法。
class Person
{
String name;
int age;
void say()
{
System.out.println(name+"哇哇哇哇叫"+age);
}
}
class PersonTest1
{
public static void main(String[] args)
{
//创建person对象
/*Person person =new Person();
demo(person);
Person person1 =new Person();
demo(person1);
Person person2 =new Person();
demo(person2);
上述程序中创建的Person对象的引用,仅仅是为了把对象传递给demo函数,
这时也可以使用匿名对象传递对象
*/
demo(new Person());
}
/*
定义一个函数给Person类中的属性赋值,并调用Person类中的方法
*/
public static void demo(Person p)//Person p=new Person();
{
p.name="baby";
p.age=1;
p.say();
}
}