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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 橸瑩膤漃寞林 中级黑马   /  2014-3-23 16:22  /  2354 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能帮我解释清楚,还举个例子。

3 个回复

倒序浏览
比如:
String str = null;
str = new String("abc");
str = new String("bcd");
str就是引用变量也就是String这个类的对象的引用

评分

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

查看全部评分

回复 使用道具 举报
个人理解只有一句话,在参数传递的过程中,基本类型变量是值传递,引用型变量时地址传递(类似于c++中的指针,不过java中没有指针这个说法)

下面具体说下,声明变量,定义变量是的内存分配问题

在java中基本类型变量声明是,系统直接为该变量分配内存空间(c++中不是这样,c++中只用在定义的时候才会分配内存空间,声明的时候不会分配),因此内存中可以直接操作。

引用型变量声明时,只为该变量分配引用空间,数据空间尚未分配,因此引用类型不可直接使用

如:

mydate today;
mydate.today=14;
  上面这句话明显是错误的。

正确的是:

mydate today;
today=new mydate()
其实,第一条语句的执行将给today变量分配一个保存引用的空间  today  null

第二句话将分两步进行,第一步执行new mydate(),给today变量开辟数据空间,第二部为today中的成员变量赋值,默认初始化为0。



引用变量间的赋值,就行当于指针间的赋值,改变一个对另外一个有影响(传址)。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
引用型变量,其实就是一个对象的首地址,
例如:Date date=new Date();
date就是一个引用型变量,它存储的只是Date在内存中开辟的地址空间的首地址
如果想改变这个引用变量,则可以再new一个对象,将新对象的地址赋值个此变量
这个引用变量就会指向新的地址

评分

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

查看全部评分

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