案例讲解--自定义一个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);
}
}

Java高级特性--自定义一个StringBuilder的类的更多相关文章

  1. Java高级特性-String、StringBuffer和StringBuilder

    Java高级特性-String.StringBuffer和StringBuilder String Java语言中的字符串值都属于String类,虽然有其他方法表示字符串(如字符串数组),但Java一 ...

  2. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  3. java高级特性增强

    第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...

  4. Java高级特性——反射机制(第二篇)

    在Java高级特性——反射机制(第一篇)中,写了很多反射的实例,可能对于Class的了解还是有点迷糊,那么我们试着从内存角度去分析一下. Java内存 从上图可以看出,Java将内存分为堆.栈.方法区 ...

  5. Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例

    利用Spring的拦截器可以在处理器Controller方法执行前和后增加逻辑代码,了解拦截器中preHandle.postHandle和afterCompletion方法执行时机. 自定义一个拦截器 ...

  6. Java高级特性1_流库_初体验

    Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...

  7. 云端卫士实战录 | Java高级特性之多线程

    <实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...

  8. Python的高级特性8:你真的了解类,对象,实例,方法吗

    Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...

  9. Java高级特性 第2节 java中常用的实用类(1)

    一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...

随机推荐

  1. 理解go的闭包

    package main import ( "fmt" ) func test(a int) { a++ fmt.Println(a) } func test2() func() ...

  2. Tutorial for MI5 ! flash MI5 to Native Anriod 9

    First ,you should download all zips you need Anriod 9.0 rom link:https://drive.google.com/uc?id=1 .. ...

  3. tensorflow Tensorboard可视化-【老鱼学tensorflow】

    tensorflow自带了可视化的工具:Tensorboard.有了这个可视化工具,可以让我们在调整各项参数时有了可视化的依据. 本次我们先用Tensorboard来可视化Tensorflow的结构. ...

  4. C++11 带来的新特性 (4)—— 匿名函数(Lambdas)

    1 语法 Lambdas并不是新概念,在其它语言中已经烂大街了.直接进入主题,先看语法: [ captures ] ( params ) specifiers exception attr -> ...

  5. 记一次线上Zabbix对Redis监控实录

    前言:Redis作为缓存服务器我想大家都比较的熟悉,那么,如果想要更好的维护和监控,那么我们会对其redis服务器统一监控起来,如何监控呢?如果在生产环境一台服务器部署多个redis,这样就会出现多个 ...

  6. 027 storm面试小题

    1.大纲 Storm工作原理是什么? 流的模式是什么?默认是什么? 对于mapreduce如何理解? Storm的特点和特性是什么? Storm组件有哪些? 2.Storm工作原理是什么? 相对于ha ...

  7. 分布式存储ceph理论

    一.ceph简介 Ceph是一种具有优秀性能,可靠性和可扩展性,统一的分布式文件系统.ceph 的统一体现在可以提供文件系统.块存储和对象存储,分布式体现在可以动态扩展.在国内一些公司的云环境中,通常 ...

  8. Android- APP 秒开

    Android- APP 秒开 1. 启动APP 时白屏或者黑屏 现象:当启动APP 时,会有一个白屏或者黑屏一闪而过,然后才会显示出主界面. 这是因为,我们新打开一个应用,系统会为这个应用创建一个进 ...

  9. react使用过程中常见问题

    目录 一.减小输入字符数 二.用props.children来引用位于前置标签和后置标签之间的内容 三.创建组件两条主要的途径 四.JSX属性采用驼峰式的大小写规则(即‘onClick’而非‘oncl ...

  10. 【C语言编程练习】新娘与新郎

    1. 题目要求 新郎A,B,C与新娘 X,Y,Z.有人不知道她们谁和谁结婚了,询问了6位新人中的三位,A说他将和X结婚,X说她的未婚夫是C,C说她会和Z结婚,一听就知道是全是假话,请编程找出谁和谁结婚 ...