1、类加载的时候加载整数型常量池
初始化256个对象 ```java // 分析一下程序是为什么? /*
java 中为了提高执行效率,将-128 - 127之间所有的包装对象提前创建好,
放到了一个方法区的整数型常量池当中,目的是这个区间的数据不需要再new了,
直接从整数型常量池取出来
== 比较的是两个对象的内存地址是否相同
类加载的时候会加载整数型常量池 256个对象
*/
Integer a = 128; Integer b = 128; System.out.println(a == b);// false
Integer m = 127; Integer n = 127; System.out.println(m == n);// true
<a name="PCmZH"></a>
### 2、引用不能直接相加
```python
package com.number;
import java.math.BigDecimal;
public class Demo02 {
public static void main(String[] args) {
/*
1、BigDecimal 属于大数据,精度极高,不属于基本数据类型,属于java对象(引用数据类型)
这是SUN提供的一个类,专门用在财务软件中
2、财务软件中double是不够用的,
*/
BigDecimal b1 = new BigDecimal(100);
BigDecimal b2 = new BigDecimal(100);
BigDecimal b3 = b1.add(b2);// 不可直接相加
System.out.println(b3);
BigDecimal b4 = b1.divide(b2);
System.out.println(b4);
}
}
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();
c.add("abc");
c.add("def");
Iterator iterator = c.iterator();
while (iterator.hasNext()){
Object o = iterator.next();
c.remove(o);
System.out.println(o);
System.out.println(iterator.hasNext());
// iterator.remove();// 0 迭代器删除的一定是当前元素 }
System.out.println(c.size());
}
}
<a name="GcD4I"></a>
### 4、ArrayList和LinkList以及vector扩容特点
```python
LinkList:无初始化容量
Vector:
初始化容量10
扩容之后原容量的2倍
ArrayList:
扩容之后原容量的1.5倍
10 --> 15