黑马程序员技术交流社区

标题: 问下字符串和字符串地址区别? [打印本页]

作者: askyle    时间: 2013-5-14 16:56
标题: 问下字符串和字符串地址区别?
本帖最后由 askyle 于 2013-5-15 09:23 编辑

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

作者: slatop@qq.com    时间: 2013-5-14 17:04
本帖最后由 slatop@qq.com 于 2013-5-14 17:13 编辑

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

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

我懂了!谢谢您的回答!
作者: askyle    时间: 2013-5-14 17:19
乎¤_¤乎 发表于 2013-5-14 17:08
String s1=new String("abc");
String s2=new String("abc");
s1 和s2 代表的字符串相同都是“abc”

我懂了!谢谢您的回答!
作者: slatop@qq.com    时间: 2013-5-14 17:34
askyle 发表于 2013-5-14 17:14
请问:先有字符串地址先,还是先有字符串先?

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

我还能理解到你回答的内容,我只过想知道先有地址还是先有内容先, 我个人以为先有新建地址,还能放字符串数据进去,我就是不能确定先有那个先.谢谢你回答!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2