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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class People
{
        int age;
        public void change(int i)
        {
                i++;
        }
        public void change2(People p)
        {
                p=new People();
                p.age++;
        }

        public void change3(People p,int i)
        {
                p.age++;//这里的age是局部变量不是没赋值吗?可以这样操作吗?
                i++;
        }
        public static void main(String args[])
        {
                People people=new People();
                int a=0;
                people.change(people.age);
                System.out.println(people.age);
        }
}
运行结果为什么是0。运行过程序中方法参数是怎么传值的?请大家来帮我解释一下。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

9 个回复

倒序浏览
public void change(int i) 中的i是一个局部变量,作用域为chang(int i){...}方法中.
  people.change(people.age);只是将age做为参数传人chang(int i){...}中,方法中也没有对age进行赋值,所以在chang(int i){...}age的值不会改变,依然为最初的默认值

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
在Java里声明成员变量不需赋初始值,如果声明局部变量则必须赋初始值,否则编译器会报错
这里p.age++ ,age为成员变量,new People()后age默认初始化值为0

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
        public static void main(String args[])
         {
                 People people=new People();
                 int a=0;
                 people.change(people.age);
                 System.out.println(people.age);
         }
你的main方法中,根本没有给age赋值...

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
  1. public class People
  2. {
  3.         int age;//这是成员变量,作用于类{}之间,并且会初始化,初始化值为0.所以你打印出来时0.
  4.         public void change(int i)
  5.         {
  6.                 i++;//这是局部变量,作用于方法{}之间,
  7.         }
复制代码
回复 使用道具 举报
HM周磊 发表于 2013-4-20 22:47

说的好 !!
回复 使用道具 举报
边道坚 发表于 2013-4-20 23:09
说的好 !!

:handshake
回复 使用道具 举报
黄玉昆 黑马帝 2013-4-21 07:39:32
8#
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
hdsjsql 发表于 2013-4-20 12:12
public void change(int i) 中的i是一个局部变量,作用域为chang(int i){...}方法中.
  people.change(peop ...

p.age++,这名话是什么意思。看了好久还是不懂。
回复 使用道具 举报
影响力147753321 发表于 2013-4-21 08:32
p.age++,这名话是什么意思。看了好久还是不懂。

表示传入chang3()的对象的age++,因为没有调用chang3(),所以这句代码没有执行到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马