首先 string即使对象 又是基本类型,
string是用char 的数组存它的值,而且char的前面用了final ,因此string生成后它的值是不能改变的
( public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
{
/** The value is used for character storage. */
private final char value[];
/** The offset is the first index of the storage that is used. */
private final int offset;
/** The count is the number of characters in the String. */
private final int count;
................
public String(char value[])
)
1.直接赋值:String str = "abc"; 这种赋值,内存是用栈来存储"abc"的。
2.用new指令来创建的:String str = new String("abc"); 这种赋值,内存是用堆来存储"abc"的。
1只创建了一个引用对象
2创建了两个对象,一个引用对象和new String("abc") 对象
String +String 是通过Stringbuffer来完成的,所以String对象一旦创建了后就不能在改变
要改变其实就是重新建一个对象
欢迎指正和补充