`
MegRyan
  • 浏览: 2585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

又是STRING的问题..

阅读更多
等   级:
  发表于:2007-11-17   11:36:404楼   得分:0  
a       和       b       和c       各是一个对象  
相对于String       s=new       String(   "a   ")+new       String(   "b   ")+new       String(   "c   ");  
a和b相加后ab为一个对象,  
ab+c又是一个对象  
整个过程产生了5个对象  
s指向的就是第5个对象。  
其余4个没有被引用的对象会在内存紧缺的时候被垃圾回收。  

个人理解,如果不对楼下一定改正。  
 
=================================================================================

不知道你有没有看过Effictive   Java,这书是写JDK的一牛人写的,现在跑去GOOGLE了,书中说,在写程序时,建议我们不能这样定义一个String:
Java codeString   s=new   String( "a ")


这样不会产生两个String,当时我也纳闷,原来是这样的:“a”本身已经是一个string了,再new了一次,就产生两个了。
=================================================================================================

对于LZ这个问题,我给你个权威的回答吧:其实编译成.class文件后string的加法是由stringbuilder/stringbuffer来连接的。。。

至于产生几个对象,当然是四个了。JDK不会傻到“a”+“b”也产生一个新对象,SUN那些大牛们难道会不知道PERFORMANCE吗。。。。

实际上,编译后可以会变成这个样子:

Java code
StringBuffer ss = new StringBuffer();
ss.append("a").append("b").append("c");
String s = ss.toString;



不信的话,可以去看下.CLASS文件反编译后看下。


还是那句话,学东西要学精。我也在努力。
分享到:
评论

相关推荐

    扩展:Java高级技术.pdf

    一、高级参数:三个点 ...另外如果既有test(String...strings)函数,又有test()函数,在调用test()时,会优先使用test()函数。 只有当没有test()函数式,调用test(),程序才会走test(String...strings)。

    C#中字符串优化String.Intern、IsInterned详解

    本文将给大家详细介绍关于C#字符串优化String.Intern、IsInterned的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 首先看一段程序: using System; class Program { static void ...

    Java 面试宝典

    33、String s = new String("xyz");创建了几个 String Object? 二者之间有什么区别? ...........................................................................................................................

    你必须知道的495个C语言问题(PDF)

    然后又使用一些内存分配技巧使namestr 数组用起 来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受...

    String中三种加法的区别

    但是在编程实际上又要求程序员了解其实现的细节而避免写出因调用已有library不正引起的performance慢的,耗费系统资源多的程序.通常成为一个优秀的JAVA程序员需要较长时间的经验积累,包括从程序的tuning中,或从其他...

    你必须知道的495个C语言问题

    然后又使用一些内存分配技巧使namestr 数组用起 来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受...

    jox-1.17b3.jar

    为了灵活的满足Web应用和Web services需求的变化,Java和XML的轻便性和可扩展性使它们成为解决这一问题的理想选择。SAX (Simple API for XML), DOM (document.nbspObject Model), XSL (Extensible Stylesheet ...

    你必须知道的495个C语言问题.pdf

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小...

    java计算器程序.doc

    //需要解决的问题,数学的运算都有正负号的出现,在点击等号的时候就会有冲突,应该怎样解决,经验:双精度浮点型数据类型是会像后减一位。0.7会显示成0.69999999 public class app74 { static int i=0; static ...

    equals问题经典

    又点乱了 equals的源代码: public boolean equals(Object obj){ return (this==obj); } 那么s1.equals(s2)的返回值不就是 (s1==s2) 吗? 但是s1.equals(s2);结果为true s1==s2; 结果为false 问题三: class ...

    springmybatis

    但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. 什么是mybatis MyBatis是支持普通SQL查询,存储过程和...

    JS去掉第一个字符和最后一个字符的实现代码

    怎么用又快又有效的办法去掉呢。stringObject.substring(start,stop) //截取的是开始与结束的字符串。stringObject.substr(start,length) //截取的是开始与字符串长度。考虑到这些,和方法的连缀。stringObject....

    jpivot学习总结.doc

    他的组成是由层次( Hierarchies )而层次( Hierarchies )又是有级别( Level )组成 . 其属性如下: 属性名 含义 name Dimension 的名称 type 类型,有两个可选的类型: StandarDimension 和 Time...

    C++实现的String字符串类

    一个又C++实现的字符类重写,是老师留得作业,但是内容充实,可以广泛扩展,同时实现了类的重载,定义,以及组合等内容

    HTTP请求库java-requests.zip

    Requests, 是一个模仿python requests 模块来设计的Http lib,拥有简单而灵活的API,在容易使用的同时,又能够满足各种高级定制的使用,可是说是当前最好用的Java Http Client Lib。 简单的请求示例:String url =...

    也说JavaScript中String类的replace函数

    但我很好奇,第二到倒数第三之间的参数又是些什么呢?其实,W3school已经给出了答案: 代码如下: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。其语法为: string...

    javascript函数的解释

    97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置. 98.string.match(regExpression),判断字符是否匹配. 99.string.replace(regExpression,replaceString)替换现有字符串. 100.string.split(分隔...

    Java中的String不再纠结

    又是新的一月,又是各种总结,先分享一下java中string的一些小专题吧,这部分比比较基础,但是也非常的有用。我发现很多面试官像中了邪一样爱问这个。。string的种种,纠结,希望这篇文章让大家不再纠结。。 string...

Global site tag (gtag.js) - Google Analytics