一、面向对象思考

思想

就像是手工设计动态数组、链表等数据结构一样,要用设计这个字眼去面向对象思考。
同时还要关注类与类之间的关系有关联、聚集、组合,在设计多个类的过程中要有这些意识

image.png

基本数据类型值及其包装类

都存在 java.lang 里面

Integer、Long、Float、Double、Boolean、Character、Short、Byte
image.png

基本数据类型和其对象化之后的包装类类型之间的自动转换

Integer intObject = new Integer (2); 等价于 Integer intObject = 2;

BigInteger 类和 BigDeciml 类用于表示任意大小和精度的整数或是二进制数

二、对象和类

OOP 阶梯图

“OOP 阶梯图”—— 类的多个特性,同时以对象对基础

类的组成

数据域、构造函数、方法(C++里面的说法是数据成员和成员函数)
类中不能存在可执行语句

构造函数

  • 和类同名、重载、没有返回值

  • 构造函数初始化优先级
    1. 静态成员变量初始化顺序高于非静态成员变量
    2. 成员变量的初始化顺序优于构造函数
    3. 静态成员变量只初始化一次,就是第一次被访问的时候
    4. 存在多个静态成员变量的时候,按照次序依次执行

Window(2)
Window(1)
Window(2)
Window(3)
House()
Window(33)
f()

数据域的默认值

对于对象而言,不赋值也会有默认的。之前的数组就是如此

各个数据域按照之前的基本上的默认初值,如果是其他的类型,则空

对象的创建和访问

  1. 通过引用变量来访问对象,创建的类的对象被内存分配了内存空间,可以用引用变量来访问
  2. 对象类型都需要用 new 来新建
ClassName objectRefVar = new ClassName();

Circle myCircle = new Circle();

使用成员变量和成员函数

mycircle.radius
mycircle.getArea()

调用静态函数,动态函数需要在自己类下面调用自己的函数

“炸宿舍”

关于老师提出来的炸宿舍例子

对象间的赋值和基本类型的赋值,能改变的一定是基本数值类型,所谓的数组名抑或是对象名,都只是地址映射

垃圾回收机制和 this

System.gc(); // 提醒垃圾回收

image.png

静态变量、常量和方法

静态成员变量:静态成员变量可以被类的所有实例共享(比如计数变量用到)
静态方法:不能访问类的实例成员
关于静态变量、静态方法、实例变量、实例方法

可见性修饰符

“析构函数”

protected void finalize() throwsable {
super.finalize();
System.out.println("Person - finalize");
}

内部类

内部类只给该类使用(私有自己用,同时写静态的),就如 LinkedList 类的设计

##