javaSE常见面试题

Java基本数据类型(java.lang)

  • byte(1字节,代替整数)、short(2字节,,代替整数)、int(4字节,代替整数)、long(8字节,代替整数,1L)、
  • float(4字节,代替小数,0.1f)、double(8字节,代替小数,0.1d)  默认使用double
  • char(2字节,代替字符,‘a’)
  • boolean(1字节,取true/false)  默认false

String能被继承吗?为什么?

  • 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。
  • public final class String implements java.io.Serializable, Comparable, CharSequence {
        // 省略... 
    }

final修饰符:一般修改国定的,不改变的类与变量和方法

  • final修饰的类不能被继承,类中成员变量可以自定义是否为final,但是类中的方法为final方法
  • final修饰的变量,基本类型值不能被更改,引用类型修饰后不可再指向其他的对象,不能再new
  • final修饰的方法会被锁定,不让修改,当类被继承,方法不会被覆盖

Static关键字使用(静态)

  • static修饰的变量为静态变量,修饰的方法为静态方法,只能用类取调用
  • static只能访问static修饰的
  • static和实例在堆栈中,static只会有一个区域,而实例可以有许多个区域,所以static调用时,值是静态的

String,StringBUffer,StringBuider区别,应用场景

  • String 字符串常量(final修饰,不可被继承),String是常量,当创建之后即不能更改。(可以通过StringBuffer和StringBuilder创建String对象(常用的两个字符串操作类)。底层是char[],被final修饰
  • StringBuffer 字符串变量(线程安全),其也是final类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized修饰),底层是char[],没有被final修饰,内容可变
  • StringBuilder 字符串变量(非线程安全)。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没使用synch修饰以外基本一致,底层是char[],没有被final修饰,内容可变
  • //相互转换
    // String -- StringBuffer
    // 方式1:通过构造方法
        StringBuffer sb = new StringBuffer(s);
    // 方式2:通过append()方法
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);
    
    // StringBuffer -- String
        StringBuffer buffer = new StringBuffer("java");
    // 方式1:通过构造方法
        String str = new String(buffer);
    // 方式2:通过toString()方法
        String str2 = buffer.toString();
    
    
    buffer通过apped(),可以改变内容

ArrayList 和 LinkedList 有什么区别

  • ArrayList是基于索引的数据接口(数组)。LinkedList是以元素列表的形式存储它的数据(链表)
  • ArrayList每个值都有索引查询快,
  • LinkedList将元素随机放入集合,增删快
  • LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。
  • 当数据量大的时候,从中间插入数据,ArrayList快

讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候, 他们的执行顺序。

  1. 父类静态代变量、
  2. 父类静态代码块、
  3. 子类静态变量、
  4. 子类静态代码块、
  5. 父类非静态变量(父类实例成员变量)、
  6. 父类构造函数、
  7. 子类非静态变量(子类实例成员变量)、
  8. 子类构造函数。
  • javaSE常见面试题_第1张图片javaSE常见面试题_第2张图片            

你可能感兴趣的:(其他)