匿名对象:创建对象的时候,没有使用变量保存其堆中的地址
eg: new student();
使用场景:
只能在创建的时候直接使用,并且只能使用1次。
eg:启动线程:new Thread().start();
作用:
可以节约资源,因为GC会不定时回收匿名对象。
(GC是垃圾回收机制,回收的主要对象就是匿名对象)
==================================================
封装的四步:
- 私有化成员变量(用private修饰成员变量)
- 为每一个成员变量提 getXxx()和void setXxx(…)方法,如果当前成员变量类型是boolean类型,将getXxx()改为 isXxx()
- 提供一个无参构造
- 该类用public修饰
======================================================
this的主要2个作用
1、解决成员变量和局部变量的二义性问题
public void setName(String name) {
this.name = name;//直接从成员变量位置找name
//name=name//这里就近原则,第一个name就是参数name,打印为null
}
2、复用其它构造方法,简化给成员变量赋值的代码
public User(String name, String phone) {
super();
this.name = name;
this.phone = phone;
}
public User(String name, String phone, boolean vip) {
this(name,phone);
this.vip = vip;
}
扩展:字段有默认值,如账户的初始密码
实体类
public User(String name) {
this(name,"123456");
}
public User(String name, String pwd) {
this.name=name;
this.pwd = pwd;
}
测试类
public class UserTest {
public static void main(String[] args) {
//通过有参构造进行赋值,初始账户密码均为123456
User shp=new User("小明");
User shp=new User("小红");
User shp=new User("小花");
}
}
==================================================
创建对象时,会将该类的字节码文件加载到元空间的内存区域;
创建的对象在堆中,栈帧中方法的对应变量保存的是对象的地址