详述面向对象(2)
2018-02-10 本文已影响0人
Java中最亮的BUG
1. 代码:Student s = new Student(); 做了哪些事情?
(1)把Student.class文件加载到内存
(2)在栈内存s开辟空间
(3)在堆内存为学生对象申请空间
(4)给学生的成员变量进行默认初始化。null,0
(5)给学生的成员变量进行显示初始化。林青霞,27
(6)通过构造方法给成员变量进行初始化。张艺兴,30
(7)对象构造完毕,把地址赋值给s变量
2. static关键字
(1)静态的意思。可以修饰成员变量和成员方法。
(2)静态的特点:
A: 随着类的加载而加载
B: 优先与对象存在
C: 被类的所有对象共享
这其实是我们判断该不该使用静态的依据。
举例: 饮水机和水杯的问题思考
D: 可以通过类名调用
既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。
(3)静态内存图
静态的内容在方法区的静态区
(4)静态的注意事项
A: 在静态方法中没有this对象
B: 静态只能访问静态
(5)静态变量和成员变量的区别
A: 所属不同
静态变量: 属于类,类变量
成员变量: 属于对象,对象变量,实例变量
B: 内存位置不同
静态变量: 方法区和静态区
成员变量: 堆内存
C: 生命周期不同
静态变量: 静态变量是随着类的加载而加载,随着类的消失而消失
成员变量: 成员变量是随着对象的创建而存在,随着对象的消失而消失
D: 调用不同
静态变量: 可以通过对象名调用,也可以通过类名调用
成员变量: 只能通过对象名调用
(5) main方法是静态的
public: 权限最大
static: 不用创建对象调用
void: 返回值给jvm没有意义
main: 就是一个常见的名称
string[] args: 可以接受数据,提供程序的灵活性
格式: java MainDemo hello world java