class Person
{
String name;// name存放姓名
int age;// 存放年龄
public Person(String name, int age)
{
this.name = name;
this.age = age;
System.out.println("name: " + name + "\n" + "age: " + age);
} public Person()
{
this("java01", 22);// 调用public Person(String name,int age)方法,
System.out.println("name: " + name + "\n" + "age: " + age);
}
public static void main(String args[])
{
Person p=new Person();
//Person p=new Person("qqq",11);
}
}Person p=new Person();运行时怎么又两条记录?郁闷了
调用了
public Person()
{
this("java01", 22);// 调用public Person(String name,int age)方法,
System.out.println("name: " + name + "\n" + "age: " + age);
}这里的this("java01", 22)又调用了
public Person(String name, int age)
{
this.name = name;
this.age = age;
System.out.println("name: " + name + "\n" + "age: " + age);
}所以会有2次输出
Person p=new Person();
Person p=new Person("qqq",11);这两句话不能同时显示呢??郁闷啊
{
this("java01", 22);// 调用public Person(String name,int age)方法,
System.out.println("name: " + name + "\n" + "age: " + age);
}改成如下public Person()
{
name="java01";
age= 22;
System.out.println("name: " + name + "\n" + "age: " + age);
}
{
String name;// name存放姓名
int age;// 存放年龄
public Person(String name, int age)
{
this.name = name;
this.age = age;
[color=#FFFF00]1 System.out.println("name: " + name + "\n" + "age: " + age);[/color] } public Person()
{
this("java01", 22);// 调用public Person(String name,int age)方法,
//你第一个有参构造方法里有一个输出
//你这个无参的构造方法里也有一个输出
//当执行这句话的时候this("java01", 22)会有一个输出1 然后再执行下面的语句找到了2所以 执行两次 不知道我说的你能理解不啊
[color=#FFFF00]2 System.out.println("name: " + name + "\n" + "age: " + age);[/color] }
public static void main(String args[])
{
Person p=new Person();
//Person p=new Person("qqq",11);
}
}
{
this("java01", 22);// 调用public Person(String name,int age)方法,
System.out.println("name: " + name + "\n" + "age: " + age);
}
去掉这个 this("java01", 22);//
就只可以打印出一句话
{
this.name = name;
this.age = age;
System.out.println("name: " + name + "\n" + "age: " + age);
}上面构造方法你是打印了一次。public Person()
{
this("java01", 22);// 调用public Person(String name,int age)方法,
System.out.println("name: " + name + "\n" + "age: " + age);
}这构造方法又打印了一次。
所以一共是两次
楼主是问为什么他的代码中出错了
不能2句同时显示其实就是
Person p=new Person();
Person p=new Person("qqq",11);
这两个 P 冲突了
改成
Person p1=new Person();
Person p2=new Person("qqq",11);
就可以了