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

一:案例设计介绍

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

二:案例设计

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

三:方案实施

  1. class MyStringBuilder{
  2. 构造方法{
  3. //做初始化
  4. }
  5. //常用的方法
  6. public int append();
  7. public int length();
  8. public capacity();
  9. public toString();
  10. }

四:具体实施步骤

  1. public class StringBuilder{
  2. public static void main(String []args){
  3. MyStringBuilder msb=new MyStringBuilder();
  4. msb.append("abc").append("world").append("hello");
  5. //msb.append("world");
  6. System.out.println("字符个数:"+msb.length());
  7. System.out.println("容量大小:"+msb.capacity());
  8. System.out.println("输出字符串:"+msb.toString());
  9. }
  10. }
  11. class MyStringBuilder{
  12. private char [] value; //字符数组
  13. private int count=0; //字符数组中存放字符的个数
  14. public MyStringBuilder(){
  15. value=new char[16];
  16. }
  17. public MyStringBuilder(int capacity){
  18. value=new char[capacity];
  19. }
  20. public MyStringBuilder(String str){
  21. value=new char[str.length()+16];
  22. }
  23. //得到字符数组中的字符个数
  24. public int length(){
  25. return count;
  26. }
  27. //返回容器容量大小
  28. public int capacity(){
  29. return value.length;
  30. }
  31. //实现字符串的追加(添加)
  32. public MyStringBuilder append(String str){
  33. int len=str.length; //获取要添加字符串的长度
  34. //确保所添加的字符串能放到字符数组中
  35. ensureCapacity(count+len);
  36. //把要添加的字符串追加到新的指定数组的指定位置后面
  37. str.getChars(0,len,value,count);
  38. count+=len; //元素的个数增加了
  39. return this;
  40. }
  41. public void ensureCapacity(int capacity){
  42. //数组超出容量的大小
  43. if(capacity-value.length>0){
  44. int newCapacity=value.length*2+2; //扩容后新字符数组的大小
  45. value=Arrays.copyOf(value,newCapacity);
  46. }
  47. }
  48. //把字符串数组的字符转换为字符串显示
  49. public String toString(){
  50. return new String(value,0,count);
  51. }
  52. }

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. MyCat全局表和ER--笔记(三)

    全局表 全局表的作用 在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性: 变动不频繁 数据量总体变化不大 数据规模 ...

  2. [转] 如何设置双网卡同时连接内网外网_bpao_新浪博客

    已剪辑自: http://blog.sina.com.cn/s/blog_5d3e229c0100skwe.html 如何设置双网卡同时连接内网外网 . 通过无线网络连接外网,确保连接成功后开始第二步 ...

  3. gethostbyname

    SYNOPSIS #include <netdb.h> struct hostent *gethostbyname(const char *name); Data Structure ht ...

  4. Jmeter3.2默认自带的HTML报告

    jmeter -JthreadNum=50 -JinSec=1 -Jduration=300 -n -t $JMETER_HOME/XNZX/scripts/XNZX_APP.jmx -l $JMET ...

  5. LCT入门总结

    原文链接https://www.cnblogs.com/zhouzhendong/p/LCT.html 为什么要写这个总结? 因为之前的总结出问题了…… 下载链接: LCT 入门总结 UPD(2019 ...

  6. python copy模块

    python copy模块 copy模块用于对象的拷贝操作 该模块只提供了两个主要的方法: copy.copy:浅复制 copy.deepcopy:深复制 直接赋值,深拷贝和浅拷贝的区别 直接赋值:简 ...

  7. Little Sub and Isomorphism Sequences ZOJ - 4089

    ZOJ - 4089 思路:可以反正 最长重构序列必然符合  此模式 x  +  {   }  与  {   }  +  x 那么 题意转化为了  找两个距离最长的相同的数.eeee 先离散化 然后 ...

  8. SQL 收缩日志

    USE [master]ALTER DATABASE RcBalance SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE RcBalance SET RE ...

  9. 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT&多项式】permutation

    目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...

  10. python多进程学习笔记

    # coding=utf-8 from multiprocessing import Process,Pool import os import time def printf(args): # ti ...