对象
- 名称唯一
- 属性、数据区(值)
- 方法、功能
类
- 在软件中,类是一个模板,定义了一类事物的状态和行为
- 类是一种抽象的复合数据类型
类与对象的关系,这个跟JS也差不多
- 类和对象之间是抽象和具体的关系。
类是创建对象的模板,对象是类的具体实例 - 类(class)是总称,对象是个体,因此对象(object)也叫实例(instance)。
- 需求中提取类,即抽象的过程。
- 创建一个类就是创建一个新的数据类型,实例化一个类,就得到一个对象。
- 类的构成分别是成员变量和成员方法
- 类的成员变量可以是基本类型、复合数据类型、数组、集合等
- 类的成员方法用于处理该类的数据
类的定义
- 格式
- 关键字class表示类定义的开始
- 修饰符分为访问控制符、类型说明符
1.类的类型说明符:final、abstract
2.类的访问控制符:public、默认(没有访问控制符)
公共类能被其它所有的类访问和引用。
一个Java源程序中只能有一个public类,这个类一般含有main方法
不用public定义的类,只能被同一个包中定义的类访问和引用
对象的生成、使用、内存释放
构造函数(Constructor) 是一类特殊的成员方法 ,用new 初始化 新创建对象
- 类名 对象名 = new 构造函数(实际参数)
- 从形式上来讲,它有以下特点:
与类同名
没有任何返回值;
在语法结构上与一般方法相同 - new关键字的作用
为对象分配内存空间
引起对象构造方法的调用。
为对象返回一个引用(地址) - 类的默认构造函数
Object就是默认的父类
如果类中没有定义构造函数,编译器会自动创建一个默认的不带参数的构造函数
为类定义了构造函数,就不会出现被默认创建的情况了
如果类中提供的构造函数都不是无参数构造函数,却调用无参数构造函数初始化此类的对象,编译时会产生语法错误
对象的创建及使用
Person p1=new Person(“flower”,”pink”,23)
Person p2=p1;// 此时p2拿到的是个引用的地址哦,这个跟JS一样
Java内存释放
判断一个存储单元是否是垃圾的依据是:该存储单元所对应的对象是否仍被程序所用。
判断一个对象是否仍为程序所用的依据是:是否有引用指向该对象。
- 自动回收机制。
Java虚拟机后台线程负责内存的回收 - 强制回收机制
System.gc() 强制立即回收垃圾,但系统并不保证会立即进行垃圾回收
Java的垃圾收集器自动扫描对象动态内存区,对引用对象标记,把没有引用的对象收集并释放
java虚拟机可自动判断并收集到“垃圾”, 但一般不会立即释放
Java系统自己定义了一套垃圾回收算法,用来提高垃圾回收效率
Java内存强制回收没有提供析构方法,但提供了一个类似的方法:protected void finalize()
Java虚拟机在回收对象存储单元之前先调用该对象的finalize方法,如果该对象没有定义finalize方法, 先调用该对象默认的finalize方法。