萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 668|回复: 0

1-1-4-30 谁能帮我讲讲java里的reference?

[复制链接]
发表于 2003-2-6 16:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
发信人: javarookie (布猫), 信区: Java      
标  题: Re: 谁能帮我讲讲java里的reference?
发信站: BBS 水木清华站 (Tue Oct  8 16:18:05 2002), 站内信件

首先声明,我也是初学
折腾许久才略明白一点儿关于引用的概念
就算咱们一起探讨探讨吧:
我个人对引用的理解:
1. 变量分基本变量和引用变量,除了 char,byte,short,int,long,float,double,bool
ean,其他都为引用变量,由于 Java 是纯面向对象的,所以引用变量就是引用对象的变
量,例如 String 就是一个例子。
引用变量存储的是被引用对象的运行时地址,换句话说,引用变量就是一个指向对象的
指针。
因此,声明引用变量,例如 Object o; 语句声明了引用变量 o 为 Object 类型,但是
此时没有赋值,o 的值为 null,不指向任何对象。
一旦赋值,o 的值初始化为被引用对象的运行时地址。一个典型例子:
int[] i = {1,2,3};
println(i);
将打印 i 的地址,而不是数组,由此也可以看出,任何数组都是对象

2. Java 只有传值
所以当传递引用变量的时候,传递的是地址
这样,作为参数变量传入方法的引用变量,在方法内可以被修改,典型的:
public class TestReference {
    public void method1 (int[] i) {
        i[0] = 4;
    }

    public static void main(String[] args) {
        int[] i = {1,2,3};
        System.out.println(i[0]);
        new TestReference().method1(i);
        System.out.println(i[0]);
    }
}

程序输出:
1
4

经过调用后,数组 i 被改变了。

这种现象很多网友都激烈的讨论过,认为不应该属于传值
但是综观 Java ,我个人还是认为确实是传值,只不过传的值是地址而已。
Sun 公司关于 Java 的书里也有图解


  1. (Stack)
  2. +———————————————----------------------
  3. | main |  i  |  method1  |  method1(i)  |
  4. +————————————————---------------------
  5.           |                        |
  6. 堆        |                        |
  7. (Heap)  |                        |
  8. +-----------------------+          |
  9. |         |             |          |
  10. |         V             |          |
  11. |      + ----+          |          |
  12. |      |  i  |<---------|----------+
  13. |      +-----+          |
  14. +-----------------------+

复制代码


不知道我上述的观点是否正确,请指教,谢谢


【 在 kidjacky (jacky) 的大作中提到: 】
: 这个是不是就像c++里的引用,还是有别的意思。在java tutorial里的解释是A data e
: lement whose value is an address. 那和c++里的指针又有什么区别。
: reference在java里是一个什么样的东西?初学的说。
: 谁能帮我详细的解释一下。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-5-21 15:45 , Processed in 0.055725 second(s), 19 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表