手记

java 杂记

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



1人推荐
随时随地看视频
慕课网APP