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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾永长 中级黑马   /  2013-6-28 18:48  /  1748 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

都给它初始化值了,怎么输出的不是2?
见代码:
  1. <p> class Demo6
  2. {     int b,c;
  3.        void Demo6()
  4.        {
  5.               this.b=1;          //初始化值了。
  6.               this.c=1;
  7.        }
  8.        public static void main(String... args)     
  9.        {         
  10.               Demo6 x = new Demo6();
  11.               System.out.println(x.b+x.c);      //打印结果为啥不是2?
  12.        } </p><p> }
  13. </p><p> </p>
复制代码
结果:
  1. 0
复制代码

8 个回复

正序浏览
陈雪琪 发表于 2013-6-28 19:24
那个Demo6是类名,楼主应该是想要写一个构造函数的吧。。。

一语中的啊!{:soso_e179:}我本意就是想写构造函数的!谢啦!{:soso_e181:}
修改后代码:
  1. class Demo6
  2. {      int b,c;
  3.         Demo6()             ----------》去掉void了  OK了 ~_~
  4.         {
  5.                this.b=1;
  6.                this.c=1;
  7.         }
  8.         public static void main(String... args)     
  9.        {         
  10.               Demo6 x = new Demo6();
  11.              System.out.println(x.b+x.c);
  12.        }
  13. }
  14. <p> </p>
复制代码
回复 使用道具 举报
在主函数里 用x调用下Demo6方法好像也可以。
回复 使用道具 举报
  1. class Demo6
  2. {     static int b,c;
  3.        
  4.        void Demo6()
  5.        {
  6.              b=1;          //初始化值了。
  7.               c=1;
  8.        }
  9.        public static void main(String... args)     
  10.        {         
  11.               Demo6 x = new Demo6();
  12.                           x.Demo6();
  13.               System.out.println(b+c);      //打印结果为啥不是2?
  14.        }
  15. }
复制代码
这样写貌似就可以了
回复 使用道具 举报
王靖远 发表于 2013-6-28 19:22
赋值应该是构造函数才可以 Demo(int b,int c){this.b=1,this.c=1};这样写可能就行了。你试试 ...

我写错了应该是Demo(int b,int c){this.b = b; this.c = c}
new Demo(1,1);
回复 使用道具 举报
王靖远 发表于 2013-6-28 19:20
你这只是在Demo6()方法里给b,c赋值吧。 Demo6()方法运行完就释放了。除非你给b,c加上静态。还有方法第一个 ...

那个Demo6是类名,楼主应该是想要写一个构造函数的吧。。。
回复 使用道具 举报
赋值应该是构造函数才可以 Demo(int b,int c){this.b=1,this.c=1};这样写可能就行了。你试试
回复 使用道具 举报
楼主的代码写的好奇怪啊。。
为什么构造函数会有个void呢?

你这样加了个void就不是构造函数了吧。就只是一个普通的方法了。所以你创建一个对象的话根本就没有调用到构造方法。类成员的默认初始化b和c都是0,所以当然输出的是0不是2了。

如果楼主希望输出2就该把void去掉。这才是构造函数。
回复 使用道具 举报
你这只是在Demo6()方法里给b,c赋值吧。 Demo6()方法运行完就释放了。除非你给b,c加上静态。还有方法第一个字母要小写。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马