Java中的String,StringBuffer,StringBuilder详解与区别
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详解与区别的更多相关文章
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用
Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下 ...
- JAVA中的String类(详解)
Java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.String是一个类不属于基本数据类型. 可以从源码中看到,String是一个final类型. String ...
- 在JAVA中,String,Stringbuffer,StringBuilder 的区别
首先是,String,StringBuffer的区别 两者的主要却别有两方面,第一是线程安全方面,第二是效率方面 线程安全方面: String 不是线程安全的,这意味着在不同线程共享一个String ...
- Java 中的异常和处理详解
Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...
- Python中%r和%s的详解及区别_python_脚本之家
Python中%r和%s的详解及区别_python_脚本之家 https://www.jb51.net/article/108589.htm
- Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- Java中的String,StringBuilder,StringBuffer三者的区别(转载)
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- 转:Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- [转载]Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
随机推荐
- oracle修改闪回日志的位置
改变闪回日志位置的步骤: A.Change the value of the DB_RECOVERY_FILE_DEST initialization parameter to a new value ...
- UVA 10570 Meeting with Aliens
题意: N个外星人围成一桌坐下,有序的排列指N在N-1与N+1中间,现在给出一个序列,问至少交换几次可以得到有序的序列. 分析: 复制一遍输入序列,放在原序列之后.相当于环.通过枚举,可以把最小交换次 ...
- unity3d在Android端读取修改Json数据
首先我们需要下载一个文件 LitJson.dll(下载链接 ps: 是用自己的百度云盘下载的如果链接过时,请留言或自行下载, 密码: 5foa) 另外,由于我们要发布到安卓手机上,所以需要配置Jar和 ...
- JVM ClassLoader加载过程
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java虚拟机的类加载机制. 1)三个类加载器: bootstra ...
- HDU 5256 - 序列变换 ,树状数组+离散化 ,二分法
Problem Description 我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元素都必须是整数.请输出最少需要修改多少 ...
- mysql 查看mysql版本的四种方法
1 命令行中使用status可以查看. mysql> status;--------------mysql Ver 14.14 Distrib 5.5.25a, for Linux (x86_ ...
- css3实现的三种loading动画(转载)
收藏了: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- Oracle EBS-SQL (INV-4):检查负库存记录数.sql
DEFINE DATE1="01/15/20** 23:59:59" /*输入指定日期*/DEFINE CODE="%" ...
- Windows 下 Django/python 开发环境配置
1.安装 Aptana/Eclipse Aptana是在eclipse上二次开发的一个开源的集成开发环境,内置python编译器 http://www.aptana.com/ 2. 安装python ...
- windows和linux下获取当前程序路径以及cpu数
#ifdef WIN32 #include <Windows.h> #else #include <stdio.h> #include <unistd.h> #en ...