值传递和引用传递的小例子

代码:

public class Demo {

    public static void main(String[] args) {
        // 引用传递示例
        Student student = new Student();
        student.setName("lisi");
        student.setSex("girl");
        new Method().test1(student); // entity的值发生了变化
        System.out.println(student.getName() + "," + student.getSex()); // 输出结果:zhangSan,boy

        // 值传递示例
        // String传递的也是引用副本的传递,但是因为String为final的,所以和按值传递等同的
        String str = new String("123");
        new Method().test2(str); // str的值没有发生变化
        System.out.println(str); // 输出结果: 123
    }

}

class Method {

    /**
     * 引用传递
     */
    public void test1(Student entity) {
        entity.setName("zhangSan");
        entity.setSex("boy");
    }

    /**
     * 值传递
     */
    public void test2(String str) {
        str = "abc";
    }
}

class Student {

    private String name;

    private String sex;

    public Student() {
        super();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

 

posted @ 2016-09-09 15:57  迷失之路  阅读(2411)  评论(0编辑  收藏  举报