案例
public class test17 {
public static void main(String[] args) {
User user=new User(1,"张三");
System.out.println(user.getId()+"\n"+user.getName());
}
}
class User{
public int id;
public String name;
public User(){}
public User(int id,String name){
this.id=id;
this.name=name;
}
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
过程分析:
user对象压入栈中并分配内存地址,new创建对象时,在堆中分配内存空间并且初始化,初始化值为属性类型的默认值,此时是null和0 ,当赋予属性值时,name的属性值会从常量池中获取到,并给id赋值为1,然后通过对象引用地址在堆中找到对象的实例化数据。