2021-05-27

1.java中是三大特征,各自特点

1、封装。把客观事物封装成抽象的类。并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

2、继承。它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

3、多态性。允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

2.简述 String StringBuffer StringBuilder 的作用。

String 为字符串常量,StringBuffer与StringBuilder字符串变量,从而效率:String

StringBuffer是线程安全的,而StringBuilder为非线程安全;

String 是不可变的对象, 每次对 String 类型进行改变的等同于生成了一个新的 String 对象,经常改变内容的字符串不建议使用 String;

对StringBuffer 类改变,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用,经常改变内容的字符串建议使用 StringBuffer ;

StringBuffer 上的主要操作为 append 和 insert 方法。

3.什么是GC?

GC就是垃圾回收机制,在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存.

如果不对这些对象清理回收无用对象的内存,可能会导致内存的耗尽.

所以垃圾回收机制回收的是内存。同时GC回收的是堆区和方法区的内存。

4. final, finally, finalize 的区别。

    final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。

    finally是异常处理语句结构的一部分,表示总是执行。

    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。

5。Abstract class 和 interface 有什么区别。

  interface需要实现,要用implements,而abstract class需要继承,要用extends。

  一个类可以实现多个interface,但一个类只能继承一个abstract class。

. interface强调特定功能的实现,而abstract class强调所属关系。

6. String 类是否可以被继承,为什么。

不可以被继承,因为该类被定义成final.

用final定义的原因:

(1) 为了实现字符串池。

(2) 为了线程安全

(3) 保证缓存的HashCode不可变性,提高性能

String类为什么是不可变的对象?

(1)字符串池的实现可以节约很多heap空间,如果String是可变的,指向串池中同一个对象的其他变量值也会发生改变

(2)因为String是不可变的,所以是多线程安全的,同一个字符串实例可以被多个线程共享,因为String的不可变性,线程安全。

(3)String在创建时,Hashcode就被缓存了,不需要重新计算。字符串的不可变性保证了hash码的唯一性。

你可能感兴趣的:(2021-05-27)