public static void main(String[] args) {
// TODO Auto-generated method stub
Person3 p = new Person3("zhangshan",30);
Person3 p1 = new Person3("lisi",36);
}
}
class Person3
{
private String name ;
private int age;
Person3 ()
{
System.out.println("person3 run");
}
Person3(String name, int age )
{
// 这里并没有用this.name= name. this.age = age进行给本类的成员变量赋值;
// 为什么打印的结果不是null和0呢?而是带有传递值的结果呢?
System.out.println("name="+name+" age="+age);
}
}作者: 张金铎 时间: 2013-4-18 10:06 本帖最后由 张金铎 于 2013-4-18 10:13 编辑
当你new新对象的时候调用了构造函数Person3(),虽然你没有写this.name=name。所以你打印出来的就是形参里面的值。对象的私有变量,应该还是null和0。你在类里面加上下面两个方法,然后在main()里面打印出来看看就知道了。
public int getAge(){
return age;
}
public String name(){
return name;
} 作者: hdsjsql 时间: 2013-4-18 10:10
这里是局部变量跟成员变量方面的知识,当你把参数name和age传进去时,相当于Ponson3方法中有了这两个变量
String name = "zhangshan",int age = 30,当局部变量有值时,调用局部变量得值
因此输出值是name = zhangshan age = 30
如果把 Person3(String name, int age )改为 Person3(String nam, int ag )
就会输出你要的值了。(个人理解,哪里不对了见谅啊)作者: 曹德君 时间: 2013-4-18 10:32
你这里有问题,输出的是局部变量。成员变量实际上还是null和0的。增加了一段代码这样可以清楚的展示,