java append函数_请详细说一下java中append()的方法.
展开全部
Java中的append( )方法其实是创建了62616964757a686964616fe58685e5aeb931333366306462一个新的数组,扩大了长度,将需要添加的字符串给复制到这个新的数组中。
JAVA中Stringbuffer有append( )方法:
而Stringbuffer是动态字符串数组,append( )是往动态字符串数组添加,跟“xxxx”+“yyyy”相当‘+’号。
跟String不同的是Stringbuffer是放一起的,String1+String2和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样、
String1+String2 存在于不同的两个地址内存,Stringbuffer1.append(Stringbuffer2)放再一起。
StringBuffer是线程安全的,多用于多线程。
扩展资料
查看StringBuffer的append()方法
如图所示代码:
1、进入append方法
@Override
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
其中toStringCache是Cleared whenever the StringBuffer is modified.
2、进入AbstractStringBuilder的append()方法
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}
如果参数str为空返回appendNull(); 该方法最终返回return this.
3、进入ensureCapacityInternal()方法
private void ensureCapacityInternal(int minimumCapacity) {
// overflow-conscious code
if (minimumCapacity - value.length > 0) {
value = Arrays.copyOf(value,
newCapacity(minimumCapacity));
}
}
copyOf(char[] original, int newLength)的方法查JDK帮助文档可知:复制指定的数组,复制具有指定的长度。
4、进入String的getChars()方法
public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {//0,len=5,value=[hello],count=5
if (srcBegin < 0) {
throw new StringIndexOutOfBoundsException(srcBegin);
}
if (srcEnd > value.length) {
throw new StringIndexOutOfBoundsException(srcEnd);
}
if (srcBegin > srcEnd) {
throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
}
System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
}
5、最终调用的是System.arraycopy的方法:
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
/*src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目的地数据中的起始位置。
length - 要复制的数组元素的数量。
*/
System.arraycopy([world], 0, [hello], 5, 5);
将指定源数组中的数组从指定位置复制到目标数组的指定位置。
java append函数_请详细说一下java中append()的方法.相关推荐
- java length()函数_小猿圈介绍java函数式编码结构及优势
对于java大家都已经不陌生了吧,今天小猿圈Java讲师就分享一篇关于java函数式编码结构及优势的知识点,希望对于学习java的你有一定的帮助,想学习就需要积累. 探讨三种下一代JVM语言:Groo ...
- python中timeit函数_一日一技:Python中的timeit方法
timeit()方法 python中的timeit()方法, 它用于获取代码的执行时间.该库将代码语句运行一百万次,并提供从集合中花费的最短时间.这是一种有用的方法,有助于检查代码的性能. 语法如下: ...
- java 累加函数_请你编写一个方法(函数),功能要求从参数x累加到y,并返回累加后的整数结果。...
public class TestFor { public static void main(String[] args) { Scanner scanner = new Scanner(System ...
- java replaceall函数_你真的会用java replaceAll函数吗?
replace.replaceAll.replaceFirst这三个函数会java的同学估计都用过,笔者已经用了2年多,可是,我们真的懂他们吗? 概述一下他们三个的用法: · replace(Char ...
- java 内存测试_请你说一下java jvm的内存机制
Java虚拟机栈是线程私有的,它的生命周期与线程相同. 局部变量表存放了编译时期可知的各种基本数据类型和对象引用.局部变量表所需的内存空间在编译时期完成分配,当进入一个方法时,这个方法需要在栈帧中分配 ...
- 请尽可能说出js中数组的方法,最少3个,越多越好
我接下来要把数组方法全都过一遍,顺手做个整理. 至于为什么整理这个,最近总听说面试经常会问到这个问题, 面试官灵魂发问:请尽可能说出js中数组的方法,最少3个,越多越好 据可靠消息了解到,如果你回答的 ...
- java main函数_一行JAVA代码如何运行起来?
在程序员的世界中,你总会听到一句"PHP是世界上最好的语言"的调侃.然而在你进入软件程序开发之后,你会发现即使开发语言千千万,最盛行的还是JAVA.从淘宝的技术变迁中我们可以见一些 ...
- append()方法_超详细教程 | pandas合并之append和concat
本篇文章主要介绍了pandas中对series和dataframe对象进行连接的方法:pd.append()和pd.concat(),文中通过示例代码对这两种方法进行了详细的介绍,希望能对各位py ...
- python中的pop函数和append函数_对python中的pop函数和append函数详解
pop()函数 1.描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法 pop()方法语法: list.pop(obj=list[-1]) 2.参数 obj ...
- java同名函数_浅谈Java 继承接口同名函数问题
在Java中如果一个类同时继承接口A与B,并且这两个接口中具有同名方法,会怎么样? 动手做实验: interface A{ void fun(); } interface B{ void fun(); ...
最新文章
- jQuery插件开发全解析
- window下部署ELK(6.2.2系列)
- Java基础篇(01):基本数据类型,核心点整理
- React Native图片缓存解决方案
- 三菱PLC编程语言的特点
- 利用winrar安全加密
- win10安装杜比驱动
- 51定时器PWM调节
- air202-DTU接入ONENET平台简单教程
- 笔记本不用fn也能用功能键
- 如何设置电脑桌面动态壁纸
- pytorch GradScale 梯度缩放算子
- html table 固定表头和列
- Wannafly挑战赛14 A 直角三棱锥
- 牛客小白月赛8 F-数列操作 (有序表)
- ESP32 单片机学习笔记 - 08 - WebSocket客户端
- 用什么方式推广莆田鞋最好?C原版本真的能买吗
- 解释为何 remote()-transact可以直接调用-transact?
- 产品经理的对于产品岗位杂谈(一)
- 区块链中公有链、联盟链和私链的区别