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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王广亚 高级黑马   /  2013-6-28 13:02  /  1931 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. public class Car{
  2. private String color;
  3. private String num;
  4. Car(){
  5. int num=4;
  6. String color="red";
  7. }
  8. public static void main(String args[]){
  9. Car ca=new Car();
  10. run(ca);
  11. }
  12. static void run(Car a){
  13. System.out.print(a.num+","+a.color);
  14. }
  15. }

复制代码
难道不是在创建对象时调用其对应得构造方法初始化值吗?上面程序不知道在创建对象时为什么没有初始化值?求解?

9 个回复

倒序浏览
你又在构造方法中定义了2个同名的局部变量?
回复 使用道具 举报
解决方法1
  1. public class Demo1 {

  2.         private String color;
  3.         private int num;

  4.         Demo1() {
  5.                 int num = 4;
  6.                 String color = "red";
  7.                
  8.                 this.num=num;
  9.                 this.color=color;
  10.         }

  11.         public static void main(String args[]) {
  12.                 Demo1 ca = new Demo1();
  13.                 run(ca);
  14.         }

  15.         static void run(Demo1 a) {
  16.                 System.out.print(a.num + "," + a.color);
  17.         }
  18. }
复制代码
解决方法2
public class Demo1 {

        private String color;
        private int num;

        Demo1() {
                num = 4;
                color = "red";

        }

        public static void main(String args[]) {
                Demo1 ca = new Demo1();
                run(ca);
        }

        static void run(Demo1 a) {
                System.out.print(a.num + "," + a.color);
        }
}
回复 使用道具 举报
因为你的Car构造中的变量是局部变量,并不是全局变量。所以在a.num或a.color的时候是引用全局变量,而你的全局变量根本没有赋值
回复 使用道具 举报
梦想蓝色天空 发表于 2013-6-28 13:14
因为你的Car构造中的变量是局部变量,并不是全局变量。所以在a.num或a.color的时候是引用全局变量,而你的 ...

是的是的。谢谢了,我这个人总是很马虎。多谢了。
回复 使用道具 举报
你在构造方法中重新声明了两个变量,所以类中的变量值并没有被修改。
所以去掉类型说明符就可以了,(而且你变量类型还不统一。。。)

一般在使用中,为了说明是本类中的变量,还要加上 this 限定。
回复 使用道具 举报
秩宇 发表于 2013-6-28 13:54
你在构造方法中重新声明了两个变量,所以类中的变量值并没有被修改。
所以去掉类型说明符就可以了,(而且 ...

恩恩,谢谢提醒
回复 使用道具 举报
秩宇 中级黑马 2013-6-28 14:26:02
8#

如果问题解决的话,要把帖子分类改成“已解决”。
回复 使用道具 举报
秩宇 发表于 2013-6-28 14:26
如果问题解决的话,要把帖子分类改成“已解决”。

怎么操作成“已解决”?
回复 使用道具 举报
王广亚 发表于 2013-6-28 14:46
怎么操作成“已解决”?

在主楼左下角或者右下角应该有“编辑”的按钮吧?
没有的话可以问问版主。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马