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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个代码和视频有点看不懂。
class Demo2_Person {
        public static void main(String[] args) {
                Person p = new Person();
                p.speak();
        }
}
class Person {
        String name;                                               
        int num;

        public void speak() {
                int num = 10;                                               
                System.out.println(name);
       
                System.out.println(num);
        }
}

8 个回复

倒序浏览
首先我们看一下,程序开始运行。:
class Demo2_Person {
        public static void main(String[] args) {
                Person p = new Person(); (这里创建了Person类的对象p,同时访问Person类的无参构造(因为你没有写,所以系统隐藏自动给出,)对Person类的数据进行初始化。
p.speak();  访问Person类中的speak方法。然后我们进行入到Person类中。
class Person {
        String name;     //String name是成员变量,有初始化值为null                                          
        int num;      // 同理 int num 也是成员变量,初始化值为0。
因为调的是sperk方法,所以进行到sperk方法中。num给值为10(因为上面已经定义了num为成员变量,所以
会把这个值给成成没变量num。)
   System.out.println(name);
       // 输出name,没有给值,所以输入默认值
                System.out.println(num);//给值了,所以输出10
最后:
                成员变量:随着对象的创建而存在,随着对象的消失而消失
                局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报 1 0
二楼好详细的讲解
回复 使用道具 举报
成员变量,定义在类中方法外;
局部变量,定义在方法中
回复 使用道具 举报
iori 发表于 2015-12-28 18:14
首先我们看一下,程序开始运行。:
class Demo2_Person {
        public static void main(String[] args) ...

八神庵{:2_43:}
回复 使用道具 举报
局部变量在方法外面不能被使用,成员变量,本类中都可以使用!
回复 使用道具 举报
二楼解答完美
回复 使用道具 举报
在类中的位置不同
        成员变量:在类中方法外
        局部变量:在方法定义中或者方法声明上
在内存中的位置不同
        成员变量:在堆内存(成员变量属于对象,对象进堆内存)
        局部变量:在栈内存(局部变量属于方法,方法进栈内存)
生命周期不同
        成员变量:随着对象的创建而存在,随着对象的消失而消失
        局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
        成员变量:有默认初始化值
        局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

都是一些笔记上的内容
回复 使用道具 举报
Zrz_K 中级黑马 2015-12-28 23:27:06
9#
楼上说的很详细了,顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马