码迷,mamicode.com
首页 > 其他好文 > 详细

值传递与引用传递

时间:2014-11-12 13:32:35      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   java   sp   div   log   bs   

摘抄自威哥视频

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

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 = "小白"; 字符串也是一个新的对象。

 

值传递与引用传递

标签:style   blog   color   ar   java   sp   div   log   bs   

原文地址:http://www.cnblogs.com/bluewelkin/p/4091881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!