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 一.内部类 概念:在一个类内部再定义一 ...
随机推荐
- 【K哥爬虫普法】百度、360八年恩怨情仇,robots 协议之战终落幕
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知 ...
- C# 输入指定日期获取当前年的第一天 、当前年的最后天、某月的第一天 、某月的最后一天
方法 /// <summary> /// 取得当前年的第一天 /// </summary> /// <param name="datetime"> ...
- win11和win10的快捷键列表
win11特有的快捷键 win键就是图案是windows图标的那个按键 作用 快捷键 打开快速设置,win11是展开音量,wifi,蓝牙的设置项,win10也可以用 win + a 打开通知中心和日历 ...
- 从零开始配置vim(31)——git 配置
很抱歉又拖更了这么久了,在这个新公司我想快速度过试用期,所以大部分的精力主要花在日常工作上面.但是这个系列还是得更新下去,平时只能抽有限的业余时间来准备.这就导致我写这些文章就慢了一些. 废话不多说, ...
- TienChin 渠道管理-工程创建
因为本文章主要围绕着项目开发进行,所以前言不做开头,直接上内容. 添加字段 我们的渠道表,我看到若依脚手架当中有一个是否删除的标志字段,所以我这里也添加一下: ALTER TABLE `tienchi ...
- socket编程 [补档-2023-07-10]
Linux网络编程 1.socket编程 socket是一种通信机制,用于在网络中不同计算机之间进行数据传输,当然也可用用于进程间通信.在linux中,有文件描述符这么个东西,我们可以通过socket ...
- korean doll likeness模型|Japanese-doll-likeness模型获取及使用
1.模型 之前给大家写了Mac安装stable-diffusion-webui绘制AI妹子保姆级教程,教程在下面 [奶奶看了也不会]AI绘画 Mac安装stable-diffusion-webui绘制 ...
- 4.if语句--《Python编程:从入门到实践》
4.1 检查多个条件 1.使用 and 检查多个条件 2.使用 or 检查多个条件 4.2 检查特定值是否包含在列表中 使用 in 检查特定值是否在列表中 >>> req ...
- Spring boot 的定时任务。
@Scheduled(fixedRate=2000):上一次开始执行时间点后2秒再次执行: @Scheduled(fixedDelay=2000):上一次执行完毕时间点后2秒再次执行: @Schedu ...
- 《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(中)
第 3 章 ASP.NET Core 核心特性 3.3 依赖注入 通常情况下,应用程序由多个组件构成,而组件与组件之间往往存在依赖关系 当我们需要获取数据时,通常的做法是实例化依赖的类,然后调用类里面 ...