写在前面
作为5年的Java老鸟, 面对专业考试还是新手一样, 汗颜, 此文为考试整理, 知识角度相对较偏, 不够实用, 各位马马虎虎看看就行.
编程规范
各花入个眼, 规范是死的, 人是活的.
常见规则
- 大括号行首和行位之间不要有空行
- 泛型变量可单个大写字母+一个数字
- 代码每行限长120窄字符
- 每行不超过1个语句
- 文件不超过2000行
- 方法不超过50行
- 嵌套不超过5层
- JavaDoc修饰public或protected修饰的类 接口 枚举 方法和成员
基础类型
- byte int long short都可用10进制,8进制,16进制, 8进制0前缀, 16进制0x前缀
- 浮点到整数的转换通过舍弃小数得到
- 浮点数比较需要使用compare
- +操作时, 操作数都将转为int及以上执行
- +操作时, 操作数均为final, 则不需要强转
类加载
双亲委派模式
- 当自定义一个类加载器时,为了保证赋予权限的完整,覆写getPermissions()方法时,需调用基类的getPermission()方法, 否则该自定义类加载器加载的类具有的权限就会完全独立于系统全局策略文件规定的权限, 该类的权限覆盖了这些系统全局文件规定的权限。
- 类加载支持文件类型: jar war ear javawebenterprise
- 加载 验证 准备 解析
- 类的卸载. 自定义类加载器加载的类才会被卸载
面向对象
- 重写 (overload):子类对父类接口的重写,相同的返回值和形参 使用@override注解,用来检测是否是有效的正确覆写,但是不写不会编译时报错
- 隐藏 (hide):父类同名的成员变量和静态方法只会被隐藏(静态绑定导致),父类的非静态方法会被覆盖(动态绑定导致)
- 重载 (override):同类之间函数的不通返回值和形参
- 遮蔽 (shadow): 一个变量、方法或类可以分别遮蔽(shadow)在类内部具有相同名字的变量、方法或类。如果一个实体被遮蔽了,name就无法通过简单名引用到它。
注意
- 不能在父类的构造函数调用子类的覆写方法
抽象类和接口
- 接口的成员变量一定是public static final的
- 方法一定是public abstract的
- 方法可添加default, 实现默认实现
集合
- ArrayList.SubList返回的是内部类的实例, 不可直接修改和赋值, 且外部list修改, 子list会同步修改
循环
- 浮点数不能作为循环变量
- i++可能会溢出为负数, 导致死循环
异常
- 非受检的:NullPointerException,ClassCastException,IllegalArgumentException,ArrayIndexsOutOfBoundsException,ArithmeticException
- 受检异常: Exception,FileNotFoundException,IOException,SQLException
- 在finally语句块中关闭流操作,抛出异常时直接忽略该异常,不做任何处理或者仅仅是记录日志