`
Edward_Lee
  • 浏览: 46317 次
社区版块
存档分类
最新评论

Java中StringBuilder和StringBuffer的append(Object obj)方法使用

    博客分类:
  • Java
 
阅读更多

使用字符串String连接,方式有以下几种方式

1、用 “+” 加号连接字符串,如

String s = String0 + String1 + String2 + String3 + String4;

 这里使用反编译工具,最终发现代码也是通过StringBuilder.append(连接)

 

 

2、使用 “+=”

String s = new String();
s += String0;
s += String1;
s += String2;
s += String3;
s += String4;

 

 

3、使用StringBuffer的append(Object) 

 

StringBuffer stringBuffer = new StringBuffer();
String s = stringBuffer.append(String0).append(String1).append(String2)
        .append(String3).append(String4).toString();

 

 

4、使用StringBuilder的append(Object) 

 

StringBuilder stringBuilder = new StringBuilder();
String s = stringBuilder.append(String0).append(String1).append(String2)
        .append(String3).append(String4).toString();

 

一般说来,

StringBuffer是线程安全的

StringBuilder是线程不安全的

 

 

JavaAPI中提到

 

 

StringBuffer
线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。
虽然在任意时间点上它都包含某种特定的字符序列,
但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。
可以在必要时对这些方法进行同步,
因此任意特定实例上的所有操作就好像是以串行顺序发生的,
该顺序与所涉及的每个线程进行的方法调用顺序一致。

 

 

 

StringBuilder
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,
但不保证同步。
该类被设计用作 StringBuffer 的一个简易替换,
用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

 

 

 

StringBuffer与StringBuilder的append(Object) 的方法

 

1、StringBuffer的append(Object Obj)源码

public synchronized StringBuffer append(Object obj) {
    super.append(String.valueOf(obj));
    return this;
}

 API中的方法说明

追加 Object 参数的字符串表示形式。
参数将被转换成字符串,就好象使用了 String.valueOf 方法一样。
然后,将所得字符串中的字符追加到此序列。

 

2、StringBuilder的append(Object Obj)源码

public StringBuilder append(Object obj) {
    return append(String.valueOf(obj));
}

  API中的方法说明

追加 Object 参数的字符串表示形式。
参数将被转换成字符串,就好象使用了 String.valueOf 方法一样。
然后,将所得字符串中的字符追加到此序列。

 

无论使用StringBuffer还是StringBuilder的append(Object obj)方法,

最终调用的都是String的valueOf(Object Obj)方法

 

而当对象为null时,调用String.valueOf(Object obj)返回的是"null" 字符串

 

所以在使用 StringBuffer或者StringBuilder做Object对象连接时,要注意Object是否为null

 

分享到:
评论

相关推荐

    java对象转换String类型的三种方法共1页.pdf

    Java中的每个对象都继承自`Object`类,因此所有对象都默认拥有`toString()`方法。这个方法返回一个表示该对象的字符串,通常包括类名、哈希码等信息。如果你需要自定义对象的字符串表示,你应该重写`toString()`...

    api_StringBuffer.zip_fullvgv_java_tasteazi

    在多线程环境中,`StringBuffer`比直接使用`+`操作符或`StringBuilder`更推荐,因为它的所有方法都是同步的,避免了线程竞争条件导致的性能问题。 `StringBuffer`类包含了许多实用的方法,这些方法在处理字符串时...

    JAVA中常用类的常用方法.docx

    JAVA 中有许多常用的类,每个类都有其特定的方法,本文将对 java.lang.Object 类、String 类和 StringBuffer 类的常用方法进行讲解。 一、java.lang.Object类 java.lang.Object 类是 JAVA 中所有类的父类,它提供...

    Java 编程 :常见问题汇总

    对于循环中的字符串拼接,使用`StringBuilder`或`StringBuffer`比简单地使用`+`操作符更高效。这是因为每次使用`+`操作符时都会创建一个新的字符串对象,而在大量迭代的情况下,这种做法会显著降低程序的性能。 **...

    java - 实用技巧

    需要注意的是,在 Java 5 之后引入了 `StringBuilder` 类,它与 `StringBuffer` 相似,但在非线程安全的环境下使用时性能更好,因为它不支持同步操作。因此,在大多数情况下,推荐使用 `StringBuilder`。 **1.3 ...

    基于StringBuilder类中的重要方法(介绍)

    * `append(Object obj)`:将Object参数的字符串表示形式追加到StringBuilder对象中。 * `append(String str)`:将String参数的字符串表示形式追加到StringBuilder对象中。 * `append(StringBuffer sb)`:将...

    【Java基础笔记】String类以及StringBuffer Builder.docx

    理解`String`、`StringBuilder`和`StringBuffer`的特性及其方法,可以帮助开发者在Java编程中更有效地处理字符串,从而优化代码性能和内存管理。在单线程环境中,`StringBuilder`通常更高效;而在多线程环境下,为了...

    JAVA 字符串应用笔记

    在Java 5及以上版本,可以使用`+`操作符连接字符串,但在大量连接操作时,使用`StringBuilder`或`StringBuffer`更高效。 6. **常量池**: 字符串字面量会被放入常量池,如果两个字符串字面量相同,它们会指向同一...

    Java 代码优化常见注意点

    - 使用`StringBuilder`(非线程安全)代替`StringBuffer`在非多线程环境中,以减少同步开销。 - 使用`Integer.valueOf()`缓存小整数值,避免重复创建`Integer`对象,如`Integer i = Integer.valueOf(10);` - 对于...

    JAVA代码优化.pdf

    - 利用`StringBuilder`或`StringBuffer`的`append`方法进行字符串操作,而不是使用`+`运算符。这能避免每次拼接时创建新的`String`对象。 2. **使用final关键字**: - 使用`final`关键字声明局部变量,可以使得...

    2018java面试宝典

    - **finalize**: Object 类中的方法,用于垃圾回收前的资源清理操作,但不保证总会被调用。 - **示例代码**: ```java final class MyClass { public final void myMethod() { System.out.println("Final method...

    浅析JAVA中toString方法的作用

    在Java编程语言中,`toString()`方法是一个非常重要的功能,尤其对于对象的表示和输出。该方法源自`Object`类,由于所有的Java类都隐式或显式地继承自`Object`,因此所有类的对象都可以调用`toString()`方法。这个...

    rar文件java post获取网页数据以及get方式获取数据.zip

    在Java中,我们可以使用`java.net.URL`和`java.net.HttpURLConnection`类来发送GET请求: ```java URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con....

    StringHandeling:String,StringBuffer和StrignBuilder的所有方法及其实现,以及一些重要的测试用例

    在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`是处理字符串的三个核心类。它们各自有其特点和应用场景,尤其在多线程环境和性能方面存在显著差异。下面将详细介绍这三个类的方法及其实现,并提供...

    JAVA string函数总结.docx

    以上就是对 Java 中 `String` 类的主要函数的总结,包括了字符串的创建、连接、获取信息、各种操作方法以及格式化和正则表达式的使用等内容。这些知识点对于日常开发非常重要,希望对你有所帮助。

    java六大必须理解的问题-(程序员必读)

    - **`.equals()`**:用于比较对象的内容是否相同,通常由类自己实现,如果没有重写,则默认调用 `Object` 类中的 `equals` 方法,该方法也使用 `==` 进行比较。 - 示例:`String a = new String("foo"); String b =...

    实验一 Java常用工具类编程.doc

    在Java编程中,字符串处理是日常工作中不可或缺的部分。...而对于日期操作,Java 8引入的`java.time`包提供了更为友好和强大的API,如`LocalDate`、`LocalTime`和`LocalDateTime`等,值得学习和使用。

Global site tag (gtag.js) - Google Analytics