Java的面向对象( 五 )


 
垃圾回收

  1. 垃圾回收机制只回收VM堆内存里的对象空间 。
  2. 对其他物理连接,比如数据库连接、输入流输出流、Socket连接无能为力
  3. 现在的JVM有多种垃圾回收实现算法,表现各异 。
  4. 垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制执行 。
  5. 可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象 。
  6. 程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否进行垃圾回收依然不确定 。
  7. 垃圾回收机制回收任何对象 之前 ,总会先调用它的finalize方法(如果覆盖该方法,让一个新的引用变量重新引用该对象,则会重新激活对象) 。|
  8. 永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用 。

Java的面向对象

文章插图
 
equals()方法
Java的面向对象

文章插图
 
==与equals()区别?
Java的面向对象

文章插图
 
==运算符
  1. 可以使用在 基本数据类型 变量和 引用数据类型 变量中
  2. 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等(不一定类型相同)
    如果比较的是引用数据类型变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
equals()方法
  1. 是一个方法,而非运算符
  2. 只使用于引用数据类型
  3. object类中equals()的定义
public boolean equals (Object obi){return (this == obj);}说明: Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
  1. 像String,Data,File,包装类等都重写了Object类中的equals()方法 。重写后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容”是否相同
public static void main(String[] args) {Date data1 = new Date(32432525324L);Date data2 = new Date(32432525324L);System.out.println(data1.equals(data2));//trueString str1 = new String("hello");String str2 = new String("hello");System.out.println(str1.equals(str2));//trueSystem.out.println(str1 == str2);//false}
  1. 通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的“实体内容”是否相同 。那么我们就需要对Object类中的equals()方法重写.重写的原则:比较两个对象的实体内容是否相同

Java的面向对象

文章插图
 
toString()
  1. 当我们输出一个对象的应用时,实际上就是调用当前对象的toString()方法
  2. 像String,Date,File,包装类等都重写了Object类中的toString()方法使得在调用对象的toString()时,返回“实体内容”信息
  3. 自定义类也可以重写toString()方法,当调用此方法时,返回对象的“实体内容”

Java的面向对象

文章插图
 
Java中的JUnit单元测试步骤;
1.创建Java类,进行单元测试 。
此时的Java类要求:
①此类是public的 ②此类提供公共的无参的构造器
2.此类中声明单元测试方法 。
此时的单元测试方法: 方法的权限是public,没有返回值,没有形参
3.此单元测试方法上需要声明注解:@Test,并在单元测试类中导入:import org.junit.Test;
4.声明好单元测试方法以后,就可以在方法体内测试相关的代码 。
包装类(Wrapper)的使用
Java的面向对象

文章插图
 
1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征
2.掌握的:基本数据类型、包装类、String三者之间的相互转换
基本数据类型—>包装类:调用包装类的构造器 (对象参数)
包装类—>基本数据类型:调用包装类x×x的x×xValue() (方便做±*/运算)


推荐阅读