小哥面试准备

  1. JAVA中的几种基本数据类型是什么,各自占用多少字节。
    基本数据类型:
    数据类型 字节 默认值
    byte 1 0
    short 2  0
    int 4 0
    long 8 0
    float 4 0.0f
    double 8 0.0d
    char 2 ‘\u0000’
    boolean 4 false

  2. String类能被继承吗,为什么。
    不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。
    1)、final类不能被继承,没有子类,final类中的方法默认是final的。
    2)、final方法不能被子类的方法覆盖,但可以被继承。
    3)、final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
    4)、final不能用于修饰构造方法。
      注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

  3. String,Stringbuffer,StringBuilder的区别。
    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。
    1)、首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String
    String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。
    2)、在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。
    总结一下:
     String:适用于少量的字符串操作的情况。
     StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。
     StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况。

  4. ArrayList和LinkedList有什么区别。
    ArrayList和LinkedList的大致区别:
    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 (LinkedList是双向链表,有next也有previous)
    2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
    3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
    首先一点关键的是,ArrayList的内部实现是基于基础的对象数组的,因此,它使用get方法访问列表中的任意一个元素时(random access),它的速度要比LinkedList快。LinkedList中的get方法是按照顺序从列表的一端开始检查,直到另外一端。对LinkedList而言,访问列表中的某个指定元素没有更快的方法了。
    总结:
    1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
    2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
    3.LinkedList不支持高效的随机元素访问。
    4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间

猜你喜欢

转载自blog.csdn.net/weixin_42168421/article/details/86638443
今日推荐