Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中创建后,最终的StringBuffer值是如何修改的?_Java_Oop_Final - Fatal编程技术网

在java中创建后,最终的StringBuffer值是如何修改的?

在java中创建后,最终的StringBuffer值是如何修改的?,java,oop,final,Java,Oop,Final,我知道最终变量的特征。它不能从初始化状态更改。但是 在StringBuffer类中使用final变量时,将使用java中的append()方法修改StringBuffer类的对象 与final修饰符一起使用时,StringBuffer与其他修饰符有何不同 请引导我清楚地了解这一点…final只是说变量不能重新分配。但是变量的属性仍然可以更改final在这种情况下意味着:对对象的引用是final(只能指定一次),而不是对象本身 对象本身仍然可以修改。当您创建对StringBuffer的final引

我知道最终变量的特征。它不能从初始化状态更改。但是 在
StringBuffer
类中使用
final
变量时,将使用java中的
append()
方法修改
StringBuffer
类的对象

与final修饰符一起使用时,
StringBuffer
与其他修饰符有何不同


请引导我清楚地了解这一点…

final
只是说变量不能重新分配。但是变量的属性仍然可以更改

final
在这种情况下意味着:对对象的引用是final(只能指定一次),而不是对象本身


对象本身仍然可以修改。

当您创建对
StringBuffer
final
引用时,这意味着无法重新分配引用,但您始终可以更新该引用所指向的对象。

一个常见错误是假设以下示例中的
sb
是反对

final StringBuilder sb = new StringBuilder();

实际上,
sb
是一个参考。它是4个字节(或者可能是8个字节),不管它指的是什么对象。这一提法不能改变。但是,引用的对象可以更改。

您的问题更适合于数组对象

final StringBuffer sb = new StringBuffer();

在这里,
sb
是final,您不能超过sb引用值,但与sb关联的对象具有某些不会改变的特征,这就是其中之一。

Java中的
final
关键字意味着引用对象的变量不能重新赋值。但这并不意味着对象本身不能改变其状态

final关键字指的是对对象的引用,意味着一旦初始化,它的值就不能更改(重新分配),但是如果对象是可变的,则对象的内部可以更改

你让它成为“最终的”而不是“不变的”。。。。最后的意思是你不能 重新指定引用并使其指向其他对象(在此 上下文)。。。可以更改指向的对象的值

例如:假设您有一个对汽车对象的引用。你可以 改变汽车的性能(颜色、音响系统、座椅等) 但不是你指的那辆车

要防止对象属性发生任何更改,必须 它是“不变的”。这可以通过使对象的setter私有或其他方式来实现

希望这有意义


如果可以使用StringBuilder,请不要使用StringBuffer。它在九年前被替换了,一开始并不是个好主意。Final是为了不再实例化对象,而不是为了修改它的属性。