for循环可以修改对象内容 , 但是重新赋值无效 , 另外不可以删除和新增元素
集合或者数组中 , 存放的是对象的引用 , 而不是对本身 , 对于字符串来说 , 存的就是这个字符串, 而不是这个字符串对象
如果你在循环中修改字符串, 其实是对字符串重新赋值 , 但是原本字符串的那个引用, 是没有发生改变的 , 所以修改没有用
如果你放的是一个对象 , 比如Person, 那么你可以在循环中对person这个对象中的属性进行修改 , 比如修改他的 age属性 , 但是不能重新赋值, 也就是不能用 p = new Person(); 代码不会报错 , 但是这个操作不会影响集合中这个元素的内容
另外 ,增强for循环其他地方都和普通for循环一样, 唯一的不同是 , 他不能获得集合的下标 , 也就是说不能对指定位置的元素进行处理 , 只能根据元素本身的属性进行一系列判断
上面这段文本是网上获取,忘记网址。
增强for注意
public static void testForeach() {
List<Person> pList = new ArrayList<Person>();
for (int i = 1; i <= 5; i++) {
Person person = new Person();
person.setId(""+i);
person.setName("zs" + i);
pList.add(person);
}
//1.数据库查询出列表
// List<Person> pList = personDao.getList();
//2. 修改值
for (Person person : pList) {
person.setName("lisi");
}
//3. 重新插入
// personDao.batchInsert(pList);
for (Person person : pList) {
System.out.println("===》" + person);
}
}
List的set方法
public static void testSetFunction() {
List<Person> pList = new ArrayList<Person>();
for (int i = 1; i <= 5; i++) {
Person person = new Person();
person.setId(""+i);
person.setName("zs" + i);
pList.add(person);
}
//打印值
for (Person person : pList) {
System.out.println(person);
}
//2. 修改后的值
for (int i = 0; i < pList.size(); i++) {
Person person = pList.get(i);
person.setName("lisi");
pList.set(i, person);
}
for (Person person : pList) {
System.out.println("===》" + person);
}
}
新增一个List
public static void testNewList() {
List<Person> pList = new ArrayList<Person>();
for (int i = 1; i <= 5; i++) {
Person person = new Person();
person.setId(""+i);
person.setName("zs" + i);
pList.add(person);
}
//打印值
for (Person person : pList) {
System.out.println(person);
}
//2. 修改后的值
List<Person> newList = new ArrayList<Person>();
for (Person person : pList) {
Person p = new Person();
p.setName("lisi");
p.setId(person.getId());
newList.add(p);
}
for (Person person : newList) {
System.out.println("===》" + person);
}
}
Iterator迭代器
public static void testIterator() {
List<Person> pList = new ArrayList<Person>();
for (int i = 1; i <= 5; i++) {
Person person = new Person();
person.setId(""+i);
person.setName("zs" + i);
pList.add(person);
}
//打印值
for (Person person : pList) {
System.out.println(person);
}
//2. 修改后的值
Iterator<Person> it = pList.iterator();
while (it.hasNext())
{
Person p = it.next();
p.setName("lisi");
}
Iterator<Person> it2 = pList.iterator();
while (it.hasNext())
{
Person person = it.next();
System.out.println("===》" + person);
}
}
CopyOnWriteArrayList
public static void testCopyOnWriteArrayList() {
List<Person> pList = new CopyOnWriteArrayList<Person>();
for (int i = 1; i <= 5; i++) {
Person person = new Person();
person.setId(""+i);
person.setName("zs" + i);
pList.add(person);
}
//打印值
for (Person person : pList) {
System.out.println(person);
}
//2. 修改后的值
for (Person person : pList) {
person.setName("lisi");
}
//打印
for (Person person : pList) {
System.out.println("===》" + person);
}
}