对于String a = "asd"与String b= new String(“asd”)内存地址相等的问题,我是这样理解的,不知道对不对,仅作参考。
String a = "asd"是初始化了一个字符串对象,字符串一旦初始化就不可以被改变。
然后new String(“asd”)是新建了一个字符串对象,对于字符串这种在常量池中存在的数据,当它发现数据已经存在时,就不会再单独开辟空间了,而是把对象指向它就行了。
String b= new String(“asd”),我理解为是地址的赋值操作,可能说的不准确,就是让b和new String的引用指向同一个对象。
这样的话,相当于它们都指向了“asd”所以内存地址值相等。 |