1 package com.bytezero.stringclass;
2
3 import org.junit.Test;
4
5 /**
6 * 关于 StringBuffer 和 StringBuilder的使用
7 *
8 *
9 *
10 *
11 * @author Bytezero1·zhenglei! Email:420498246@qq.com
12 * create 2021-10-22 17:57
13 */
14 public class StringBufferBuildeTest {
15 /*
16
17 对比String,StringBuffer,StringBuilder三者的效率:
18 从高到底排列:StringBuilder > StringBuffer > String
19 */
20
21
22
23 /*
24
25 StringBuffer的常用方法
26 StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
27 StringBuffer delete(int start,int end):删除指定位置的内容
28 StringBuffer replace(int start,int end,String str): 把[start,end]位置替换为str
29 StringBuffer insert(int offset,xxx):在指定位置插入xxx
30 StringBuffer reverse(): 把当前字符序列逆转
31
32 public int indexOf(String str)
33 public String subString(int start,int end)
34 public int Length()
35 public char charAt(int n)
36 public void setCharAt(int n,char ch)
37
38 总结:
39 增 : append(xxx)
40 删 delete(int start,int end)
41 改 setCharAt(int n,char ch)
42 查 charAt(int n)
43 插 insert(int offset,xxx)
44 长度 Length()
45 遍历 for + charAt(); / toString
46
47
48 */
49 @Test
50 public void test2(){
51
52 StringBuffer s1 = new StringBuffer("abc");
53 s1.append(1);
54 s1.append('1');
55 System.out.println(s1); //abc11
56
57 // s1.delete(2,4); //ab1
58 // s1.replace(2,4,"zhenglei"); //abzhenglei1
59 // s1.insert(2,false);
60
61 // s1.reverse(); //11cba
62 String s2 = s1.substring(1, 3);
63 System.out.println(s2); //bc
64
65 System.out.println(s1); //abfalsec11
66 System.out.println(s1.length());
67
68
69 }
70
71
72
73
74 /*
75 String,StringBuffer,StringBuilder三者的异同?
76
77 String: 不可变的字符序列 底层使用char[]存储
78 StringBuffer:可变的字符序列; 线程安全,效率低 底层使用char[]存储
79 StringBuilder:可变的字符序列 jdk 5.0 效率高 线程不安全 底层使用char[]存储
80
81 源码分析:
82 String str = new String(); //char[] value = new char[0];
83 String str1 = new String("abc"); //char[] value = new char[]{'a','b','c'};
84
85 StringBuffer sb1 = new StringBuffer(); //char[] value = new char[16];底层创建了一个长度是16的数组
86 System.out.println(sb2.length()); //0
87 sb1.append('a'); //value[0] = 'a'
88 sb1.append('b'); //value[1] = 'b'
89
90 StringBuffer sb2 = new StringBuffer("abc"); //char[] value = new char["abc".length()+16];
91
92 //问题一 System.out.println(sb2.length()); //3
93 //问题二 扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组
94 默认情况下,扩容为原来容量的 2 倍 + 2,同时将原有的数组中的元素复制到新的数组中
95
96 开发中 建议大家使用:StringBuffer(int capacity) 或StringBuid(int capacity)
97
98
99
100
101 注意:作为参数传递的话,方法内部String不会改变其值,StringBuffer和StringBuilder
102 会改变其值
103
104
105 */
106
107 @Test
108 public void test1(){
109
110 StringBuffer sb1 = new StringBuffer("abc");
111 sb1.setCharAt(0,'m');
112 System.out.println(sb1); //mbc
113
114 StringBuffer sb2 = new StringBuffer();
115 System.out.println(sb2.length()); //0
116
117 StringBuffer sb3 = new StringBuffer("abc");
118 System.out.println(sb3.length()); //3
119
120 StringBuffer s3 = new StringBuffer(20);
121
122
123
124 }
125 }

Java 常用类 于 StringBuffer 和 StringBuilder的使用 + String三者的异同的更多相关文章

  1. java 数据结构(二):java常用类 二 StringBuffer、StringBuilder

    1.String.StringBuffer.StringBuilder三者的对比String:不可变的字符序列:底层使用char[]存储StringBuffer:可变的字符序列:线程安全的,效率低:底 ...

  2. 【Java常用类】StringBuffer、StringBuilder

    Stringbuffer.StringBuilder String.StringBuffer.StringBuilder三者的异同? String:不可变的字符序列:底层使用char[]存储 Stri ...

  3. JDK常用类解读--StringBuffer、StringBuilder

    上一篇博客讲到String对象一旦被创建该内容就不能被修改了如: String s = "hello world"; s.substring(6); s.replace(" ...

  4. Java常用类之StringBuffer

    StringBuffer 类: 1. java.lang.StringBuffer 代表可变的字符序列: 2. StringBuffer 和 String 类似,但是 StringBuffer 可以对 ...

  5. Java——常用类(StringBuffer)

    [StringBuffer]   <1>java.lang.StringBuffer代表可变的字符序列. <2>StringBuffer和String类似,但是StringBu ...

  6. JAVASE(十二) Java常用类: 包装类、String类、StringBuffer类、时间日期API、其他类

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.包装类 1 .1 八个包装类 ​ 1. 2 基本数据类型,包装类,String者之间的转换 ​ 2. ...

  7. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  8. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

  9. Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...

  10. Java常用类,这一次帮你总结好!

    常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...

随机推荐

  1. Go 复合数据类型之结构体与自定义类型

    Go 复合数据类型之结构体与自定义类型 目录 Go 复合数据类型之结构体与自定义类型 一.类型别名和自定义类型 1.1 类型定义(Type Definition) 简单示例 1.2 类型别名 简单示例 ...

  2. 在K8S中,静态、动态、自主式Pod有何区别?

    在Kubernetes(简称K8s)中,静态Pod.自主式Pod和动态Pod是不同管理方式下的Pod类型,它们的区别主要体现在创建和管理方式上: 静态Pod: 静态Pod是由kubelet直接管理的, ...

  3. vim 从嫌弃到依赖(15)——寄存器

    在计算机里面也有寄存器,计算机中的寄存器是看得见,摸得着的实体,寄存器中存储需要经常访问的一些数据.而vim中也有寄存器的概念,vim中的寄存器是一个虚拟的概念,更像是一块专门用来存储数据的内存缓冲区 ...

  4. 【一】飞桨paddle【GPU、CPU】安装以及环境配置+python入门教学

    相关文章: [一]飞桨paddle[GPU.CPU]安装以及环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简 ...

  5. 【五】gym搭建自己的环境之寻宝游戏,详细定义自己myenv.py文件以及算法实现

    相关文章: 相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五] ...

  6. 在IntelliJ IDEA中,开发一个摸鱼看书插件

    作者:小傅哥 博客:https://bugstack.cn 原文:https://mp.weixin.qq.com/s/R8qvoSNyedVM95Ty8sbhgg 沉淀.分享.成长,让自己和他人都能 ...

  7. 【算法】C程序超详细的qsort排序函数解释和模拟

    C程序利用冒泡排序的思想模拟实现qsort排序函数 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之 ...

  8. P9549 「PHOI-1」路虽远 题解

    题目链接:路虽远 带限制的 dijkstra,优先考虑有哪些限制条件,当做类似 dp 去写.闯黄灯次数有要求,限制速度的边数量有要求. 我们注意到,如果选择哪些边限速不易于基于贪心选择,可以考虑转换下 ...

  9. Kakfa系列丛书推荐之《深入理解Kafka:核心设计与实践原理》

    pdf格式文档下载见下文 编者推荐 本书从Kafka的基本概念入手,主要从生产端.消费端.服务端等3个方面进行全面的陈述,主要内容包括Kafka的基本使用方式.生产者客户端的使用.消费者客户端的使用. ...

  10. NC22604 小A与任务

    题目链接 题目 题目描述 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 \(x_i\) 的时间,同时完成第 i 个任务的时间不 ...