2.1 String的特性

1. String 

  String 字符串是不可变的,体现在于String str = "123" + "asd";

  在java底层,有字符串"asd","123", "123asd"三个字符串,

  str是引用类型,str  = "123" +"asd",只是将 "123asd"的地址给str,让str指向"123asd"字符串。

  总结,对于String的不可变性,体现在于字符串的拼接, 

为什么String字符串要设计成不可变性?

  原型是String字符串在内存设计为线程成共享的,  java的设计者觉得String的共享的效率要高于字符串的拼接的效率。

在java.lang.String类中使用private final char[] value;来存储字符串的字符。

====================================

1.String  不可变字符串,是 final对象,不会被修改,每次使用 + 进行拼接都会创建新的对象,而不是改变原来的对象;

2.StringBuffer 可变字符串,主要用于字符串的拼接,属于线程安全的;

3.StringBuilder 可变字符串,主要用于字符串的拼接,属于线程不安全的;

StringBuffer的线程安全体现在哪里? 效率低又体现在哪里?

Stringbuilder的线程不安全体现在哪里?效率高又体现在哪里?

原文地址:https://www.cnblogs.com/alisonGavin/p/6923667.html