package test;
public class People {
private String name;
public People(String name){
this.name = name;
}
public People(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}package test;
public class Test1 {
public static void main(String[] args) {
People p1 = new People("John");
People p2 = new People();
p2.setName("John");
}
}我想问的是p1和p2的这2种赋值方式有什么不同,谢谢各位咯

解决方案 »

  1.   

    p1调用的是带参构造函数,name属性的初始化在构造函数中完成;
    p2调用的是默认构造函数,而name的值是由其set函数来设定的。
      

  2.   

    在内存中分配是这样的。
    p1出来的时候,因为参数是string,所以现在给一个内存空间给这个string。然后在创建一个对象。指向这个p1。然后在把里面的这个string的地址指向对象中的name。p2创建的时候,先创建一个内存空间。然后当你调用这个方法的时候。再创建string。然后吧string的内存指向p2的name。但是结果一样。
      

  3.   

    其实,两者的效果是一样的!但是JavaBean中用的是第二种!