Java高级特性--自定义一个StringBuilder的类
案例讲解--自定义一个StringBuilder的类

一:案例设计介绍
自义一个M定yStringBuilder来实现StringBuilder的功能
二:案例设计
- 实现append()方法追加字符串的功能
- 实现length()方法统计字符串的功能
- 实现capacity()方法获取容量大小
- 实现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);
}
}
Java高级特性--自定义一个StringBuilder的类的更多相关文章
- Java高级特性-String、StringBuffer和StringBuilder
Java高级特性-String.StringBuffer和StringBuilder String Java语言中的字符串值都属于String类,虽然有其他方法表示字符串(如字符串数组),但Java一 ...
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- java高级特性增强
第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...
- Java高级特性——反射机制(第二篇)
在Java高级特性——反射机制(第一篇)中,写了很多反射的实例,可能对于Class的了解还是有点迷糊,那么我们试着从内存角度去分析一下. Java内存 从上图可以看出,Java将内存分为堆.栈.方法区 ...
- Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例
利用Spring的拦截器可以在处理器Controller方法执行前和后增加逻辑代码,了解拦截器中preHandle.postHandle和afterCompletion方法执行时机. 自定义一个拦截器 ...
- Java高级特性1_流库_初体验
Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...
- 云端卫士实战录 | Java高级特性之多线程
<实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...
- Python的高级特性8:你真的了解类,对象,实例,方法吗
Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...
- Java高级特性 第2节 java中常用的实用类(1)
一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...
随机推荐
- IDEA下运行 mybatis报错 Parameter 'arg0' not found. Available parameters are [autoRecharge, id, param1, param2]
电脑换系统之后重新安装一了 一下idea 项目运行时出现了以下错误, [autoRecharge, id, param1, param2] 或 [arg0, id, arg1, param2] 参考地 ...
- [原创]Cadence Allegro16.6安装
选择Cancel. lisence managner安装完成,然后安装Product installation Cadence OrCad Allegro SPB 16.6 完整版+和谐文件 链接:h ...
- Tomcat 启动报错SEVERE: Unable to process Jar entry [javassist/util/proxy/SerializedProxy$1.class]
错误信息 springboot + spring mvc 的maven项目,在tomcat启动的时候报错,错误信息如下: SEVERE: Unable to process Jar entry [ja ...
- JavaScript模块化CommonJS/AMD/CMD/UMD/ES6Module的区别
目录 JS-模块化进程 原始的开发方式 CommonJS && node.js AMD && Require.js CMD && Sea.js UMD ...
- docker 安装kafka
1.下载镜像这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像 docker pull wurstmeister/zookeeperdocke ...
- 1到n的最小步数
1到n的最小步数 Time Limit: 1 Sec Memory Limit: 128 MB 给你一个数n,让你求从1到n的最小步数是多少. 对于当前的数x有三种操作: 1: x+1 2: x ...
- 对Inode、Hard Link以及Soft Link的理解
一.EXT2/EXT3等文件系统的分区格式 Linux的文件系统从EXT2开始将文件的属性和文件的实际内容分开存储,文件的属性由inode存储,文件的内容由block存储. 系统在对磁盘进行分区格式化 ...
- python入门编程之mysql编程
python关于mysql方面的连接编程 前提:引入mysql模块MySQLdb,即:MySQL_python-1.2.5-cp27-none-win_amd64.whl 如果要用线程池,则要引用模块 ...
- symfony小练习-表白墙
过上一个博客系统以及对官方示例程序的基本学习,目前对symfony的各个组件有了一定的学习,学校布置了一个表白墙任务,这里就这个任务的完成进行记录 ...........2019.3.20.22.31 ...
- Candies POJ - 3159 (最短路+差分约束)
During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher b ...