香料魔法的回答

Java中的append( )方法其实是创建了一个新的数组,扩大了长度,将需要添加的字符串给复制到这个新的数组中。

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);

将指定源数组中的数组从指定位置复制到目标数组的指定位置。

参考资料:百度百科-append

啦啦啦咯哦的回答

JAVA 中 Stringbuffer 有append()方法

Stringbuffer其实是动态字符串数组

append()是往动态字符串数组添加,跟“xxxx”+“yyyy”相当那个‘+’号

跟String不同的是Stringbuffer是放一起的

String1+String2 和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样

String1+String2 存在于不同的两个地址内存

Stringbuffer1.append(Stringbuffer2)放再一起

使用方法举例:

StringBuffer s = new StringBuffer();

s.append("Testing String");

s.append(" ");

s.append("Concatenation Performance");

String s3 = s.toString();

打印结果:Testing String Concatenation Performance

扩展资料:

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

参考资料:百度百科-  网页链接

内测高手的回答

Stringbuffer 有append()方法

Stringbuffer其实是动态字符串数组

append()是往动态字符串数组添加,跟“xxxx”+“yyyy”相当那个‘+’号

跟String不同的是Stringbuffer是放一起的

String1+String2 和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样

String1+String2 存在于不同的两个地址内存

Stringbuffer1.append(Stringbuffer2)放再一起

monoxide的回答

StringBuffer里面的方法吧,字符缓冲对象追加信息

比如说:StringBuffer sb=new StringBuffer();现在sb里面什么也没有

sb.append("abc");可以将字符串abc追加进sb里面.你打印sb会打印出abc

当然你还可以拉着追加

java中加号和append,请详细说一下java中append()的方法.相关推荐

  1. java共识算法_PBFT共识算法详细分析及Java实现

    PBFT共识算法详细分析及Java实现 为什么写这个 最近研究了区块链相关的一些东西,其实就三大块: 分布式存储(去中心) 共识机制 安全加密 分布式存储,就是一个分布式数据库,每个节点都保存一份副本 ...

  2. Java项目打包成exe的详细教程

    Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步: 1. 利用Eclipse先把Java项目先打成jar包 2. 利用exe4j工具把jar包转成exe 这里以Java项目 ...

  3. c语言中 的优先级几级,C语言中的操作符优先级的详细介绍

    C语言中的操作符优先级的详细介绍 C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. ...

  4. java主要用于神摸地方,超级无敌神奇的java期末考试题库

    <超级无敌神奇的java期末考试题库>由会员分享,可在线阅读,更多相关<超级无敌神奇的java期末考试题库(20页珍藏版)>请在人人文库网上搜索. 1.一.选择题1.已知X和Y ...

  5. 基础不牢靠,何以争朝夕?Java基础面试82道详细解析(更新中)

    题目的基本顺序是: 基本语法 类相关的语法 内部类的语法 继承相关的语法 异常的语法 线程的语法 集合的语法 io 的语法 虚拟机方面的语法 因文章篇幅的问题,本文分(一)(二)两篇进行讲解,知识点很 ...

  6. java GUI开发中关于卡片式布局详细步骤讲解

    java GUI开发中关于卡片式布局详细步骤讲解 JFrame frame = new JFrame("调课");//首先要申明一个JFrame. JPanel p1 = new ...

  7. Java 中的中文编码问题(非常详细)

    只要有跨应用数据交换的地方,都可能产生编码和解码. 出现乱码问题唯一的原因都是在 char 到 byte 或 byte 到 char 转换中编码和解码的字符集不一致导致的. 几个常用的类: Strin ...

  8. python观察日志(part20)--列表中加号,extend,append之间的区别

    学习笔记,仅供参考,有错必纠 列表中"+"加号,extend,append之间的区别 extend extend函数用于在列表末尾一次性追加另一个序列中的多个值. append a ...

  9. java 常量池 和 堆 的关系_Java堆、栈和常量池以及相关String的详细讲解(经典中的经典)...

    博客分类: Java综合 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有 ...

  10. java选择语句中switch的用法(详细介绍)

    一.什么时候用switch? 在java中控制流程语句是由选择语句.循环语句.跳转语句构成.选择语句包括 if 和 switch,在过多的使用 if 语句嵌套会使程序很难阅读,这时利用 switch ...

最新文章

  1. android组件化架构 书,Android MVVM组件化架构方案
  2. java 市场_java市场前景怎样?
  3. Python中的类(2)
  4. LSMW one tip - 字段定义
  5. 前端绘制绘制图表_绘制图表(第2页):JavaScript图表库的比较
  6. c盘java文件误删_java获取C盘下的隐藏目录文件名称
  7. 如何优雅的处理Restful
  8. MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型
  9. MPI/DP转以太网通过CHNet-S7200/300连接IFIX组态TCP通信
  10. 点击reset按钮失效,不能清空输入框。
  11. Java程序员怎样考察报表工具的开发效率
  12. 由浅入深了解统计机器翻译模型
  13. 赌运挖洞之Apache目录浏览
  14. 服务器没有显示器能接笔记本吗,笔记本能连显示器吗,笔记本怎么才能接显示器(图文)...
  15. 深度学习实战(七)——目标检测API训练自己的数据集(R-FCN数据集制作+训练+测试)
  16. 【图像算法】pytesseract简单实现图片数字识别
  17. html description字数限制,description标签如何正确使用?
  18. flask项目实战记录一:搭建flask框架
  19. PAT刷题集(乙级)1003 我要通过!(20 分)
  20. DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)

热门文章

  1. Futter基础第2篇: 实现文本、容器【Text、Container】
  2. linux命令(日常更新)
  3. C#通过正则表达式判断字符是否为数字
  4. 关于BSTR数据类型
  5. PHP实现Restful风格的API(转)
  6. sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
  7. HCIE-Security Day12:补充包过滤和安全策略的概念
  8. matlab各种出错,matlab常见错误命令汇总
  9. Git工具代码版本管理以及基本使用说明
  10. MySQL使用小技巧(二)——MySQL忘记密码怎么办