Java 中 final,finally,finalize 有什么不同?
final 可以用来修饰类,方法,变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的
finally 则是 java 保证重点代码一定要被执行的一种机制。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。
finalize 是基本类 java.lang.Object 的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收
Java 中接口与抽象类的相同点与不同点
相同点
都是抽象类型;
都可以有实现方法;(以前接口不行)
都可以不需要实现类或者继承者去实现所有方法(以前不行,现在接口默认方法不需要实现者实现)
不相同点
抽象类不可以多重继承,接口可以(无论多重类型继承还是多重行为继承);
抽象类和接口类所反映出的设计理念不同,其实抽象类表示的是 "is-a"关系,接口表示的是"like-a"关系;
接口中定义的变量默认是 public static final 型,且必须给其初值,所以实现类中不能改变其值;抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
Java 中 String StringBuffer StringBuilder 有什么不同?、
String 对象代表了一组不可改变的Unicode 字符序列
StringBuffer 对象代表一组可以改变的Unicode字符序列,线程安全
StringBuilder对象代表一组可以改变的Unicode字符序列,线程不安全
在字符串内容不经常发生变化的业务场景优先使用 String 类
在频繁进行字符串操作时,并且运行多线程环境下,建议使用 StringBuffer
在频繁进行字符串的运算,并且运行单线程环境,建议使用 StringBuilder
Java 中 Vector,ArrayList,LinkedList 有什么区别呢?
Vector 是线程安全的
Vector 内部是使用对象数组保存数据,可以根据需要自动的增加容量。
ArrayList 本身不是线程安全的。
ArrayList 也是可以根据需要调整容量。
LikedList 双向链表,所以他不需要向上面两种那样调整容量。
LikedList 线程不安全
Java 中 Hashtable,HashMap,TreeMap 有什么不同?
Hashtable 是早期 Java 类库提供的一个哈希表实现,本身是同步的,不支持 null键和值,由于同步导致的性能开销,所以已经很少被推荐使用。
HashMap 是应用更加广泛的哈希表实现,行为上大致上与HashTable 一致,主要区别在于HashMap 不是同步的,支持null 键 和 值等。
TreeMap 则是基于红黑树的一种提供顺序访问的Map。
java 中 extends 与 implements 的区别?
extends 继承类
extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract就可以被继承
implements 实现接口
java 中不支持多重继承,但是可以用接口来实现,这样就要用到implements
共同学习,写下你的评论
评论加载中...
作者其他优质文章