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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ︶ㄣ布丁 中级黑马   /  2012-12-23 00:33  /  1577 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

传值和传址的区别,能不能用代码演示一下

1 个回复

正序浏览
java中参数传递有两种传递方式即值传递(传值)和引用传递(传址)他们有以下几点不同
1:变量存储机制不同
简单类型变量(值类型)是直接在栈内存中开辟存储空间存储变量值。
引用类型变量是由引用空间和存储空间两部分构成的,引用空间在栈中,存储空间在堆中,存储空间负责存储变量值,
引用空间负责存放存储空间的首地址。
2:变量传递
当变量与变量之间赋值时,引用类型变量和简单类型变量都属于值传递,不同的是简单变量传递的是内容本身
而引用变量传递的是引用地址。
例如:简单变量传值
int i=9;//定义简单变量i
int j=i;//将i变量值赋给j
int j=i+1;//将j加1
System.out.println(i);
System.out.println(j);
分析:i和j属于值类型变量,因此在赋值时,将i的值复制一份给j,复制完后i和j没有任何关系,无论修改那个值都不会影响对方
很明显输出肯定是:9 10
引用类型址传递
先定义一个类:Person
Person p=new Person();//定义引用变量p
p.setName("张三");
p.setAge(18);
//将p变量的地址赋给q
Pesron q=p;
//修改q变量的内容
p.setName("玩玩");
p.setAge(31);
System.out.println(p.getName()+p.getAge());

System.out.println(q.getName()+q.getAge());
/*
这里set和get方法我就不写了
分析:p和q都属于引用类型变量,因此在赋值时,将p的引用地址复制一份给q,所以p和q指向同一地址,因此无论修改那个都会相互影响。

所以输出应该是
玩玩 31
玩玩 31
*/
希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马