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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© askyle 中级黑马   /  2013-5-14 16:56  /  2168 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 askyle 于 2013-5-15 09:23 编辑

问下字符串和字符串地址区别?求详细解答说明?

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 slatop@qq.com 于 2013-5-14 17:13 编辑

地址这个概念在JAVA中是很模糊的。如果把计算机内存看做是N多小格子组成的,那么地址就是这些格子的编号。格子里存放的是数据。JAVA中将地址的概念完成用引用取代了。所以初学JAVA没必要去理解地址是啥。你只要记着,地址不同就是格子不同。数据相同并不一定代表格子就一定是同一个格子 。能理解乎?
回复 使用道具 举报
字符串地址就是字符串在内存中存放位置的一个标识。
字符串是不能被修改的,当修改的时候会自动创建一个新的字符串也就是分配一个新的内存得到一个新的地址。
区别:字符串地址是系统自动分配的标识,而字符串可以是你手动赋值的。
回复 使用道具 举报
String s1=new String("abc");
String s2=new String("abc");
s1 和s2 代表的字符串相同都是“abc”
s1==s2   false  “==” 号比较的是两个对象的地址  因为是s1和s2是new出来的两个不同对象引用 ,地址不相同
回复 使用道具 举报
slatop@qq.com 发表于 2013-5-14 17:04
地址这个概念在JAVA中是很模糊的。所谓的哈希值就可以看做是地址。如果把计算机内存看做是N多小格子组成的 ...

请问:先有字符串地址先,还是先有字符串先?
回复 使用道具 举报
钟林杰 发表于 2013-5-14 17:05
字符串地址就是字符串在内存中存放位置的一个标识。
字符串是不能被修改的,当修改的时候会自动创建一个新 ...

我懂了!谢谢您的回答!
回复 使用道具 举报
askyle 中级黑马 2013-5-14 17:19:54
7#
乎¤_¤乎 发表于 2013-5-14 17:08
String s1=new String("abc");
String s2=new String("abc");
s1 和s2 代表的字符串相同都是“abc”

我懂了!谢谢您的回答!
回复 使用道具 举报
askyle 发表于 2013-5-14 17:14
请问:先有字符串地址先,还是先有字符串先?

地址是存放字符串的地方。你这么问,我就有点不知道怎么回答了。根据我的经验来说,不保证正确。
编译器在编译代码时读到数据后,然后向内存申请空间,申请成功后将数据放入内存。相对于内存在说是先有地址的,但是相对于数据本身来说就是先有字符串的,这个字符串是在你硬盘上的。。。。。这么说估计你就要晕了。你就别问这么没意义的问题了,就像在问先有鸡还是很有蛋,哈哈。总知有数据就要有放数据的地方。地址就是放数据的地方,对于计算机来说你想要访问任何一个数据,都必须是通过地址完成的。没有地址,你将数据放进地址就再也找不到了。明白不

评分

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

查看全部评分

回复 使用道具 举报
askyle 中级黑马 2013-5-14 17:45:55
9#
slatop@qq.com 发表于 2013-5-14 17:34
地址是存放字符串的地方。你这么问,我就有点不知道怎么回答了。根据我的经验来说,不保证正确。
编译器 ...

我还能理解到你回答的内容,我只过想知道先有地址还是先有内容先, 我个人以为先有新建地址,还能放字符串数据进去,我就是不能确定先有那个先.谢谢你回答!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马