以下面程序为例:
1.源码Cars.java通过编译生成Cars.class文件;
2.执行时分为两步:
第一步将Cars类的字节码加载到内存中,
第二步是new之后自动执行的。①将属性color和price初始化内存堆,并附上初始值null和0.0(声明,赋初值);②调用有两个参数的构造方法public Cars(String color,double price),把具体值"black"和60000赋值给形式参数color和price(即执行Cars("black",60000);)③在栈中创建一个变量car1,用来引用堆中对象的具体属性("black"和60000),car1的值是一个16进制的数,表示一个虚地址;④重复①-③过程创建对象car2,car2与car1是不同的引用,指向不同的具体对象。也就是说,car1和car2分别引用不同的具体内容。
public class Cars {
private String color;
private double price;
public Cars(String color,double price){
this.color = color;
this.price = price;
}
public void setColor(String color) {
this.color = color;
}
public void setPrice(double price) {
this.price = price;
}
public static void main(String[] args) {
Cars car 1= new Cars("black",60000);
Cars car 2= new Cars(“red",50000);
}
}