- new int[]{1,2} 直接初始化数组的时候。中括号里不能有数组的长度
- list to array可以调用 list.toArray()方法,res.toArray(new int[res.size()][]),new 出来的数组必须和list存储的类型一样。注意包装类型也必须new 包装类型。
- Arrays.sort 只能对各种类型的数组进行排序,包括二维数组,因为二维数组本质也是一维数组, 比较器写法lambda表达式(o1,o2)-> o1-o2
- Collections.sort只能对list进行排序,ArraysList进行初始化的时候可以丢进去一个set将set转换成list。
- java对象在内存中布局分为 对象头,实例数据,对齐补充,对象头包括两部分信息,第一部分用于存储对象自身的运行时数据(哈希码、GC 分代年龄、锁状态标志等等),另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。
对象初始化分为:
- 类加载检查
- 分配内存 :分配方式有 “指针碰撞” 和 “空闲列表” 两种,选择哪种分配方式由 Java 堆是否规整决定,而 Java 堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。
- 初始化零值
- 设置对象头 :虚拟机要对对象进行必要的设置,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。 这些信息存放在对象头中。
- 执行init方法