1、类加载的时候加载整数型常量池

  • 初始化256个对象 ```java // 分析一下程序是为什么? /*

    1. java 中为了提高执行效率,将-128 - 127之间所有的包装对象提前创建好,
    2. 放到了一个方法区的整数型常量池当中,目的是这个区间的数据不需要再new了,
    3. 直接从整数型常量池取出来
    4. == 比较的是两个对象的内存地址是否相同
    5. 类加载的时候会加载整数型常量池 256个对象
    6. */

    Integer a = 128; Integer b = 128; System.out.println(a == b);// false

Integer m = 127; Integer n = 127; System.out.println(m == n);// true

  1. <a name="PCmZH"></a>
  2. ### 2、引用不能直接相加
  3. ```python
  4. package com.number;
  5. import java.math.BigDecimal;
  6. public class Demo02 {
  7. public static void main(String[] args) {
  8. /*
  9. 1、BigDecimal 属于大数据,精度极高,不属于基本数据类型,属于java对象(引用数据类型)
  10. 这是SUN提供的一个类,专门用在财务软件中
  11. 2、财务软件中double是不够用的,
  12. */
  13. BigDecimal b1 = new BigDecimal(100);
  14. BigDecimal b2 = new BigDecimal(100);
  15. BigDecimal b3 = b1.add(b2);// 不可直接相加
  16. System.out.println(b3);
  17. BigDecimal b4 = b1.divide(b2);
  18. System.out.println(b4);
  19. }
  20. }

3、集合结构发生改变,迭代器需要重新获取

  • 如果集合发生改变,迭代器没有重新获取时,调用next()方法时,发生ConcurrentModiftion
  • 迭代过程,集合不能使用remove()方法,因为没有通知迭代器,但是迭代器可以使用remove方 ```python package com.collection;

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;

public class Demo06 { public static void main(String[] args) { Collection c = new ArrayList();

  1. c.add("abc");
  2. c.add("def");
  3. Iterator iterator = c.iterator();
  4. while (iterator.hasNext()){
  5. Object o = iterator.next();
  6. c.remove(o);
  7. System.out.println(o);
  8. System.out.println(iterator.hasNext());

// iterator.remove();// 0 迭代器删除的一定是当前元素 }

  1. System.out.println(c.size());
  2. }

}

  1. <a name="GcD4I"></a>
  2. ### 4、ArrayList和LinkList以及vector扩容特点
  3. ```python
  4. LinkList:无初始化容量
  5. Vector:
  6. 初始化容量10
  7. 扩容之后原容量的2倍
  8. ArrayList:
  9. 扩容之后原容量的1.5倍
  10. 10 --> 15