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();运行时怎么又两条记录?郁闷了

解决方案 »

  1.   

    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次输出
      

  2.   

    谢谢,那么怎么改为一条记录呢我做的是构造函数的重载
    Person p=new Person();
    Person p=new Person("qqq",11);这两句话不能同时显示呢??郁闷啊
      

  3.   

    public Person()  
      {
      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);
      }
      

  4.   

    class Person 
    {
        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);
            
        }
    }
      

  5.   

    public Person() 
        {
               this("java01", 22);// 调用public Person(String name,int age)方法,
               System.out.println("name: " + name + "\n" + "age: " + age);
        }
    去掉这个  this("java01", 22);// 
    就只可以打印出一句话
      

  6.   

    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);
        }这构造方法又打印了一次。
    所以一共是两次
      

  7.   

    楼上的貌似都是答非所问
    楼主是问为什么他的代码中出错了
    不能2句同时显示其实就是
    Person p=new Person();
    Person p=new Person("qqq",11);
    这两个 P 冲突了
    改成
    Person p1=new Person();
    Person p2=new Person("qqq",11);
    就可以了