欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

成员变量 全局变量 静态方法 非静态方法 内存图解

程序员文章站 2022-04-01 11:28:27
...
//成员变量和全局变量
/*
	成员变量和局部变量的区别?
		A:在类中的位置不同
			成员变量:在类中方法外
			局部变量:在方法定义中或者方法声明上
		B:在内存中的位置不同
			成员变量:在堆内存
			局部变量:在栈内存
		C:生命周期不同
			成员变量:随着对象的创建而存在,随着对象的消失而消失
			局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
		D:初始化值不同
			成员变量:有默认初始化值
			局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
			
		注意事项:
			局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
*/

成员变量 全局变量 静态方法 非静态方法 内存图解

成员变量 全局变量 静态方法 非静态方法 内存图解

//静态方法
/*
    定义一个人类
    
    姓名和年龄都是变化的,这个我能接收,因为每个人的姓名和年龄是不同的。
    但是,我们现在选取的几个人都是中国人,他们的国籍是一样的。
    一样的国籍,我每次创建对象,在堆内存都要开辟这样的空间,
    我就觉得有点浪费了。怎么办呢?
        针对多个对象有共同的这样的成员变量值的时候,
        Java就提高了一个关键字来修饰:static。
*/

    static的特点:(它可以修饰成员变量,还可以修饰成员方法)
        A:随着类的加载而加载
            回想main方法。
        B:优先于对象存在
        C:被类的所有对象共享
            举例:咱们班级的学生应该共用同一个班级编号。
            其实这个特点也是在告诉我们什么时候使用静态?
                如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
            举例:
                饮水机(用静态修饰)
                水杯(不能用静态修饰)
        D:可以通过类名调用
            其实它本身也可以通过对象名调用。
            推荐使用类名调用。
            
            静态修饰的内容一般我们称其为:与类相关的,类成员
*/

/*
    static关键字注意事项
        A:在静态方法中是没有this关键字的
            如何理解呢?
                静态是随着类的加载而加载,this是随着对象的创建而存在。
                静态比对象先存在。
        B:静态方法只能访问静态的成员变量和静态的成员方法
                静态方法:
                    成员变量:只能k访问静态变量
                    成员方法:只能访问静态成员方法
                非静态方法:
                    成员变量:可以是静态的,也可以是非静态的
                    成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
            简单记:
                静态只能访问静态。
*/

成员变量 全局变量 静态方法 非静态方法 内存图解