A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 空心祭 中级黑马   /  2014-2-26 13:25  /  1239 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Person
{
        private String name;
        private int age;

        {
                System.out.println("cry.........");
        }
        Person()
        {
                System.out.println("name="+name+"  age="+age);
        }
        Person(String name)
        {
                System.out.println("name="+name+"  age="+age);
        }
        Person(String name,int age)
        {
                System.out.println("name="+name+"  age="+age);
        }
        public void setName(String name)
        {
                this.name = name;
        }
        public String getName()
        {
                return name;
        }
        void cry()
        {
                System.out.println("cry.........");
        }
        public boolean comepare(Person p)
        {
                return this.age==p.age;
        }

}
class PersonDemo2
{
        public static void main(String[] args)
下面是我写的代码 ,但是 调用comepare的方法时候出来的结果是ture,可以明明我初始化的一个是20,一个是25 怎么能是ture呢?       
{
                Person p = new Person();

                Person p1 = new Person("lisi");
                p1.setName("liqiang");
                System.out.println(p1.getName());

                Person p2 = new Person("zhangsan",20);
                Person p3 = new Person("wangwu",25);
                boolean b = p2.comepare(p3);
                System.out.println(b);
        }
}

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

9 个回复

倒序浏览
楼主你并没有赋值成功啊你可以加两行代码
System.out.println(p2.getName());
System.out.println(p3.getName());
输出都是Null
调用的构造函数Person(String name,int age)
        {
                System.out.println("name="+name+"  age="+age);
        } 这里没有赋值啊

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
楼主你的构造函数初始化有点小问题,我在程序中注释了下:
  1. class Person
  2. {
  3.         private String name;
  4.         private int age;

  5.         {
  6.                 cry();
  7.         }
  8.         Person()
  9.         {
  10.                 System.out.println("name="+name+"  age="+age);
  11.         }
  12.         Person(String name)
  13.         {
  14.                 this.name = name;    //楼主你这个地方忘记啦!!!!这里没写等于初始化失败,相当于你的p2和p3的age都是0.
  15.                 System.out.println("name="+name+"  age="+age);
  16.         }
  17.         Person(String name,int age)
  18.         {
  19.                 this.name = name;   // //楼主你这个地方忘记啦!!!!这里没写等于初始化失败,相当于你的p2和p3的age都是0.
  20.                 this.age = age;
  21.                 System.out.println("name="+name+"  age="+age);
  22.         }
  23.         public void setName(String name)
  24.         {
  25.                 this.name = name;
  26.         }
  27.         public String getName()
  28.         {
  29.                 return name;
  30.         }
  31.         void cry()
  32.         {
  33.                 System.out.println("cry.........");
  34.         }
  35.         public boolean comepare(Person p)
  36.         {
  37.                 return this.age==p.age;
  38.         }

  39. }
  40. class PersonDemo2
  41. {
  42.         public static void main(String[] args)
  43.         {
  44.                 Person p = new Person();

  45.                 Person p1 = new Person("lisi");
  46.                 p1.setName("liqiang");
  47.                 System.out.println(p1.getName());

  48.                 Person p2 = new Person("zhangsan",20);
  49.                 Person p3 = new Person("wangwu",25);
  50.                 boolean b = p2.comepare(p3);
  51.                 System.out.println(b);
  52.         }
  53. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
你的接收name,age的构造函数改为:
Person(String name,int age){
      this.name = name;
      this.age = age;
}
这样成员变量才能保存name 和 age 是值

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
  Person(String name,int age)
        {
                System.out.println("name="+name+"  age="+age);
        }
构造方法 有问题    穿过来的数据没有给 实例对象中的 字段赋值
构造方法中  缺少  this.name = name;
                this.age = age;  赋值语句

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
Person(String name,int age)
        {
                System.out.println("name="+name+"  age="+age);
        }
没有对Person(String name,int age)进行初始化,改成下面的就好了
Person(String name,int age)
        {
               this,age-age;
                System.out.println("name="+name+"  age="+age);
        }

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
this.age=age;上面书写错了
回复 使用道具 举报
lei 发表于 2014-2-26 13:47
楼主你的构造函数初始化有点小问题,我在程序中注释了下:

哦哦,知道了,谢谢啦啊,闹半天我自己都懵了
回复 使用道具 举报
谭荣强 发表于 2014-2-26 13:55
this.age=age;上面书写错了

name呢?
回复 使用道具 举报

name不定义也可以,因为你比较的是age.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马