1. String 和 StringBuffer 的区别(转自http://pengcqu.iteye.com/blog/487538)

Java笔试题经常考到“String和StringBuffer的区别”,对于二者区别网上已经有很多,实际应用中也要主要到二者的区别,二者性能的差别很大。本人通过小例子来比较二者性能,效果显著!

String:是对象不是原始类型.
           为不可变对象,一旦被创建,就不能修改它的值.
           对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
           String 是final类,即不能被继承.

StringBuffer:
           是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
           它只能通过构造函数来建立,
          StringBuffer sb = new StringBuffer();
          对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.通过它的append方法向其赋值.

sb.append("hello");

字符串连接操作中StringBuffer的效率要明显比String高:

String对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.

StringBuffer对象实例化后,只对这一个对象操作。

我这里写了一个小的例子,来测试String和StringBuffer在时间和空间使用上的差别。

测试结果:

1.使用String做10000次向一字符串后添加字符串

操作耗时:1872ms,内存消耗:1301KB

2.使用StringBuffer做10000次向一字符串后添加字符串

操作耗时:15ms,内存消耗:162KB

3.使用StringBuffer与StringBuilder进行100000次操作时,

StringBuffer操作耗时:359ms,内存消耗:21356KB

StringBuilder操作耗时:189ms,内存消耗:21356KB

但StringBuffer 线程安全;
StringBuilder 线程不安全;
为了达到线程安全的目的在一定程度上会降低程序的性能。所以在单线程中,StringBuilder的性能要比StringBuffer高。多线程为了线程安全需要采用StingBuffer。

(PS  对于刚刚举的这个例子,使用char str[] = new char[100100]) 操作耗时:51ms,内存消耗:1955KB,从各种角度都快爆了。 怪不得我喜欢用c++而不喜欢用java...)

笔试——JAVA相关的更多相关文章

  1. 找工作--Java相关

    Hi 各位 首先自我描述一下,80后程序员,现在在做Eclipse插件开发. 求Java相关职位(Java/Swing/Eclipse Plugin/Python etc), 或者Linux下C相关职 ...

  2. 收集一些java相关的文章

    有些文章看了,以后想再看已经忘了在哪里了.故在此一一记录下那些值得看的文章. 1:如何确定Java对象的大小 中文版本 :http://article.yeeyan.org/view/104091/6 ...

  3. 分享一些JAVA相关资源

    前言 以前在学习JAVA时,因为搜索相关资源过于不便,所以在搜集了一些好用的资源之后,将此分享. 文档主要包括面试文档, JAVA的技术文档(如JAVA并发实战.设计模式之类),LINUX的相关文档以 ...

  4. 【java】Java相关学习参考链接(持续更新)

    How to do in java,https://howtodoinjava.com/,Java手册,分版本,并且有每个版本的新特性的详细解析. Java World,https://www.jav ...

  5. 官网下载java相关资源

    官网下载java相关资源 官网地址:http://www.oracle.com 一.下载JDK 1.首先进入Downloads >> Java For Developers,如图 2.点击 ...

  6. Java相关PDF书籍与教程免费下载

    场景 我的CSDN: https://blog.csdn.net/BADAO_LIUMANG_QIZHI 我的博客园: https://www.cnblogs.com/badaoliumangqizh ...

  7. Awesome Java: Github上关于Java相关的工具

    Awesome Java 这是Github上关于Java相关的工具,框架等等资源集合. 原文参考: https://github.com/akullpp/awesome-java. @pdai 最全的 ...

  8. JAVA相关基础知识

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  9. Java相关书籍推荐

    Java从入门到精通(第3版 附光盘) 作      者 明日科技 编 出 版 社 清华大学出版社 出版时间 2012-08-01 版      次 3 页      数 564 印刷时间 2012- ...

随机推荐

  1. poj2888 Magic Bracelet

    给你一个正n(<10^9)边形和m(<10)种色料,要求给正n边形顶点染色并且规定k组颜色对不能相邻, 输入保证n与mod互质,计数染色总方案数(绕图形中心旋转后相同的方案算一种)对mod ...

  2. Round Numbers(组合数学)

    Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10484 Accepted: 3831 Descri ...

  3. Babelfish 分类: 哈希 2015-08-04 09:25 2人阅读 评论(0) 收藏

    Babelfish Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 36398 Accepted: 15554 Descripti ...

  4. Poj(3522),UVa(1395),枚举生成树

    题目链接:http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submis ...

  5. 对table的tr使用display:block显示colspan失效问题的解决

    qqqq <table> <tr> <td id="qqq" colspan="3" style="display:no ...

  6. thinkphp隐藏中url的index.php

    在本地进行测试 1.修改apache配置文件将如下代码#去掉 #LoadModule rewrite_module modules/mod_rewrite.so   在index.php 目录下新建文 ...

  7. 字符串转Json对象

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web.S ...

  8. A840S黑砖修复过程(2013-05-22修改)

    首先感谢su_ky大神,没有他的博客和帖子,这次救砖根本没有成功的可能.其次谢谢A840S交流群284998898的Sunny deng,没有他提供的分区镜像同样也完成不了这次的工作.现象:手机完全没 ...

  9. Cheatsheet: 2015 03.01 ~ 03.31

    Web The Architecture of Algolia's Distributed Search Network No promises: asynchronous JavaScript wi ...

  10. C#借助谷歌翻译实现翻译小工具(二)添加托盘图标

    接上一节完善小翻译工具 设置Form的ShowInTaskbar属性为False,取消任务栏显示 设置Form的MaximizeBox属性为False,取消最大化显示 窗口添加两个控件 分别是:Con ...