接口

一种特殊的类,里面全部都是由全局变量和公共的抽象方法所组成

规范性,

interface interfaceName{
public static final int a;
public abstract void test();
}

接口的实现 也必须通过子类,使用关键字implement ,而且借口是可以多实现的

定义:public interface 接口名 extends 父接口1,父接口2...

interface修饰

都是使用public修饰

在首字符加上大写字母I

eg:public interface Iface()

支持多继承

内部类 在一个类中再定义一个类

一般内部类: 可以直接调用外部成员的变量

静态内部类,只能访问外部静态变量static

方法内部类:只能调用方法中的变量,且只能在方法中使用

匿名内部类 必须继承一个父类。或实现一个接口,一次性使用

对抽象类和接口使用

枚举类enum,继承与Java.lang.Enum

可以不用去创建新对象

定义:

public enum Size{
a,b,c,d;
}

java垃圾回收机制

负责回收堆内存的对象,不会回收任何物理资源

无法精确控制垃圾回收的运行

回收任何对象之前,都会先调用finalize()

1.最基本的建议就是尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null.我们在使用这种方式时候,必须特别注意一些复杂的对象图,例如数组,队列,树,图等,这些对象之间有相互引用关系较为复杂。对于这类对象,GC回收它们一般效率较低。如果程序允许,尽早将不用的引用对象赋为null.这样可以加速GC的工作。

2.尽量少用finalize函数。finalize函数是Java提供给程序员一个释放对象或资源的机会。但是,它会加大GC的工作量,因此尽量少采用finalize方式回收资源。

3.如果需要使用经常使用的图片,可以使用soft应用类型。它可以尽可能将图片保存在内存中,供程序调用,而不引起OutOfMemory.

4.注意集合数据类型,包括数组,树,图,链表等数据结构,这些数据结构对GC来说,回收更为复杂。另外,注意一些全局的变量,以及一些静态变量。这些变量往往容易引起悬挂对象(dangling reference),造成内存浪费。

5.当程序有一定的等待时间,程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。使用增量式GC可以缩短Java程序的暂停时间。

用Runtime.getRuntime.gc()或者System.gc();


一个系统的数据库是可以随时切换的,目前支持连接MySql和SqlServer,甚至以后还有可能连接Oracle数据库

利用抽象模版的思想和接口规范的思想实现以上场景

提示:数据库操作过程包含链接(connect),查询(query),释放(dispose),具体细节不用实现,体现思路即可。

思路:1定义接口,2在接口中实现SQL的连接,查询,释放 3 创建一个获取SQL的类 Isqlfactory4 调用  Isqlfactory这个类里面的sql的操作方法