首页 > 代码库 > 值传递与引用传递

值传递与引用传递

摘抄自威哥视频

例一:值传递(说白了,就是内容复制,或者说内容的副本)

public class ValueDemo{    public static void main(String[] args){        int x = 10;        method(x);        System.out.println("x="+x);    }    public static void method(int mx){        mx = 20;    }}

例二:下面三个都是引用传递

package sunjava;public class RefDemo2{    public static void main(String[] args){        String name = "小白";        method(name);        System.out.println("name="+name);    }    public static void method(String sname){        sname = "小红";    }}

name=小白

例三:引用传递(说白了,就是地址传递,指向了同一个地址。栈内寸两个变量存储的是同一个地址。)

package sunjava;public class RefDemo1{    public static void main(String[] args){        Cat c  = new Cat();        method(c);        System.out.println("Cat age = "+c.age);    }    public static void method(Cat cat){        cat.age = 5;    }}class Cat{     int age = 2;//省略封装}

5

例四:字符串特例

package sunjava;public class RefDemo3{    public static void main(String[] args){        Cat c  = new Cat();        method(c) ;        System.out.println("Cat name= "+c.name) ;    }    public static void method(Cat cat){        cat.name = "小黑";    }}class Cat{     String name = "小白";   //省略封装}

Cat name= 小黑

 

总结:
1、每次new一个对象,就是在堆内存当中开辟一个新的空间。【无论以前是否有重复,如string1=new String(“helloworld”),如例五的string2和string4是false】

2、例四的 String name = "小白"; 字符串也是一个新的对象。

 

值传递与引用传递