1.try catch finally 中finally中的代码不会执行的情况:JVM终止运行;程序所在线程死亡;关闭CPU。
2.语法糖:在对语法不改变功能的情况下,简化代码量并提高可读性。
3.值传递:如果是基本类型传递字面量值拷贝,如果是引用类型传递对象在堆中的地址值拷贝。
4.序列化和反序列化好处:实现数据持久化;利用序列化实现远程通信。
5.泛型通配符:上界通配符(?),List<? extends Number> list并且声明变量list能使用Number中的方法。下界通配符号使用super。上界和下界的使用场景用In,out判别法,输出变量用下界,输入变量用上界。无界通配符在方法中的使用,例如可以打印多种类型的值。如下图所示
6.Java反射获取对象的方式:1.具体类 Class alunbarClass = TargetObject.class;2.通过类全路径获取Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");3.创建实例获取TargetObject o = new TargetObject();Class alunbarClass2 = o.getClass();4.通过类加载器获取对象不会初始化。ClassLoader.getSystemClassLoader().loadClass("cn.javaguide.TargetObject");
7.代理模式:主要作用是为了扩展目标对象功能。分为静态代理和动态代理。
静态代理步骤如图所示
8.浮点数丢精度的原因在于无法使用二进制精确表示。BigDecimal类实现对浮点数的运算,不造成精度丢失。使用BigDecimal定义浮点数推荐使用方法。
使用BigDecimal类divide方法建议使用3个参数版本
BigDecimal等值比较使用compareto(),使用equals()会比较精度。
9.List:可重复、有序,排序;Set:无重复、无序;Queue:队列,先进先出,有序可重复;Map:键值对,key无序不重复。