面向对象
1. 多态
除非父类直接new子类,否则父类不能直接转子类.
子类可以强转父类,但它本质还是子类对象,调用的都是子类重写过的的方法.
重点:
方法:编译看左边,运行看右边.
属性:编译运行,都看左边.
2. 静态
静态代码块随着类的加载(加载在内存时)而执行,且只执行一次,早于对象的创建,存在方法区的静态域中.
运行顺序: 由父及子,静态先行.
接口
一个类用父类方法写法为super.xxx(),调用实现的接口方法是接口类.super.xxx().
接口不能有构造器,abstract类一般有构造器(便于子类实例化).
BeanUtils
BeanUtils.copyProperties(Object soure, Object target) 对象属性拷贝
BeanUtils.instantiateClass(Class clazz) 类实例化
视图对象
VO(View Object): 视图对象,用于展示层,把某个页面或控件的数据封装.
DTO(Data Transfer Object): 数据传输对象,用于展示层与服务层之间传输.
DO(Domain Object): 领域对象,从现实汇总抽离出的业务实体.
PO(Persistent Object): 持久化对象,跟持久化(关系数据库)的数据结构一一对应的映射.
嵌套循环
1.在循环上加上标签,这样break时可以指定跳出指定的那层循环,例:
label:for (int i = 0; i < 2; i++) {
for (int j = 0; j <4; j++) {
break label;
}
}
2.要遵循外小内大原则,异常处理写循环外头.
注: 增强for循环里直接修改值不会修改原有的值,而是修改了临时的值,如果值是引用地址值的话,是可以修改的.