成员变量 全局变量 静态方法 非静态方法 内存图解
2017-06-26 23:29
295 查看
//成员变量和全局变量 /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 D:初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。 注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 */
//静态方法
/*
定义一个人类
姓名和年龄都是变化的,这个我能接收,因为每个人的姓名和年龄是不同的。
但是,我们现在选取的几个人都是中国人,他们的国籍是一样的。
一样的国籍,我每次创建对象,在堆内存都要开辟这样的空间,
我就觉得有点浪费了。怎么办呢?
针对多个对象有共同的这样的成员变量值的时候,
Java就提高了一个关键字来修饰:static。
*/
static的特点:(它可以修饰成员变量,还可以修饰成员方法)
A:随着类的加载而加载
回想main方法。
B:优先于对象存在
C:被类的所有对象共享
举例:咱们班级的学生应该共用同一个班级编号。
其实这个特点也是在告诉我们什么时候使用静态?
如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
举例:
饮水机(用静态修饰)
水杯(不能用静态修饰)
D:可以通过类名调用
其实它本身也可以通过对象名调用。
推荐使用类名调用。
静态修饰的内容一般我们称其为:与类相关的,类成员
*/
/*
static关键字注意事项
A:在静态方法中是没有this关键字的
如何理解呢?
静态是随着类的加载而加载,this是随着对象的创建而存在。
静态比对象先存在。
B:静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能k访问静态变量
成员方法:只能访问静态成员方法
非静态方法:
成员变量:可以是静态的,也可以是非静态的
成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
简单记:
静态只能访问静态。
*/
相关文章推荐
- 全局变量,静态全局变量,静态局部变量,类静态成员内存分配与初始化问题
- (转)10行代码说说成员变量,局部变量和静态方法
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- 图解Java多态内存分配以及多态中成员方法的特点
- C++ 利用类的静态成员特性定义全局变量来存储信息
- xcode中用静态成员函数来代替全局变量
- 全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- PHP学习笔记【15】--全局变量,静态变量,静态方法,php方法重载
- 图解Java多态内存分配以及多态中成员方法的特点
- 静态-全局静态函数(或变量)和类的静态成员函数(或变量)
- 全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别
- 静态块,静态属性,成员变量,静态方法,构造函数执行顺序
- 内存分配方式(动态/静态)的不同对const变量(全局/局部)访问性的影响
- xcode中用静态成员函数来代替全局变量
- 全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别以及栈与堆的区别
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- PHP学习笔记【15】--全局变量,静态变量,静态方法,php方法重载