一、面向对象思考
思想
就像是手工设计动态数组、链表等数据结构一样,要用设计这个字眼去面向对象思考。
同时还要关注类与类之间的关系有关联、聚集、组合,在设计多个类的过程中要有这些意识
就像是之前的数据结构课程一样,像那样就是面向过程,全都是写函数来实现操作
基本数据类型值及其包装类
都存在java.lang里面
Integer、Long、Float、Double、Boolean、Character、Short、Byte
基本数据类型和其对象化之后的包装类类型之间的自动转换
Integer intObject = new Integer (2);
等价于 Integer intObject = 2;
BigInteger 类和BigDeciml类用于表示任意大小和精度的整数或是二进制数
二、对象和类
OOP阶梯图
“OOP阶梯图”—— 类的多个特性,同时以对象对基础
类的组成
数据域、构造函数、方法(C++里面的说法是数据成员和成员函数)
类中不能存在可执行语句
构造函数
- 和类同名、重载、没有返回值
- 构造函数初始化优先级
- 静态成员变量初始化顺序高于非静态成员变量
- 成员变量的初始化顺序优于构造函数
- 静态成员变量只初始化一次,就是第一次被访问的时候
- 存在多个静态成员变量的时候,按照次序依次执行
Window(2) Window(1) Window(2) Window(3) House() Window(33) f()
数据域的默认值
对于对象而言,不赋值也会有默认的。之前的数组就是如此
各个数据域按照之前的基本上的默认初值,如果是其他的类型,则空
对象的创建和访问
- 通过引用变量来访问对象,创建的类的对象被内存分配了内存空间,可以用引用变量来访问
- 对象类型都需要用new来新建
ClassName objectRefVar = new ClassName(); Circle myCircle = new Circle();
使用成员变量和成员函数
mycircle.radius mycircle.getArea()
调用静态函数,动态函数需要在自己类下面调用自己的函数
“炸宿舍”
关于老师提出来的炸宿舍例子
对象间的赋值和基本类型的赋值,能改变的一定是基本数值类型,所谓的数组名抑或是对象名,都只是地址映射
垃圾回收机制和this
System.gc(); // 提醒垃圾回收
静态变量、常量和方法
静态成员变量:静态成员变量可以被类的所有实例共享(比如计数变量用到)
静态方法:不能访问类的实例成员
关于静态变量、静态方法、实例变量、实例方法
可见性修饰符
“析构函数”
protected void finalize() throwsable { super.finalize(); System.out.println("Person - finalize"); }
内部类
内部类只给该类使用(私有自己用,同时写静态的),就如LinkedList类的设计
评论区