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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Vision-V 中级黑马   /  2016-7-3 23:29  /  807 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Vision-V 于 2016-7-3 23:30 编辑

//下面的代码可以直接copy,然后运行哦~

class Deme_Student {                            //测试学生类
    public static void main(String[] args) {   

        
        new Student().print();                    //使用匿名对象引用方法    //输出A
        
        Student s1 = new Student("老龚龚",30);    //创建了参数对象       
        s1.print();                                //对象引用方法              //输出B

        new Student().print();                    //使用匿名对象引用方法      //输出C //A与C的结果会是一样的吗?
    }
}

class Student {
    static String name = "老龚";                //静态成员变量
    int age = 26;                                //成员变量


    public Student() {}                            //空参构造方法

    public Student(String name,int age) {       //参数构造方法
       this.name = name;
        this.age = age;
    }


    public void print() {                        //方法:打印所有元素
        System.out.println(name + "说他今年" + age + "岁");        
    }
}


/*
结论:

        一般我们在使用静态成员变量的情况下,是不会再修改该成员变量了,因为我们就是想这个类(Student)里面的所有对象拥有这一个共同的属性(name)且拥有固定的值("老龚"),但是如以上代码,当我们创建这个类Student的时候,定义了静态成员变量的初始化值,而在测试类学生类中,使用了参数构造创建对象(或者使用set方法修改了静态成员变量),且输入了一个与静态成员变量(name)初始值不一样的值("老龚龚"),这时候,我们再次创建的对象默认的静态成员变量(name)初始化值就变成我们修改过后的值("老龚龚")了.
         静态成员变量存在于方法区,自解压文件的静态区,当我们在该类的外部修改了静态成员变量的初始化值,修改后的值会覆盖静态区中的初始值,从此占山为王.
*/

3 个回复

正序浏览
sgzqsw 来自手机 中级黑马 2016-7-3 23:55:05
板凳
继续努力,上就业班。
回复 使用道具 举报

素阔以~~~  一起干巴爹...
回复 使用道具 举报
{:2_36:}加油↖(^ω^)↗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马