详述面向对象(2)

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

你可能感兴趣的:(详述面向对象(2))