黑马程序员技术交流社区

标题: 对象数组的理解 [打印本页]

作者: 873350610    时间: 2015-11-15 21:28
标题: 对象数组的理解
代码中为什么第一次输出name属性是改变后的,第二次没有改变呢
public class Main {
        public static void main(String[] args){
                Person p = new Person("lisi",21); //创建一个对象
                Person[] p1 = {new Person("zs",20),p};//创建一个对象数组
                Person[] p2 = p1;
                p2[1].setName("ww");//对第二个元素的name属性进行传参操作
                System.out.println(p.getName());//第一次输出对象p中的name属性
                p2[1] = new Person("xxx",25);
                System.out.println(p.getName());//第二次输出对象p中的name属性
        }
}
class Person{
        private String name;
        private int age;
        public static int count;
        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 Person(String name,int age){
                this.name = name;
                this.age = age;
        }
}

作者: 873350610    时间: 2015-11-30 11:28
新人秒沉的节奏
作者: Good_Man    时间: 2015-11-30 13:22
嗯,写的不错啊,加油
作者: 洋葱头头    时间: 2015-11-30 15:37
Good_Man 发表于 2015-11-30 13:22
嗯,写的不错啊,加油

就看见你天天水了
作者: 873350610    时间: 2015-11-30 17:50
洋葱头头 发表于 2015-11-30 15:37
就看见你天天水了

版主大大,你的头像跟这句话绝配啊
作者: Ansel_young    时间: 2015-11-30 19:34
感觉第二个new person改变了堆内存中P1[2]和P2[2]的指向,而p的指向没有发生变化,第一次改变了p中name的指向,不道这样说对不对
作者: 杨洛神    时间: 2015-11-30 22:01
嗯,写的不错啊,加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2