案例讲解--自定义一个StringBuilder的类

一:案例设计介绍

自义一个M定yStringBuilder来实现StringBuilder的功能

二:案例设计

  1. 实现append()方法追加字符串的功能
  2. 实现length()方法统计字符串的功能
  3. 实现capacity()方法获取容量大小
  4. 实现toString()方法,完成字符串的输出

三:方案实施

class MyStringBuilder{
构造方法{
//做初始化
}
//常用的方法
public int append();
public int length();
public capacity();
public toString();
}

四:具体实施步骤

public class StringBuilder{
public static void main(String []args){
MyStringBuilder msb=new MyStringBuilder();
msb.append("abc").append("world").append("hello");
//msb.append("world");
System.out.println("字符个数:"+msb.length());
System.out.println("容量大小:"+msb.capacity());
System.out.println("输出字符串:"+msb.toString());
}
}
class MyStringBuilder{
private char [] value; //字符数组
private int count=0; //字符数组中存放字符的个数
public MyStringBuilder(){
value=new char[16];
}
public MyStringBuilder(int capacity){
value=new char[capacity];
}
public MyStringBuilder(String str){
value=new char[str.length()+16];
}
//得到字符数组中的字符个数
public int length(){
return count;
}
//返回容器容量大小
public int capacity(){
return value.length;
}
//实现字符串的追加(添加)
public MyStringBuilder append(String str){
int len=str.length; //获取要添加字符串的长度
//确保所添加的字符串能放到字符数组中
ensureCapacity(count+len);
//把要添加的字符串追加到新的指定数组的指定位置后面
str.getChars(0,len,value,count);
count+=len; //元素的个数增加了
return this;
}
public void ensureCapacity(int capacity){
//数组超出容量的大小
if(capacity-value.length>0){
int newCapacity=value.length*2+2; //扩容后新字符数组的大小
value=Arrays.copyOf(value,newCapacity);
}
}
//把字符串数组的字符转换为字符串显示
public String toString(){
return new String(value,0,count);
}
}

最新文章

  1. Spak之开发代码 _pom 配置
  2. 对于for循环构成的九宫格里的button,如何满足“有默认选中的一个,并且只能选中一个”?
  3. 翻译:使用tbb实现特征检测的例子
  4. PCL—低层次视觉—点云分割(最小割算法)
  5. hdoj 1251 统计难题(字典树)
  6. QUrl不同版本之间的坑
  7. codeblocks+mbedtls库配置
  8. 高效管理http连接
  9. eclipse代码提示设置过常用字符还是不起作用的解决方法
  10. Linux-Shell编程之求命令行中所有整数之和
  11. PHP----------PHP自身的性能优化注意事项
  12. GitLab CI .NET 部署中的几个坑
  13. jvisualvm远程监控 visualgc插件 不受此jvm支持问题
  14. MySQL分区和分表
  15. 【BZOJ】2815: [ZJOI2012]灾难
  16. Linux - DNF包管理
  17. python对json的操作总结 zz
  18. 格式与布局 float 左右悬浮边框
  19. linux学习笔记一:远程连接linux服务器
  20. day 20 约束 异常处理 MD5

热门文章

  1. git - 1.基础
  2. python生成pdf报告、python实现html转换为pdf报告
  3. 使用python来操作redis用法详解
  4. 与下位机或设备的通信解析优化的一点功能:T4+动态编译
  5. 四、OpenStack—glance组件介绍与安装
  6. STM32L476RG_中断开发与实列
  7. Android全平台书籍
  8. Makefile自学
  9. Golang的模块管理Module
  10. matlab安装 macos