🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 **可以改变对象的值,但是不能删除或添加对象,也不可以改变变量(比如int a)的值,就算用集合存变量依旧不能** # 普通的值 ~~~ import java.util.*; //导包 public class Test1 { public static void main(String[] args) {         int [] a=new int [] {1,2,3,4,5,6,7,8}; //定义数组 for(int b:a)                           //foreach遍历数组a { if(b==3)                        //如果找到b=3 { b=4;                    //把b改成4 } } System.out.println("---------输出数组");         for(int b:a)                            //再次遍历数组a,看看改变有没有影响a { System.out.println(b);          //输出a中的全部值 } } } ~~~ 很明显啊,我改的b变成4的,没变啊!!!说明b的改变不影响a的 在foreach循环中,就是把容器中的数据交给了那个element,一个道理,当容器装的是变量的时候,foreach循环是改变不了原数据的,想改变只能通过正规for循环 # 对象 ~~~ import java.util.*; //导包 public class Test1 { public static void main(String[] args) { ArrayList <Clerk> al=new ArrayList<>();    //创建Clerk类型的ArrayList al.add(new Clerk("周卫国",30,5000));       //添加几个Clerk类型对象 al.add(new Clerk("李云龙",30,5000)); al.add(new Clerk("诸葛亮",30,5000)); al.add(new Clerk("张小凡",30,5000)); al.add(new Clerk("泛型",30,5000)); al.add(new Clerk("集合",30,5000)); System.out.println("---------遍历集合"); for(Clerk x:al)                           //foreach遍历集合 { if(x.getName().equals("李云龙"))  //如果找到名字等于李云龙的对象 { x.setSalary(10000);      //修改对象的薪资 } } System.out.println("---------输出集合"); for(Clerk x:al)                          //foreach遍历 { System.out.println(x.getName()+" "+x.getAge()+" "+x.getSalary());    //输出信息 } } } class Clerk //定义员工类 { private String name; private int age; private double salary; Clerk(String name,int age,double salary) { this.name=name; this.age=age; this.salary=salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } } ~~~ 输出 ~~~ ---------遍历集合 ---------输出集合 周卫国 30 5000.0 李云龙 30 10000.0 诸葛亮 30 5000.0 张小凡 30 5000.0 泛型 30 5000.0 集合 30 5000.0 ~~~ **对象和变量不一样,变量是独立的,但是如果你把对象传给另一个对象,他们就是一个对象了,这个改了那个就改了!!** **对象的赋值,赋的是引用,即给的是原对象所在的地址**