java中加号和append,请详细说一下java中append()的方法.
香料魔法的回答
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()的方法.相关推荐
- java共识算法_PBFT共识算法详细分析及Java实现
PBFT共识算法详细分析及Java实现 为什么写这个 最近研究了区块链相关的一些东西,其实就三大块: 分布式存储(去中心) 共识机制 安全加密 分布式存储,就是一个分布式数据库,每个节点都保存一份副本 ...
- Java项目打包成exe的详细教程
Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步: 1. 利用Eclipse先把Java项目先打成jar包 2. 利用exe4j工具把jar包转成exe 这里以Java项目 ...
- c语言中 的优先级几级,C语言中的操作符优先级的详细介绍
C语言中的操作符优先级的详细介绍 C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. ...
- java主要用于神摸地方,超级无敌神奇的java期末考试题库
<超级无敌神奇的java期末考试题库>由会员分享,可在线阅读,更多相关<超级无敌神奇的java期末考试题库(20页珍藏版)>请在人人文库网上搜索. 1.一.选择题1.已知X和Y ...
- 基础不牢靠,何以争朝夕?Java基础面试82道详细解析(更新中)
题目的基本顺序是: 基本语法 类相关的语法 内部类的语法 继承相关的语法 异常的语法 线程的语法 集合的语法 io 的语法 虚拟机方面的语法 因文章篇幅的问题,本文分(一)(二)两篇进行讲解,知识点很 ...
- java GUI开发中关于卡片式布局详细步骤讲解
java GUI开发中关于卡片式布局详细步骤讲解 JFrame frame = new JFrame("调课");//首先要申明一个JFrame. JPanel p1 = new ...
- Java 中的中文编码问题(非常详细)
只要有跨应用数据交换的地方,都可能产生编码和解码. 出现乱码问题唯一的原因都是在 char 到 byte 或 byte 到 char 转换中编码和解码的字符集不一致导致的. 几个常用的类: Strin ...
- python观察日志(part20)--列表中加号,extend,append之间的区别
学习笔记,仅供参考,有错必纠 列表中"+"加号,extend,append之间的区别 extend extend函数用于在列表末尾一次性追加另一个序列中的多个值. append a ...
- java 常量池 和 堆 的关系_Java堆、栈和常量池以及相关String的详细讲解(经典中的经典)...
博客分类: Java综合 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有 ...
- java选择语句中switch的用法(详细介绍)
一.什么时候用switch? 在java中控制流程语句是由选择语句.循环语句.跳转语句构成.选择语句包括 if 和 switch,在过多的使用 if 语句嵌套会使程序很难阅读,这时利用 switch ...
最新文章
- android组件化架构 书,Android MVVM组件化架构方案
- java 市场_java市场前景怎样?
- Python中的类(2)
- LSMW one tip - 字段定义
- 前端绘制绘制图表_绘制图表(第2页):JavaScript图表库的比较
- c盘java文件误删_java获取C盘下的隐藏目录文件名称
- 如何优雅的处理Restful
- MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型
- MPI/DP转以太网通过CHNet-S7200/300连接IFIX组态TCP通信
- 点击reset按钮失效,不能清空输入框。
- Java程序员怎样考察报表工具的开发效率
- 由浅入深了解统计机器翻译模型
- 赌运挖洞之Apache目录浏览
- 服务器没有显示器能接笔记本吗,笔记本能连显示器吗,笔记本怎么才能接显示器(图文)...
- 深度学习实战(七)——目标检测API训练自己的数据集(R-FCN数据集制作+训练+测试)
- 【图像算法】pytesseract简单实现图片数字识别
- html description字数限制,description标签如何正确使用?
- flask项目实战记录一:搭建flask框架
- PAT刷题集(乙级)1003 我要通过!(20 分)
- DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)