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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何竹冬 于 2013-1-10 11:54 编辑

什么是值传递什么是引用传递?java中怎么体现?

评分

参与人数 1技术分 +1 收起 理由
高境 + 1

查看全部评分

7 个回复

倒序浏览
基本数据类型赋值属于值传递;引用类型之间赋值属于引用传递。值传递传递的是实实在在的变量值;引用传递传递的是对象的引用地址。值传递后,两个变量改变的是各自的值;引用传递后,两个引用改变的是同一个对象的状态。

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

回复 使用道具 举报
java内存中,主要有两块存放数据的,一个叫栈,一个叫堆,基本数据类型都是存放在栈里面的,比如char,byte,short,int,long,float,double,boolean,int i=1;i和1都是存储在栈里面的复杂数据类型,比如自定义对象,MyObject o=new MyObject("参数");o这个引用变量(或者叫指针)是存放在栈里面的,我们new的空间(或者说这个对象的数据内存块)是存放在堆里面,o所代表的值就是堆里面内存块的首地址

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上百度的就算了.. 不用发了..
回复 使用道具 举报

评分

参与人数 1技术分 +1 收起 理由
高境 + 1

查看全部评分

回复 使用道具 举报
我不知道版主怎么想的, 百度来的 都可以加分
回复 使用道具 举报
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,
方法执行中形式参数值的改变不影响实际参数的值。
如下代码:
public class ValueTrans {
        public static void exchange(int a, int b) { //静态方法,交换a,b的值
                int temp;
                temp = a;
                a = b;
                b = temp;
        }

        public static void main(String[] args) {
                int i = 3;
                int j = 5;
                System.out.println("before call: " + "i=" + i + " j=" + j); //调用前
                exchange(i, j); //值传递
                System.out.println("after call: " + "i=" + i + " j=" + j); //调用后
        }
}
引用传递:也称为传地址。方法调用时,
实际参数的引用地址,被传递给方法中相对应的形式参数,
在方法执行中,对形式参数的操作实际上就是对实际参数的操作,
方法执行中形式参数值的改变将会影响实际参数的值。
如下代码:
class Book {
        private String name;

        Book(String name) { //构造方法
                this.name = name;
        }

        public void change(Book b, String n) { //对象作为参数
                b.name = n;
        }

        public void look() { //输出对象信息
                System.out.println("name: " + name);
        }
}

public class QuoteTrans {
        public static void main(String[] args) {
                Book b = new Book("java");
                System.out.print("before call: "); //调用前
                b.look();
                b.change(b, "c++"); //引用传递,传递对象b的引用,会修改对象b的值
                System.out.print("after call: "); //调用后
                b.look();
        }
}

评分

参与人数 1技术分 +1 收起 理由
高境 + 1

查看全部评分

回复 使用道具 举报
张云杰 发表于 2013-1-9 22:04
楼上百度的就算了.. 不用发了..

真正不是看你怎么来的       只要你了解了   哪怕是搜的    看完了懂了   是百度的又怎么样   

百度这么简单  都没人百度      
其实  这也是解决问题的渠道罢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马