Topic: 请教:String a=new String("abc");产生了几个对象呢? |
Print this page |
1.请教:String a=new String("abc");产生了几个对象呢? | Copy to clipboard |
Posted by: drxjava Posted on: 2004-11-19 10:38 String a=new String("abc");产生了几个对象呢? 有人说是一个有人说是两个,到底是产生了几个呢? 他和String a="abc";有什么区别呢? 我认为是产生了一个对象。 请高手给我解释一下呀!谢谢了呀!:) |
2.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: haibo Posted on: 2004-11-19 10:42 <<Tinking in java >>3rd 第二章好好看看吧 |
3.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: drxjava Posted on: 2004-11-19 15:36 我没有那本书呀,能不能在这里给我解释一下呀?谢谢了呀!好不好呀? |
4.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: chengbd Posted on: 2004-11-19 18:01 我想只是一个String对象,就是“abc",而a只是一个指向这个对象的”引用变量“,不是对象。这样理解对吗? |
5.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: littledeer1974 Posted on: 2004-11-19 20:35 恩,楼上我觉得是对的 "abc"--->Object a---->refrence 而且,haibo的简易也很好(我看了写的很清楚) |
6.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: drxjava Posted on: 2004-11-20 09:42 可是这个String对象有好多的高手都说他产生了两个还有说产生了三个对象的 就是在:String a=new("abc");这条语句中。 String对象是和一般的对象不同的特殊对象吧! 要是有那位高手知道的话,请帮忙解释一下呀! 谢谢!:) |
7.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: drxjava Posted on: 2004-11-20 18:57 没人帮帮我呀?55555555555555555555 |
8.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: wuyongjin Posted on: 2004-11-21 15:50 我认为好象是两个:"abc",a(个人见解) |
9.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: wuyongjin] | Copy to clipboard |
Posted by: ringayumi Posted on: 2004-11-22 00:40 Two , a variable and "abc" literal! The a variable reference to a String object. The "abc" is a string literal , It was created by JVM! So , It has generated two object!^_^ |
10.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: jameszhang Posted on: 2004-11-22 08:55 http://www.cjsdn.net/post/view?bid=1&id=80139&tpg=1&ppg=1&sty=1&age=0#80139 |
11.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: riceboy0309 Posted on: 2004-11-26 16:31 只有一个对象,“ABC"是S的一个实例。详见JAVA 编程篇!!!!! |
12.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: 四脚虫 Posted on: 2004-11-28 00:07 String a = new ("abc");这样的表达能通过编译吗? 应该是String a = new String ("abc"); <1> 或者String a = new String ();这样吧 <2> 其中<1>表示创建一个String对象,并且以a作为reference来操纵这个对象,并且初始化值为abc(相当于给String这个系统自带的类的构造函数传递了abc的值来初始化String的成员变量) <2>同理,只不过初始化为默认值null. |
13.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: 飞哥 Posted on: 2004-12-11 11:55 认为产生两个对象是因为在使用new声明字符串对象的时候,会为该对象重新建立一块内存空间用于存储对象,在这里为a开辟了一块内存空间,而字符串"abc"实际上也在内存当中获得了另外一块内存空间,那就是在所谓的字符串池当中,所以实际上是声明了两个对象。还有种情况 String a = "abc"; String b = "abc"; 这里实际上a和b所指向的是同一个对象,也就是字符串池当中所存储的“abc”。不知道这样的解释是否合理。请大家指正。 |
14.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: wuyongjin Posted on: 2004-12-11 16:45 一个,好好看看书吧 我刚看过了 |
15.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: ljs2k4 Posted on: 2004-12-11 17:14 所有字符串常量都被自动intern到string pool中。不信,try this: String a =null; String b = new String (a="abc"); System.out.println(a=="abc"); //输出true 所以答案是String a=new String("abc");这条语句生成了两个对象,a在heap中,"abc"在string pool中。 System.out.println("a"==new String("a")); //输出false System.out.println("a".equals(new String("a")));//输出true |
16.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: chengbd Posted on: 2004-12-11 23:12 什么叫“字符串池”(string pool)? |
17.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: wuyongjin] | Copy to clipboard |
Posted by: 飞哥 Posted on: 2004-12-12 11:28 wuyongjin wrote: 不知道你看的是什么书,不过不要把书上说的当圣经,用new生成string对象除了本身为其分配一个空间,还会在字符串池当中存储该字符串,所以被认为是两个对象,所谓的字符串池就是一个存储字符串字面量的空间,一般使用=号声明对象时,会在该字符串池当中查找是否存在该字符串,如果存在则把对象句柄指向该空间,如果不存在则在该字符串池当中存储该字符串,在字符串池当中是不允许有重复的字符串被存储的。 |
18.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: 飞哥 Posted on: 2004-12-12 11:32 在这里补充一下,所以一直以来争论一个或者两个我觉得没有必要,因为具体是一个还是两个还要看实际情况,例如:String a = new("abc);的时候,如果字符串池当中已经存储有该字符串常量,那么实际上只创建一个对象,相反,如果字符串池当中并没有存在该字符串常量,那么就是创建了两个对象。所以一个还是两个要看具体情况,没什么好争议的。 |
19.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: 飞哥] | Copy to clipboard |
Posted by: colo007 Posted on: 2004-12-12 22:28 飞哥 wrote: 看来已经成为定论了,哈哈! |
20.Re:请教:String a=new String("abc");产生了几个对象呢? [Re: drxjava] | Copy to clipboard |
Posted by: 理想の朽朽木 Posted on: 2004-12-14 21:35 2 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |