zoukankan      html  css  js  c++  java
  • 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的变化。

  • 相关阅读:
    Team Foundation Server 2010完整装机过程
    Horovod介绍
    学习笔记 【Min_25 筛】
    Educational Codeforces Round 117
    C#打造秒杀腾讯的仿QQ界面,从此独孤求败
    C# ListView控件的间隔色和自动适应宽度
    jQuery1.6.1源码分析系列
    优雅框架授权验证页面
    多个DataTable的合并成一个新表
    教你自定义绘制TreeView
  • 原文地址:https://www.cnblogs.com/miluroe/p/10886854.html
Copyright © 2011-2022 走看看