如下关键字组合修饰类,是否合法:
(不合法)private abstract: private为私有的,不能被继承,而被abstract修饰的类(中有抽象方法 )是要被继承才能实现的
不合法)static abstract static为静态的,被static修饰的方法属性首先被加载到内存中(自己实现方法)。而被abstract修饰的类(中有抽象方法 )是要通过继承才能实现的,
(不合法)final abstract:被final修饰的类不能有子类,而被abstract修饰的类(中有抽象方法 )是要被继承才能实现其中的抽象方法的的,所以有冲突
final ,finally, finalize ,三者的作用和区别
finalize() // 该方法在对象被垃圾机制回收前,最后被触发.
final :final关键字,被final修饰的属性是常量,被final 修饰的方法不能被重写 ,被final修饰的类不能被继承。
finally:存在于异常之中。通常与try-catch块连用,存在于finally中的代码块为必须要执行的代码。且 可以没有catch只有try和
finally.
在函数中,如果finally之前,遇到了return 关键字,代码如何执行?会直接返回还是执行完finally中的代码在返回?
在函数中如果在finally之前,如果return关键字在异常之后,(如果有异常)执行完异常捕获之后,执行finally中的内容之后不会返回。如果没有异常不会反会。
为什么在比较对象的时候,我们需要重写hashcode和equals方法
也就是Object中的equals方法实际上比较的是两个对象是否是同一个(包含内存地址的相等),显然当我们只想比较两个对象的数值是否相等的时候这不是我们所想要的。
首先我们需要知道hashCode的作用,java中的hashCode的作用主要是用增加哈希存储结构(HashMap HashTable之流)的
查找速度,这些哈希存储结构可以通过hashCode来确定对象在哈希存储结构中的存储位置。通过重写这样就能保证equals返
回为true的两个对象一定是hashCode相等的