区分对象和对象的引用
String s = "zhangsan"
System.out.println("s = " +s);
s = "lisi";
System.out.println("s = "+s);
打印结果为
s = zhangsan
s = lisi
误区
虽然上面的打印结果s 改变了但是并不是String对象改变了,而是s(s只是一个String对象的引用)
对象 在内存中是一块内存区,成员变量越多,这块内存区站的空间越大
引用 只是一个4字节的数据,里面存放了它所指向的对象的地址,通过这个地址可以访问对象
为什么String对象是不可变的
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
}
从代码private final char value[]中可以看出,在java中String类其实就是对字符数组的封装
因为value 呗private final 修饰所以它在外部和子类中都不可以被修改,所以就可以认为String对象是不可变对象。
参考:https://blog.csdn.net/zhangjg_blog/article/details/18319521#commentsedit