String对象一旦创建就不能修改
源码:
Public String(char value[]){
int size = value.length;
this.offset = 0;
this.count = size;
this.value = Array.copyOf(value,size); //
这里,Array.copyOf()的内部实现是借助System.arraycopy()方法
}
最后一行为啥不写成this.value = value而是通过复制呢?
我的初步理解是,如果是写成this.value = value,那当修改value数组,就等于修改了String对象,这恰恰是违背String对象一旦创建就不能修改的设计原则。而使用arraycopy的话,就遵循不变的原则,因为我已经复制了一份,若value改变了,已经是一个新的String对象。有点凌乱!大家的看法如何?
源码:
Public String(char value[]){
int size = value.length;
this.offset = 0;
this.count = size;
this.value = Array.copyOf(value,size); //

}
最后一行为啥不写成this.value = value而是通过复制呢?
我的初步理解是,如果是写成this.value = value,那当修改value数组,就等于修改了String对象,这恰恰是违背String对象一旦创建就不能修改的设计原则。而使用arraycopy的话,就遵循不变的原则,因为我已经复制了一份,若value改变了,已经是一个新的String对象。有点凌乱!大家的看法如何?