首页 > 其他分享 >String,StringBuilder 与StringBuffer 区别

String,StringBuilder 与StringBuffer 区别

时间:2025-01-06 17:43:52浏览次数:1  
标签:字节 StringBuilder 数组 StringBuffer final String

三者内部都是维护一个字节数组,
String abc=new String();
String采用的16进制编码,
里面的字节数组是final 修饰的,不允许在原来的基础上修改,所以会生成一个新的字节数组
private final byte[] value;
底层调用
System.arraycopy(value, 0, dst, dstBegin << coder, value.length);
这个是浅复制,原来的的字节数组会被垃圾回收器回收



StringBuilder 与StringBuffer  在构造时会判断是不是开启了字符压缩【默认就是字符压缩】,是的话采用LATIN1进制编码,不然就16进制编码
StringBuilder 与StringBuffer默认字符容量是16,实现了AbstractStringBuilder这个类,他们的字符拼接底层会调用newCapacity
器扩容时2倍加2【  int newCapacity = (oldCapacity << 1) + 2;[容量左移一位加2]】
  byte[] value字节数组没有final限定符修饰,所以可以继续扩容量
底层用的是
str.getBytes(value, index, coder);
他会把新的字符运原来的字符拼接,长度重新计算,在原来的字节数组基础上进行扩容
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append()
StringBuffer  stringBuffer=new StringBuffer();
stringBuffer.append()

  

标签:字节,StringBuilder,数组,StringBuffer,final,String
From: https://www.cnblogs.com/wangbiaohistory/p/18655834

相关文章

  • Java String、StringBuffer、StringBuilder 详解(含 Java 7 和 Java 8 变化)
    JavaString、StringBuffer、StringBuilder详解(含Java7和Java8变化)在Java开发中,String是最常用的数据类型之一,而StringBuffer和StringBuilder也在字符串操作中扮演着重要角色。从Java7到Java8,它们的底层实现发生了一些变化,影响了性能和使用方式。本文将深入解......
  • go strings包
    字符串的遍历packagemainimport( "fmt" "unicode/utf8")funcmain(){ s:="天气好干燥啊A" fmt.Println("字节长度",len(s)) fmt.Println("================") //forrange遍历字符串 len:=0 fori,ch:=ranges{ ......
  • std::string
    std::string是C++标准库提供的一个类,用于表示字符串。它封装了对字符串的各种操作,提供了更安全和方便的接口。#include<string>#include<iostream>intmain(){std::strings1="Hello";std::strings2(s1);std::strings3=s1+",World";retu......
  • C/C++语言float转string保留两位小数
    在C/C++中,将浮点数(float或double)转换为字符串并保留两位小数,通常需要使用格式化函数。在C语言中,通常可以使用标准库中的sprintf或snprintf函数;在C++中,可以使用std::ostringstream或者C++11引入的std::to_string配合自定义格式。不过,std::to_string本身并不直接支持指定小数......
  • 【题解】AT agc057A Antichain of Integer Strings
    记\(f(x)\)为最小的大于\(x\)的\(y\),使得\(x\)是\(y\)的子串。易得:\[f(x)=\min(10x,x+10^{|x|})\]其中\(|x|\)表示\(x\)的位数。可以发现,\(f(x)\)为一个严格单调递增的函数。考虑贪心策略,显然选小的数不如选大的数优,因为小的数更有可能成为别的数的子串。于是,我......
  • C++中的字符( char )、字符数组( char[] )、字符串( std::string )
    字符(char)定义:char是C++中的基本数据类型,用于表示单个字符。char在内存中通常占用一个字节(8位)。在ASCII编码系统中,每个字符都对应一个唯一的整数值,char类型可以存储这些值来表示相应的字符。charch='A';//存储字符'A'与其他类型的联系:字符本质上是一个小整数类......
  • 602 [CF 1385D] a-Good String
    //602[CF1385D]a-GoodString.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/22/problem/978给你一个长度为n的由小写字母组成的字符串s,保证n=2k,其中k为大于等于零的整数。一个非空字符串s被称为c-good(c为a.........
  • 使用JSONObject.getString()时报错:Cannot resolve method ‘getString‘ in ‘JSONObjec
    目录使用JSONObject.getString()时报错:Cannotresolvemethod'getString'in'JSONObject',JSONObject三种库的用法一、背景描述二、问题解决1、使用org.json.JSONObject读取属性2、使用org.json.simple.JSONObject读取属性3、使用cn.hutool.json.JSONObject读取属性三、......
  • LeetCode 1422. Maximum Score After Splitting a String
    ......
  • 在js中,请说说你对10.toString(16)的理解
    在JavaScript中,尝试直接使用10.toString(16)这样的语法会导致一个错误。这是因为JavaScript解释器会将10.toString解析为一个尝试访问数字字面量10上的toString属性的表达式,而数字字面量并不直接拥有方法。因此,当你尝试调用toString并传递参数16时,JavaScript会抛......