Java面试细节整理(不断更新)

Posted miluroe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试细节整理(不断更新)相关的知识,希望对你有一定的参考价值。

1. 内存模型

1.1 对象缓存

public static void main(String[] args) {
    Integer a = 127, b = 127, c = -128, d = -128;
    Integer e = 128, f = 128, g = -129, h = -129;
    System.out.println(a == b); // true
    System.out.println(c == d); // true
    System.out.println(e == f); // false
    System.out.println(g == h); // false
}

  JVM对基本类型(boolean, float, double除外)进行了缓存,Integer默认范围是-128~127并可通过JVM参数修改上限,由于Integer是final类,故缓存范围内的Integer自动装箱时不产生新对象。

2. 集合框架

2.1 方法 List<E> subList(int fromIndex, int toIndex)

public static void main(String[] args) {
    List<Integer> arrayList = new ArrayList<Integer>(10);
    List<Integer> linkedList = new LinkedList<Integer>();
    for (int i = 0; i < 10; i++) {
        arrayList.add(i);
        linkedList.add(i);
    }
    List<Integer> subArrayList = arrayList.subList(1, 4);
    List<Integer> subLinkedList = arrayList.subList(1, 4);
    System.out.println(subArrayList.getClass()); // class java.util.ArrayList$SubList
    System.out.println(subLinkedList.getClass()); // class java.util.ArrayList$SubList
    arrayList = (ArrayList<Integer>) subArrayList; // throws java.lang.ClassCastException
}

  List接口声明了subList方法,ArrayList与LinkedList中subList返回ArrayList中非静态内部内SubList作为原List的视图,对SubList的修改会造成原List的变化。

以上是关于Java面试细节整理(不断更新)的主要内容,如果未能解决你的问题,请参考以下文章

细节决定成败!熬夜整理最新大厂Java高频面试题,面试经历分享

BAT大厂Java面试真题锦集干货整理,细节爆炸

100道Java面试题收集整理及参考答案

小程序各种功能代码片段整理---持续更新

Java相关面试题整理(持续更新)

Java面试题总结(不断更新中)