Java 常用类 于 StringBuffer 和 StringBuilder的使用 + String三者的异同
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三者的异同的更多相关文章
- java 数据结构(二):java常用类 二 StringBuffer、StringBuilder
1.String.StringBuffer.StringBuilder三者的对比String:不可变的字符序列:底层使用char[]存储StringBuffer:可变的字符序列:线程安全的,效率低:底 ...
- 【Java常用类】StringBuffer、StringBuilder
Stringbuffer.StringBuilder String.StringBuffer.StringBuilder三者的异同? String:不可变的字符序列:底层使用char[]存储 Stri ...
- JDK常用类解读--StringBuffer、StringBuilder
上一篇博客讲到String对象一旦被创建该内容就不能被修改了如: String s = "hello world"; s.substring(6); s.replace(" ...
- Java常用类之StringBuffer
StringBuffer 类: 1. java.lang.StringBuffer 代表可变的字符序列: 2. StringBuffer 和 String 类似,但是 StringBuffer 可以对 ...
- Java——常用类(StringBuffer)
[StringBuffer] <1>java.lang.StringBuffer代表可变的字符序列. <2>StringBuffer和String类似,但是StringBu ...
- JAVASE(十二) Java常用类: 包装类、String类、StringBuffer类、时间日期API、其他类
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.包装类 1 .1 八个包装类 1. 2 基本数据类型,包装类,String者之间的转换 2. ...
- Java基础 —— Java常用类
Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...
- Java常用类学习笔记总结
Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...
- Java 常用类总结(SE基础)
本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...
- Java常用类,这一次帮你总结好!
常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...
随机推荐
- Vue3类型判断和ref的两个作用
1.类型判断的四种方法 isRef: 检查一个值是否为一个ref对象 isReactive:检查一个对象是否是由 reactive 创建的响应式代理 isReadonly: 检查一个对象是否是由 re ...
- 从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建、医药知识图谱的自动问答等
从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建.医药知识图谱的自动问答等 项目介绍 关于知识图谱概念性的介绍就不在此赘述.目前知识图谱在各 ...
- P9816 少项式复合幂 题解
题目链接:少项式复合幂 注意到题目的模并不是很大,我们考虑两个核心的性质. \(f(f(x)) \bmod p=f(f(x) \bmod p) \bmod p\),证明直接代入 \(f(x)\) 进去 ...
- Java-将Oracle中某个表的数据导出成数据文件
在做数据开发或者ETL工作中,经常会遇到需要在客户端将Oracle数据库中的某些表的数据导出,提供给其他人员使用的情况. 下面介绍我之前实施的一种方法:(该方法不是最好的办法,但是可以勉强使 ...
- Sliver C2 实战 vulntarget-f
网络拓扑 host ip1 ip2 ubuntu(自用) 192.168.130.14 / centos 192.168.130.3 10.0.10.2 ubuntu1 10.0.10.3 10. ...
- 长沙IT技术圈百万年薪大佬?是否存在?
引子 不知不觉,IT技术圈开始流传起"百万年薪"的故事,有人问我,长沙有百万大佬么?其实我也不知道. 一 背景 长沙自古以来就是文风鼎盛之地,在今天也同样如此. 目前长沙有211. ...
- Python树与树算法
Python树与树算法 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>=1)个有限节点组成一个具 ...
- react 新旧生命周期有什么区别?新增了哪些钩子?废弃了哪些钩子?为什么废弃?
壹 ❀ 引 在日常面试中,若对于了解react的同学而言,多多少少会被问到生命周期相关的问题,比如大致阐述生命周期的运作流程,以及每个钩子函数大致的作用,而我在两位出去面试的同事那里了解到,他们都遇到 ...
- 从零开始的react入门教程(七),react中的状态提升,我们为什么需要使用redux
壹 ❀ 引 在前面的文章中,我们了解到react中的数据由props与State构成,数据就像瀑布中的水自上而下流动,属于单向数据流.而这两者的区别也很简单,对于一个组件而言,如果说props是外部传 ...
- JS leetcode 搜索插入位置 题解分析
壹 ❀ 引 今天来做一道特别特别简单的题,来自leetcode35. 搜索插入位置,题目描述如下: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会 ...