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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王新新 中级黑马   /  2013-5-22 16:30  /  1685 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王新新 于 2013-5-22 17:40 编辑
  1. public class test2 {
  2. public static void main(String args[]){
  3. int m=10;
  4. int[]a={1,2,3,4};
  5. test(m,a);
  6. System.out.println(m);
  7. System.out.println(a[0]);
  8. }
  9. public static void test(int n,int[]t){
  10. n=0;
  11. t[0]=123;
  12. }
  13. }
复制代码
为什么变量m的值为改变,a【0】却改变了呢

评分

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

查看全部评分

5 个回复

倒序浏览
上边的代码输出结果是10   123,这是为什么呢
回复 使用道具 举报
m只是把值传进去了,改变n之后对m没影响
但是数组是把自己的引用传进去了,所以现在a和t指向了通一个数组,改变了t[0]之后,就相当于改变了a[0]

评分

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

查看全部评分

回复 使用道具 举报
徐启坤 发表于 2013-5-22 16:33
m只是把值传进去了,改变n之后对m没影响
但是数组是把自己的引用传进去了,所以现在a和t指向了通一个数组, ...

你的意思是传递值的时候不会改变,但是传递引用地址的时候会改变吗,
回复 使用道具 举报
王新新 发表于 2013-5-22 16:54
你的意思是传递值的时候不会改变,但是传递引用地址的时候会改变吗,

因为你把引用地址传过去了,所有的引用都指向一个实体对象,改变了其中一个就都改变了
回复 使用道具 举报
其实,哥们可以扩展一下,不单单是数组,只要是引用类型变量,作为参数传递,都具有此特点。例如普通对象了,也是会
改变对象中的内容,简单数据类型,不是引用数据类型,只是值的传递,不是地址的传递,楼主记住哦,以后开发中经常用到。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马