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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© EDDY_Liang 中级黑马   /  2014-5-27 10:53  /  1945 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  person
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //new PersonDemo();
  6.                 PersonDemo p =new PersonDemo(5);
  7.                 //p.setAge(5);
  8.                 //PersonDemo.run();
  9.        
  10.                

  11.                                
  12.         }

  13. }


  14. class PersonDemo
  15. {
  16.        

  17.         private int age;
  18.         public void setAge(int age)    //我这里前面不加this,为什么还是能运行啊,毕老师不是说 成员变量跟局部变量同名时要加this以示区分吗??
  19.         {                                          //现在我的情况是加不加this都可以正常运行啊,大家看一下是什么问题。谢谢
  20.                 age = age;
  21.         }
  22.         String name ;
  23.        

  24.         PersonDemo()
  25.         {
  26.                 System.out.println("age="+age+"..."+"name="+name);
  27.         }
  28.         PersonDemo(String name)
  29.         {
  30.                 System.out.println("age="+age+"..."+"name="+name);       
  31.         }
  32.         PersonDemo(int age)
  33.         {
  34.                 System.out.println("age="+age+"..."+"name="+name);       
  35.         }
  36.        
  37.        
  38. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
系统会默认的认为等号左边的“age”是this.age
回复 使用道具 举报
本帖最后由 杨韬略 于 2014-5-27 11:28 编辑

解答:你的问题很简单,首先毕老师讲的没错的!
错误原因:你根本没调用setAge(int age) 方法!private int age;没被赋值!

class  ThisProblem

{

        public static void main(String[] args)
        {

                //new PersonDemo();

                PersonDemo p =new PersonDemo(5);//你调用的只是  PersonDemo(int age)这一个方法!

                //p.setAge(5);

                //PersonDemo.run();
}
}

class PersonDemo

{

        private int age;

        public void setAge(int age)    //我这里前面不加this,为什么还是能运行啊,毕老师不是说 成员变量跟局部变量同名时要加this以示区分吗??

        {                                          //现在我的情况是加不加this都可以正常运行啊,大家看一下是什么问题。谢谢

                age = age;//这两个age是同一个age

        }

        String name ;

        
//
//        PersonDemo()//这里没被调用的我先注释掉
//
//        {
//
//                System.out.println("age="+age+"..."+"name="+name);
//
//        }
//
//        PersonDemo(String name)
//
//        {
//
//                System.out.println("age="+age+"..."+"name="+name);        
//        }
//
        PersonDemo(int age)//你只是调用了这个方法而已!

        {

                System.out.println("age="+age+"..."+"name="+name);        
        }

        
        
}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
杨韬略 发表于 2014-5-27 11:25
解答:你的问题很简单,首先毕老师讲的没错的!
错误原因:你根本没调用setAge(int age) 方法!private int ...

PersonDemo(int age)
这个是对象初始化
创建新的对象p的时候不就调用了吗?
而这个PersonDemo(int age)方法里面前面的age不就调用了成员变量里的age变量吗??

还是不懂、、
应该怎么理解?
回复 使用道具 举报
杨韬略 发表于 2014-5-27 11:25
解答:你的问题很简单,首先毕老师讲的没错的!
错误原因:你根本没调用setAge(int age) 方法!private int ...

。、。。。我懂了。。。。。的初始化就是只调用了成员变量中的age,
所以跟setAge方法里面没关系。。。
谢谢、、
回复 使用道具 举报
EDDY_Liang 发表于 2014-5-27 13:53
。、。。。我懂了。。。。。的初始化就是只调用了成员变量中的age,
所以跟setAge方法里面没关系。。。
...

呵呵,不用谢
回复 使用道具 举报
没有this的话,不管你给setAge()里面赋值是几,调用getAge()运行出来的的结果都是0。所以要是没有this,调用getAge()运行时肯定会出问题的。
回复 使用道具 举报
小钟 中级黑马 2014-5-28 00:57:01
8#
public void setAge(int age)   
{                                         
                age = age;//这两个age是同一个age,不是this.age.是将传递给形参的值有赋值给了形参变量age
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马