1、final修饰的变量的值不可以重赋值,注意区分基本类型和引用类型,对引用类型来说可以改变引用型变量所引用对象的内容。

2、final修饰的方法不可以重写。

3、string t= "abc"和string t= new ("abc")区别,前面实际是数组存储,并且有string缓存池,后面实际是对象存储,建议用前面的。

3、tostring ()返回该对象的类名+@+hashCode值。

4、单例模式:类定一个静态对象属性存储创建的对象,提供一个方法判断如果对象为空进行创建否则返回已经有对象;对象的构造器设置为pravite;主要应用场景:频繁打开唯一的资源,不用反复创建开销,提升系统性能。

5、工厂模式:定义接口方法;定义接口实现实例;在工厂类中定义返回实例的方法;在应用类中通过工厂的方法返回创建实例给引用接口用。主要应用场景:充分利用接口降低程序的模块耦合度实现解耦,在要变更引用实现类时只需要修改工厂类,不用查找每个引用类中修改了。

5、不可变类缓存实例:int1=Integer.valueOf(6) 和int2=Integer.valueOf(6) 的内存地址相同;原理1)、类定义了一个静态对象数组来记录对象的实例2)、如果对象实例有相同的不再进行新的创建直接返回地址。所以int1=Integer.valueOf(6) 比 in1= new Integer(6)要好些。

6、abstract不能修饰属性和局部变量,也不能修饰构造方法。抽象类提供多个子类的通用方法,把多个方法留给子类实现,这就是一种模板模式。

7、实现接口的方法时必须用public方法控制修饰符,因为接口的方法都是public的,重写父类方法访问权限只能更大或者相等。

8、接口和抽象类使用区别:接口体现的是系统总纲,它制定了系统各模块应该遵循的标准。抽象类更多的体现是模板设计模式。接口不能定义静态方法、不包含构造器、不能包含初始化块;一个类只能继承有一个抽象类,但可以实现多个接口。

9、命令模式:把执行的多种方法体行为抽象为接口;方法体实现接口;要执行那个方法体进行实例化类;在引用类中引用接口,把实例通过参数赋值引用接口;这样就达到了传递给引用类什么样的类就执行什么样的命令;使用场景:在某个方法需要实现某个行为,但这个行为具体实现无法确定,必须等到执行该方法时才能够确定,这样把不确定的行为定义为命令类进行传值完成命令模式。

10、非静态内部类保存了一个它寄存外部类对象的引用。

11、闭包和回调:闭包时一种能被调用的对象,它保存了创建它的作用域的信息。一个人即使老师又是程序员,它的work类具有两面性,可以定义一个类继承程序员,在类内部实现一个内部类继承教师的work方法回调外部类的方法实现。这种运用了闭包和回调。

12、对象在内存中的状态:1)、激活状态:有强引用时;2)、去活状态:在失去引用后 3)、死亡状态:彻底失去引用,并在调用对象的finalize方法后。

13、system.gc()和finalize方法执行具有不确定性,不要强制调用。

14、强引用:明确调用时;软引用:SoftReference当内存空间不足时会进行收回,当内存空间足够时不会进行收回;弱引用:weakReference当系统垃圾回收机制运行时不管内存空间是否足够都回收;虚引用:PhantomReference不能单独使用必须和引用队列一起使用,主要用于跟着对象的回收状态。

15、native关键字修饰一个抽象方法,该抽象方法一般有非java语言实现;strictfp精确浮点运算;