A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 873350610 中级黑马   /  2015-11-15 21:28  /  589 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码中为什么第一次输出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;
        }
}

6 个回复

倒序浏览
新人秒沉的节奏
回复 使用道具 举报
嗯,写的不错啊,加油
回复 使用道具 举报
Good_Man 发表于 2015-11-30 13:22
嗯,写的不错啊,加油

就看见你天天水了
回复 使用道具 举报

版主大大,你的头像跟这句话绝配啊
回复 使用道具 举报
Ansel_young 来自手机 中级黑马 2015-11-30 19:34:45
地板
感觉第二个new person改变了堆内存中P1[2]和P2[2]的指向,而p的指向没有发生变化,第一次改变了p中name的指向,不道这样说对不对
回复 使用道具 举报
嗯,写的不错啊,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马