java基础知识回顾之---java StringBuffer类
/*
* StringBuffer:就是字符串缓冲区,线程安全。
* 用于存储数据的容器。
* 特点:
* 1,长度的可变的。
* 2,可以存储不同类型数据。
* 3,最终要转成字符串进行使用。
* 4,可以对字符串进行修改。
*
* 构造方法:
* StringBuffer() :构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(int capacity): 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
* 效率:
* 如果事先知道要往容器中放多少字符,则使用第二中效率更高,因为虽然此容器室可变的,但是内部使用可变数组
* ,每次增长数组的长度,需要浪费时间,因为每次需要重新创建一个长度为原来数组两倍的新数组,
* 而且还要复制原来数组的元素,需要一定的时间。
* 看源码发现:StringBuffer 父类AbstractStringBuilder的方法:需要执行以下方法往容器里面填充:
*
* void expandCapacity(int minimumCapacity) {
int newCapacity = (value.length + 1) * 2;//原来数组的两倍多
if (newCapacity < 0) {
newCapacity = Integer.MAX_VALUE;
} else if (minimumCapacity > newCapacity) {
newCapacity = minimumCapacity;
}
value = Arrays.copyOf(value, newCapacity);//把原来数组的值复制到新数组当中,value代表原始数组,代表新数组的长度
}
*
*
* 既然是一个容器对象。应该具备什么功能呢?
* 1,添加:不同类型的数据
* StringBuffer append(data);
* StringBuffer insert(index,data);//在某个位置进行插入
* 2,删除:
* StringBuffer delete(start,end):包含头,不包含尾。
* StringBuffer deleteCharAt(int index):删除指定位置的元素
* 3,查找:
* char charAt(index);//查找元素
* int indexOf(string);//查找位置(第一次出现)
* int lastIndexOf(string);//查找位置(最后一次出现)
* 4,修改:
* StringBuffer replace(start,end,string);//替换子字符串中的字符,使用给定字符串
* void setCharAt(index,char);//使用一个字符,替换指定位置上的字符
*
* 增删改查 C(create)U(update)R(read)D(delete)
*
* 特殊方法:
* 5。设置字符串的长度public void setLength(int newLength) newLength 参数必须大于或等于 0。
* 如果 newLength 参数小于当前长度,则长度将更改为指定的长度。
如果 newLength 参数大于或等于当前长度,则将追加有效的 null 字符 ('\u0000'),使长度满足 newLength 参数。
看源码发现:value代表原始数组。
public void setLength(int newLength) {
if (newLength < 0)
throw new StringIndexOutOfBoundsException(newLength);
if (newLength > value.length)
expandCapacity(newLength);
if (count < newLength) {
for (; count < newLength; count++)
value[count] = '\0';
} else {
count = newLength;
}
}
*/
public class StringBufferDemo { /** * @param args */ public static void main(String[] args) { bufferMethodDemo_2(); } private static void bufferMethodDemo_2() { StringBuffer sb = new StringBuffer("abce"); //删除 sb.delete(1, 3);//ae sb.delete(0,sb.length());//清空缓冲区。 //sb = new StringBuffer(); sb.append("abced"); sb.replace(1, 3, "nba");//包含头,不包含尾部,替换,1,2位置:b和c System.out.println("repalce***********"+sb.toString());//输出repalce***********anbaed sb.setCharAt(2, 'q');//输出 System.out.println("setCharAt******:"+sb);//输出setCharAt******:anqaed sb.setLength(10);//设置字符序列的长度 System.out.println("sb:"+sb); System.out.println("len:"+sb.length()); System.out.println(""+sb.reverse().toString());//输出deaqna } private static void bufferMethodDemo_1() { StringBuffer sb = new StringBuffer("abce"); // sb.append("xixi"); sb.insert(2, "qq");//在c的位置进行插入,c向后顺延,输出abqqce System.out.println(sb.toString()); } public static void bufferMethodDemo(){ //创建缓冲区对象。 StringBuffer sb = new StringBuffer(); sb.append(4).append(false);//.append("haha"); sb.insert(1, "haha"); // sb.append(true); System.out.println(sb); } }
相关文章
- java对象组声明_如何在Java中声明对象数组?
- think in java一_Think in Java(一):Java基础「建议收藏」
- Java基础知识总结(超详细整理),java从入门到精通pdf「建议收藏」
- eclipse创建一个java项目目录_Eclipse创建JAVA项目
- java中的static关键字的作用?
- 23篇大数据系列(一)java基础知识全集(2万字干货,建议收藏)
- 浅析Java多态_JAVA多态
- java 反射getmethod_Java 反射机制中 getMethod()和getDeclaredField()区别
- java数组 初始化_用Java初始化数组「建议收藏」
- Java多态理解_什么是java多态
- 【错误记录】生成 Java 文档错误 ( Xxx.java:xx: 错误: 编码GBK的不可映射字符 )
- Java复制一个目录下所有的文件夹到另一个目录下详解编程语言
- Java Annotation 必须掌握的特性详解编程语言
- java多线程系列(九)—ArrayBlockingQueue源码分析详解编程语言
- Java连接MySQL:实现数据互通(java如何连接mysql)
- java集合框架综述详解编程语言
- java.sql.SQLException: com.mysql.jdbc.Driver详解编程语言
- 写入数据Java实现MySQL数据写入(java向mysql)
- 连接高效完成Java面试:掌握Oracle连接知识(java面试oracle)
- Linux调用Java实现编程快速开发(linux调用java)
- Linux下Java命令:简介与基本用法(linux下java命令)
- 数据库一步一步教你Java如何恢复Oracle数据库(java恢复oracle)
- 询Java与Oracle联合查询更高效的数据处理方式(java oracle查)
- MySQL和Java结合的必备工具MySQL下载Java(mysql下载java)
- 用JAVA自设的EhCache替代Redis缓存系统(使用什么代替redis)