StringBuffer和StringBuild的使用
package com.常用类;
import org.junit.Test;
/**
* 关于package com.常用类;
import org.junit.Test;
/**
* 关于StringBuffer和StringBuild的使用
*/
public class StringBufferBuilderTest {
/*
String和StringBuffer、StringBuild之间的转换
String --->StringBuffer、StringBuild:调用StringBuffer、StringBuild的构造器
StringBuffer、StringBuild--->String:1.调用String构造器
2.StringBuffer、StringBuild的toString()
*/
/*
对比三者的效率:
从高到低排序:StringBuilder > StringBuffer > String
*/
/*
StringBuffer的常用方法(StringBuilder同)
总结:
增:append()
删:delete(int start,int end)
改:setCharAt(int n,char ch)/replace(int start,int end,String str)
查:charAt(int n)
插:insert(int offset,xxx)
长度:length()
遍历:for + charAt()
*/
@Test
public void test2(){
StringBuffer s1 = new StringBuffer("abc");
s1.append(1).append(2);//方法链
s1.append('1');
System.out.println(s1);
// s1.delete(2,4);
// s1.replace(2,4,"hello");
// s1.insert(2,false);
// s1.reverse();
String s2 = s1.substring(1, 3);//返回的是子字符串,不是原来的字符串,所以需要有个东西装着
System.out.println(s1);
System.out.println(s1.length());
System.out.println(s2);
}
/*
String、StringBuffer、StringBuild三者的异同?
String:不可变的字符序列;底层使用char[]储存
StringBuffer:可变的字符序列:线程安全,效率低;底层使用char[]
StringBuild:可变的字符序列:jdk5.0新增的,线程不安全的,效率高;底层使用char[]
源码分析:
String str = new String();/ar[] value = new char[0];
String str1 = new String("abc");/ar[] value = new char[]{'a','b','c'};
StringBuffer sb1 = new StringBuffer();/ar[] value = new char[16];相当于底层创建了一个长度是16的数组。
sb1.append('a');/alue[0] = 'a';
sb1.append('b');/alue[1] = 'b';
StringBuffer sb2 = new StringBuffer("abc");/ar[] value = new char["abc".length() + 16];
问题1:System.out.println(sb2.length());//3
问题2:扩容问题:如果要添加的数据底层数组撑不下了,那就需要扩容底层的数组。
默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新的数组中。
指导意义:开发中建议大家使用:StringBuffer(int capacity)或StringBuilder(int capacity)
*/
@Test
public void test(){
StringBuffer sb1 = new StringBuffer("abc");
sb1.setCharAt(0,'m');
System.out.println(sb1);
StringBuffer sb2 = new StringBuffer();
System.out.println(sb2.length());//0 value.length()=16
}
}
*/
public class StringBufferBuilderTest {
/*
String和StringBuffer、StringBuild之间的转换
String --->StringBuffer、StringBuild:调用StringBuffer、StringBuild的构造器
StringBuffer、StringBuild--->String:1.调用String构造器
2.StringBuffer、StringBuild的toString()
*/
/*
对比三者的效率:
从高到低排序:StringBuilder > StringBuffer > String
*/
/*
StringBuffer的常用方法(StringBuilder同)
总结:
增:append()
删:delete(int start,int end)
改:setCharAt(int n,char ch)/replace(int start,int end,String str)
查:charAt(int n)
插:insert(int offset,xxx)
长度:length()
遍历:for + charAt()
*/
@Test
public void test2(){
StringBuffer s1 = new StringBuffer("abc");
s1.append(1).append(2);//方法链
s1.append('1');
System.out.println(s1);
// s1.delete(2,4);
// s1.replace(2,4,"hello");
// s1.insert(2,false);
// s1.reverse();
String s2 = s1.substring(1, 3);//返回的是子字符串,不是原来的字符串,所以需要有个东西装着
System.out.println(s1);
System.out.println(s1.length());
System.out.println(s2);
}
/*
String、StringBuffer、StringBuild三者的异同?
String:不可变的字符序列;底层使用char[]储存
StringBuffer:可变的字符序列:线程安全,效率低;底层使用char[]
StringBuild:可变的字符序列:jdk5.0新增的,线程不安全的,效率高;底层使用char[]
源码分析:
String str = new String();/ar[] value = new char[0];
String str1 = new String("abc");/ar[] value = new char[]{'a','b','c'};
StringBuffer sb1 = new StringBuffer();/ar[] value = new char[16];相当于底层创建了一个长度是16的数组。
sb1.append('a');/alue[0] = 'a';
sb1.append('b');/alue[1] = 'b';
StringBuffer sb2 = new StringBuffer("abc");/ar[] value = new char["abc".length() + 16];
问题1:System.out.println(sb2.length());//3
问题2:扩容问题:如果要添加的数据底层数组撑不下了,那就需要扩容底层的数组。
默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新的数组中。
指导意义:开发中建议大家使用:StringBuffer(int capacity)或StringBuilder(int capacity)
*/
@Test
public void test(){
StringBuffer sb1 = new StringBuffer("abc");
sb1.setCharAt(0,'m');
System.out.println(sb1);
StringBuffer sb2 = new StringBuffer();
System.out.println(sb2.length());//0 value.length()=16
}
}
StringBuffer和StringBuild的使用相关推荐
- StringBuffer和StringBuild
StringBuffer和StringBuild两个类的区别主要是: StringBuffer JDK1.0提供的类,线程安全,做线程同步检查,效率较低. StringBuild JDK1.5提供的类 ...
- java 字符串处理流程_一文带你了解Java字符串处理(String,StringBuffer,StringBuild)...
前言本文篇幅较长,但都是满满的干货,请大家耐心观看,相信会有不小的收获.本人在总结的过程中也收获了很多的知识,也希望大家可以一起借鉴学习下,希望大家最后都能有所收获! 再言字符串的分类在java.la ...
- c++ string取子串_一文教你Java字符串处理(String,StringBuffer,StringBuild)
前言 本文篇幅较长,但都是满满的干货,请大家耐心观看,相信会有不小的收获.本人在总结的过程中也收获了很多的知识,也希望大家可以一起借鉴学习下,希望大家最后都能有所收获! 再言 字符串的分类在java. ...
- c++string 加引号_一文带你了解Java字符串处理(String,StringBuffer,StringBuild)
前言 本文篇幅较长,但都是满满的干货,请大家耐心观看,相信会有不小的收获.本人在总结的过程中也收获了很多的知识,也希望大家可以一起借鉴学习下,希望大家最后都能有所收获! 再言 字符串的分类在java. ...
- Java基础篇——字符串处理(String,StringBuffer,StringBuild)
提前说明本次的文章很长但是很有用,有耐心看完的必定不是凡人,必定会有很大的收获.本人在总结的过程中也收获了很多的知识,希望我们可以一起学习.写下这篇文章完全是抱着可以帮助到他人的态度. 虽然要写出很高 ...
- StringBuilder StringBuffer 如何清空
StringBuilder StringBuffer面试题一般会问两者的区别和String的区别. StringBuffer线程安全的,StringBuild线程不安全的, String的区别是Str ...
- String和StringBuffer、StringBuile区别
一.String常见方法 String t1 = "Aj,sdh";String t2 = "gfdgs";System.out.println(t1.equa ...
- java后端经验和技术总结(1)
1.在这几年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为系统维护和发布当救火队员的苦恼.遂决定梳理一下自己所学到过的东西,为大家分享一下. 经过几年意识到以前也有很多认识误区,比如: ...
- @override怎么加上去_不知道怎么学?java后端5年经验和技术总结(附思维导图)
1.引言 今天的光棍节,经历了昨晚的疯狂之后,看着后台数据逐渐的趋于平稳,突然感觉身心疲惫,躺在椅子上,看着媳妇给我发的消息,同学群里在疯狂讨论昨晚的疯狂操作,身边的年轻人换了一批又一批,回想自己,毕 ...
最新文章
- 矢量合成和分解的法则_高考复习整理力的合成和分解
- MSD3458开发资料
- 1、LeetCode784 字母大小写全排列
- jq添加新节点赋予class属性并获取该对象
- 2013\National _C_C++_A\4.约数倍数选卡片
- JavaScript面向对象——深入理解默认的继承方式原型链
- 转:【总结】浏览器CSS Hacks汇总,浏览器兼容方式CSS Hacks
- 如果人民币贬值,对股市会有什么影响?
- .NET 云原生架构师训练营(模块二 基础巩固 配置)--学习笔记
- 普通树与二叉树的相互转化及哈夫曼树的了解
- java 字符流 utf8,JAVA基础(字符流设置编码读写字符)
- c语言序列化后只有四位小数,《C编程.高级C》4.序列化
- 53. Maximum Subarray 题解
- 群晖服务器自动同步到本地电脑,安装群晖Drive,实现多台电脑文件同步
- [SQL面试经验] 经典sql面试题及答案第1期
- 数字信号处理(DSP)实验——IIR数字滤波器设计与仿真
- 用命令行建立空白的simulink模型(mdl文件)(Matlab)
- python pip工具安装教程
- c# pdf转html,C# 将PDF转为Word、Html、XPS、SVG、PCL、PS——基于Spire.Cloud.PDF
- AJAX,Axio异步框架(对原生AJAX封装)。web分区
热门文章
- http请求工具类 含是否代理 及设置代理地址及端口
- NGSIM数据集解析(含代码)
- 1795C Tea Tasting
- linux环境变量配置的方法,linux 设置环境变量方法是怎样的?Linux环境变量配置注意事项是什么?...
- 百度小程序调研微信转百度
- 电子商务信用如何提高?
- 初探技术管理(5)-管理沟通
- java nonnull_java – “如果函数返回非null,则为NonNull”?
- web导入excel(利用POI解析)
- Hadoop安装及遇到问题解决——1.安装