日期:2014-05-20  浏览次数:20712 次

对String s = new String("Hello");这句的理解有点不是很清楚
书上总是说s是引用,一直不明白这个引用到底是个什么玩意,对引用的说法一直感觉是很虚。我按我自己的理解说的看下,高手帮我看下对不对。
String   s这句定义了一个字符串对象,s应该也是个对象吧?这个对象其实是个指向String字符串实例的指针,new   String( "Hello ")这句实例化了一个Hello字符串实例,假设Hello字符串实例在堆中的内存地址是0x001122,那么变量s中应该存放的就是这个地址0x001122吧?
第二个问题是s是存放在堆中还是栈中?按我把s理解为一个字符串对象来说,s应该是存放在堆中,不知对不?
第三个问题是s这个对象是什么时候分配内存空间的?String   s这句并没有使s在内存中分配空间吧?直到把new的字符串实例赋给s的时候,s才分配内存空间吧?

最后个问题是CSDN除了回答别人的问题得分外,还能怎么得分?我问了几个问题后就没分了,以后再有问题怎么办呢?再注册ID?

------解决方案--------------------
个人认为, 你可以把引用理解为“别名”, new String( "hello ") 创建了一个字符串对象,这个对象叫什么名字呢?起个名字叫s吧 String s = new String( "hello ");
------解决方案--------------------
你是人这个类的。
你的爸爸妈妈把你实例化了,
并给你取了个名字叫 "wesnow "
wesnow就是引用,你就是那个wesnow指向的对象.

------解决方案--------------------
看下Clerk_9919(Clerk)的解释,你可以这么理解
------解决方案--------------------
我认为楼主应该看看 <scjp考试> 的那本书,红色的

那里讲的很明了

分的问题很好办呐,你不能什么问题都问吧,关键是自己想

别人的问题你肯定也能说上几句的,说不上的话就把你自己的疑问也写上
------解决方案--------------------
每天登录一次,CSDN给你10分。