黑马程序员技术交流社区

标题: 字符串对象a与b引用是否相同? [打印本页]

作者: 张校云    时间: 2011-10-7 00:13
标题: 字符串对象a与b引用是否相同?
String a = "abc"与String b = "abc" 字符串对象a与b引用是一块内存地址吗?为什么 a==b运行结果是true  ?
作者: 宁超    时间: 2011-10-7 00:26
本帖最后由 宁超 于 2011-10-7 00:29 编辑

String   a   =   "abc "   当表达式执行的时候,会首先去内存中的字符串池中去找,看有没有ABC这个字符串,如果没有的话,就在字符串池中创建一个,当String   b   =   "abc "时,则a,b其实是指向了同一片内存地址空间。
作者: 王家虎    时间: 2011-10-7 00:27
因为字符串是按照字符数组存放的,当你有一个字符串"abc"时这个字符串就被存放到了字符数组中,当你再一次创建"abc"时就会在内存中查找是否已经有了"abc",如果有的话就直接把已经有的"abc"的地址引用给你,如果没有就创建一个"abc".
作者: 林国锋    时间: 2011-10-7 01:09
String a是创建一个String类的对象引用变量a
String b是创建一个String类的对象引用变量b
在此题中变量a与变量b同时指向的都是栈中存放的同一个"abc"
所以引用地址就相同了就返回true了
作者: 欧阳超    时间: 2011-10-7 10:23
变量a与变量b同时指向的都是栈中存放的同一个"abc"
也就是同一个位置
作者: 成杰    时间: 2011-10-7 10:31
a 和 b 指向的是同一块内存地址,所以返回为true。
作者: 黄新灵    时间: 2011-10-7 10:31
对,首先在内存中查找是否已经有了"abc",如果有的话就不会再次创建内存空间,而是直接把已经有的"abc"的内存地址直接返回,==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,所以这次你的==比较当然是true了。。




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