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. 【floyed】【HDU1217】【Arbitrage】

    题目大意: 给你几种货币,以及几种汇率关系,问是否存在套利的可能? 思路: 初步想法:图上存在一个环的路径上权值相乘大于1.... 再者:该如何找到图上所有环呢.... 好吧 经过鸟神 和 况神的指点 ...

  2. SecureCRT 绝佳配色方案

    终端有一个好的配色,不仅能保护自己的眼睛,也能给人一个好心情,本配色方案适合任意一种SSH客户端软件. 设置背景颜色 Options => Sessions options => Term ...

  3. c#部分常用方法

    此文章不断补充 1.判断该字符串是否存在于字符串数组中 string[] arr = {"aaa","bbb","aba","cc ...

  4. Winform子窗体刷新父窗体

    调用窗体(父):Form1,被调用窗体(子):Form2方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...} ...

  5. mysql 批量更新

    bs_user 表,我们叫他 bu表, 字段user_id,len_id, think_wellUser 表,我们简称为tw表,中的user_id ,len_id 其中tw表的user_id 是bu表 ...

  6. 利用js闭包获取索引号

    以tab选项卡效果为例: 网页中的选项卡效果

  7. input submit button iOS webview browser diffrence

    最近做项目用到了webview, 在浏览器中显示正常的input[type="submit"]按钮, 加载到webview中后css里的设置都失效了, webview里渲染的是最原 ...

  8. PHP发红包程序

    //红包算法$total = 20;   //红包总金额$num = 10;     //红包个数$min = 0.01;   //每个人最少能收到0.01 for ($i=1;$i<$num; ...

  9. linux下实现两人、三人无序对话功能

    序:引子 对话功能实际上就是利用管道见得通信.最原始的是一方发另一方收,不能进项交互,发送方的代码如下: /*============================================ ...

  10. inux网卡与MAC地址绑定方法总结

        使用linux系统时会出现这样的情况,当你安装了某个网卡的驱动程序时,或者安装了与网卡相关的程序后. 网卡会出现所谓的漂移现象.(注意:不是飘逸).可能的表象为: (1):网卡顺序颠倒,比如之 ...