Java(L1)--面向对象

Java知识点梳理

Chapter 3 面向对象的基本概念

  1. 堆内存与栈内存

    • 堆内存:存放对象的属性内容,需要new关键词进行开辟。
    • 栈内存:保存堆内存地址。

    每次使用new关键词都会开辟一块堆内存

  2. 引用传递的本质:一块堆内存空间空间可以同时被多个栈内存共同指向,并且都可以修改堆内存空间中的数据。

  3. Java中的垃圾回收机制:当GC检测到一块堆中一个对象不再被任何栈内存所引用时,会不定期对这个堆内存中保存的数据进行回收。

  4. 开发中一般情况下所有类中定义的属性都要使用private进行声明,如果需要外部使用则要定义相应的getter和setter,绝大多数情况下,此两者必须定义。

  5. 构造方法的核心作用:在类对象实例化时设置属性的初始化内容。对象实例化的过程包括类的加载、内存的分配、默认值的设置和执行构造方法。

  6. 匿名对象:没有栈内存指向,只能使用一次,之后便成为垃圾等待GC回收。

  7. “==”与equals

    • “==”:对基本数据类型比较地址;对引用数据类型比较内存地址
    • equals:若定义类时未对equals()进行重载,则与“==”等价。

    String类对equals()进行了重载,可比较字符串内容而非地址。

  8. String类的两种实例化方式:

    • 直接赋值:String str = “hello”;开辟一块堆内存空间存放字符串常量,并加入String对象池,若再次进行相同的操作则不会开辟新的堆内存空间,直接指向已有的堆内存空间;
    • 构造方法:开辟两块堆内存空间,其中一块成为垃圾,不会加入对象池,但可以使用intern()方法手动入池。
  9. 字串符一经定义不可改变。

  10. this关键字:

    • 调用本类属性

    • 调用本类方法:普通方法this.fun();构造方法this()

      使用this()调用本类构造方法时必须将其放在构造方法首行且必须保留好调用的出口。

    • 表示当前对象

  11. 对象的比较:

    • 本类接收自己的引用,再与本类当前对象(this)进行比较;
    • 先进行null判断,以防止NullPointerException的出现;
    • 可先进行地址的比较,同一个对象的地址相同,可防止浪费性能比较同一个对象的情况;
    • 依次进行各个属性的比较,全部相同返回true,否则返回false。
  12. static关键字:

    • 定义static公共属性:本类全部对象公用的属性,存放于全局数据区。对全局属性进行修改时最好不要使用某个对象对其进行修改,而是由类直接进行修改;非static属性必须经过实例化才会分配堆空间、才可以使用,而static属性可以由类名直接使用。
    • 定义static静态方法:可以在没有实例化对象产生的情况下直接由类进行调用。
    • 静态方法只能直接调用静态方法,非静态方法必须由对象调用。若类中没有定义属性,则可以直接把所有方法定义为静态方法。
  13. 内部类:

    • 属性访问:内部类可以直接访问外部类的私有属性,外部类可以利用内部类对象以“对象.属性”的方式访问内部类的私有属性。如果一个内部类只希望在外部类内访问而不能被外部调用,可以使用private定义私有内部类。
    • 内部类的实例化:外部类.内部类 对象 = new 外部类().new 内部类(),即必须先实例化一个外部类对象。
    • static内部类:相当于定义了外部类,只能访问外部类的static属性或方法,可以通过 外部类.内部类 = new 外部类.内部类()。
  14. 类属于引用数据类型,进行引用传递时传递的是堆内存的使用权。

  15. 对象数组的使用要分成两个部分:首先是声明数组,然后是为数组开辟空间,开辟空间后数组中每个元素的值都是null。

  • To Be Continued. *

你可能感兴趣的:(Java(L1)--面向对象)