1.String

Java中string类是不可变的,其中在声明的源代码中用的final,所以只能声明一次。
所以每次在明面上的改变其实是重新生成一个String对象,指针指向新的String对象。
同时,String内部重写的了equal的方法,原本Object的equal就是两个对象相等就可以,
但是现在,并不能靠对象相等来判断值相等了,重写的equal中会挨个比较字符,
这也就是为啥比较同样内容字符串要用equal的原因。

同时String a="111"+"222"+"333";
    跟 String b="111";
        String c="222";
        String d="222";
        String a=b+c+d;
    的开销是不一样的,明显上面的更快一点,String这样建立字符串是最快的

后者其实也是调用了StringBuffer的append方法,一个一个加进去的。
    前者,编译的时候就是111222333了

2.StringBuffer
StringBuffer是线程安全的。一个String的字符缓冲区,如果要频繁的进行字符的修改,
用这个是最好的选择,并且每次操作就是对自身对象的操作,就跟String类区分开了。
其中用的最多的是append和insert,append就是插入到字符串末尾,insert就是插入到指定位置。

3.StringBuilder
但是又不是每次都是很多线程操作并且频繁的操作,但是又不能用String不停创建新对象影响性能。
这样就出现了StringBuilder。API都是跟StringBuffer兼容的,大都适用于单线程操作。

三者用法:
1.String适用于少量数据的操作,StringBuffer适用于多线程频繁操作大量数据,StringBuilder适用于
单线程操作大量的数据。
2.不要经常用字符串拼接+号,因为每次都会创建新对象增加开销,例如上面的String a=b+c+d;
3.StringBuffer和StringBuilder最好创建时候定义好长度,这样更好提高性能。
还有区别好系统的运行方式,多线程还是单线程,这样可以根据StringBuffer和StringBuilder的特色选择更好的方式

Java中的String,StringBuffer,StringBuilder详解与区别的更多相关文章

  1. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  2. Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用

    Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下 ...

  3. JAVA中的String类(详解)

    Java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.String是一个类不属于基本数据类型. 可以从源码中看到,String是一个final类型. String ...

  4. 在JAVA中,String,Stringbuffer,StringBuilder 的区别

    首先是,String,StringBuffer的区别 两者的主要却别有两方面,第一是线程安全方面,第二是效率方面 线程安全方面: String  不是线程安全的,这意味着在不同线程共享一个String ...

  5. Java 中的异常和处理详解

    Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...

  6. Python中%r和%s的详解及区别_python_脚本之家

    Python中%r和%s的详解及区别_python_脚本之家 https://www.jb51.net/article/108589.htm

  7. Java中的String,StringBuilder,StringBuffer三者的区别

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  8. Java中的String,StringBuilder,StringBuffer三者的区别(转载)

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  9. 转:Java中的String,StringBuilder,StringBuffer三者的区别

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  10. [转载]Java中的String,StringBuilder,StringBuffer三者的区别

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

随机推荐

  1. 玩转Android---事件监听篇---第2篇

    事件监听篇---第二篇 下面是各种常用控件的事件监听的使用 ①EditText(编辑框)的事件监听---OnKeyListener ②RadioGroup.RadioButton(单选按钮)的事件监听 ...

  2. VS2012JSON自动生成对应的类

    一.复制JSON数据如图 {Key:"aaaa",Value:"bbbb"} 二.点击以下操作

  3. Swift和Objective-C的差异性

    1:Type Swift提供了类型推断,不需要人工的去注释变量的类型信息,编译器会通过变量的值来推断类型.例如,编译器可以自动将该变量设置为字符串: // 自动推断,不显示 var name1 = & ...

  4. JS判断终端浏览器类型

    根据终端浏览器类型不懂加载不同的JS或CSS文件 <script> var browser = { versions: function () { var u = navigator.us ...

  5. ToString()的浅显解释(转)

    转自:http://zhidao.baidu.com/link?url=2g3NZ8tmL635L5XmWUh5i-mAlAsySunJryiq2Jl0LRsM691049dOwhoXy-8kJ6HL ...

  6. 5.7.2.2 min()和max()方法

    Math对象还包含许多方法,用于辅助完成简单和复杂的数学计算. 其中,min()和max()方法用于确定一组数值中的最小值和最大值.这两个方法都可以接受任意多个数值参数,如下例子: var max = ...

  7. Ubuntu root登陆

    分两步: 1.激活root 输入命令:sudo passwd,键入当前用户密码之后,为系统设置root密码:交互如下: jack@ubuntu:~$ sudo passwd[sudo] passwor ...

  8. Ubuntu下Geary安装

    sudo add-apt-repository ppa:yorba/ppasudo apt-get updatesudo apt-get install geary

  9. [问题解决] LaTex Error:Unknown graphics extension:.eps

    错误:编译的时候显示:“!LaTex Error:Unknown graphics extension:.eps” 发生场景:Latex写论文 解决方案: latex eps.texdvi2ps ep ...

  10. MATLAB介绍

    MATLAB MATLAB[1]  是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink ...