接口
一种特殊的类,里面全部都是由全局变量和公共的抽象方法所组成
规范性,
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的操作方法