本文已参与「新人创作礼」活动,一起开启掘金创作之路。
9.1.1 final、finally、finalize的区别
final: 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。
finally: 异常处理语句结构的一部分,表示总是执行。
finalize: Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法。提供垃圾收集时的其他资源回收,例如关闭文件等。该方法更像是一个对象生命周期的临终方法,当该方法被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对象“死亡”,这是一个被动的方法(其实就是回调方法),不需要我们调用。
9.1.2 &和&&的区别
&运算符有两种用法:(1)按位与;(2)逻辑与。
&&运算符是短路与运算。
举个例子:
@Test
public void 短路与的区别 (){
Person person = null;
System.out.println(person!=null && "3".equals(person.getAge()));
System.out.println(person!=null & "3".equals(person.getAge()));
}
&&: 短路,不会走完全代码。
&: 按位与,会走完整个代码。
总结:如果person为空,后面执行对比的话,会报空指针。
9.1.3 跳出多重循环
可以简单标识符[outer]该标识自定义名称后+冒号。
配合break +标识;
如下:
@Test
public void 跳出多重循环(){
outer:
for(int i =0;i<10;i++){
System.out.println(i);
for(int j=0;j<10;j++){
System.out.println(j);
for(int k=0;k<10;k++){
System.out.println(k);
break outer;
}
}
}
}
9.1.4 final修饰
final修饰类: final最终类,不能被继承,不能派生子类。
final修饰方法: 1、修饰静态方法:没什么影响。 2、修饰实例方法:不能被重写,报错。
final修饰成员变量: 总规则:final修饰的变量,有且仅有被复制一次!!!
修饰静态成员变量: 定义的时候复制,要么在静态代码块中赋值。
修饰实例成员变量: 常量,final修饰的静态成员变量就是常量!(public static fianl String NAME;)
9.1.5 重载和重写的区别
重载: 发生在同一个类中,方法名必须相同,参数类型、个数、顺序必须不同。方法返回值和访问修饰符可以不同,发生在编译时。
重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。
9.1.6 类中构造器
构造器: 不能有返回值修饰,如修饰返回值不被调用。类的构造器使用private修饰,该类不给调用者new。不能重写,可以被重载。
重载例子:
public class BeanTest {
public BeanTest(){
System.out.println("类初始化构造器");
}
public BeanTest(String name){
System.out.println(name);
}
}
提示:不能加任何返回值类型,包括void。