黑马程序员技术交流社区

标题: 关于类中成员变量和局部变量的问题。 [打印本页]

作者: 影响力147753321    时间: 2013-4-20 12:01
标题: 关于类中成员变量和局部变量的问题。
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。运行过程序中方法参数是怎么传值的?请大家来帮我解释一下。
作者: hdsjsql    时间: 2013-4-20 12:12
public void change(int i) 中的i是一个局部变量,作用域为chang(int i){...}方法中.
  people.change(people.age);只是将age做为参数传人chang(int i){...}中,方法中也没有对age进行赋值,所以在chang(int i){...}age的值不会改变,依然为最初的默认值
作者: 周音匀    时间: 2013-4-20 12:46
在Java里声明成员变量不需赋初始值,如果声明局部变量则必须赋初始值,否则编译器会报错
这里p.age++ ,age为成员变量,new People()后age默认初始化值为0
作者: smallsea    时间: 2013-4-20 13:07
        public static void main(String args[])
         {
                 People people=new People();
                 int a=0;
                 people.change(people.age);
                 System.out.println(people.age);
         }
你的main方法中,根本没有给age赋值...
作者: HM周磊    时间: 2013-4-20 22:47
  1. public class People
  2. {
  3.         int age;//这是成员变量,作用于类{}之间,并且会初始化,初始化值为0.所以你打印出来时0.
  4.         public void change(int i)
  5.         {
  6.                 i++;//这是局部变量,作用于方法{}之间,
  7.         }
复制代码

作者: 边道坚    时间: 2013-4-20 23:09
HM周磊 发表于 2013-4-20 22:47

说的好 !!
作者: HM周磊    时间: 2013-4-20 23:13
边道坚 发表于 2013-4-20 23:09
说的好 !!

:handshake
作者: 黄玉昆    时间: 2013-4-21 07:39
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
作者: 影响力147753321    时间: 2013-4-21 08:32
hdsjsql 发表于 2013-4-20 12:12
public void change(int i) 中的i是一个局部变量,作用域为chang(int i){...}方法中.
  people.change(peop ...

p.age++,这名话是什么意思。看了好久还是不懂。
作者: hdsjsql    时间: 2013-4-21 09:56
影响力147753321 发表于 2013-4-21 08:32
p.age++,这名话是什么意思。看了好久还是不懂。

表示传入chang3()的对象的age++,因为没有调用chang3(),所以这句代码没有执行到




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2