我正在通过java中的原始数据类型。它提到原始值不与其他原始值共享状态。
这对我来说很有意义,但我想知道是否有人可以给我一个示例,其中数据值实际上与 java 中的其他数据值共享状态。我可以想出一个包含静态变量的自定义类。
自然地,该类的实例将共享这些静态变量,从而共享某种状态。但我正在寻找专门显示 JAVA 提供的非原始数据类型中状态共享的示例。
我正在通过java中的原始数据类型。它提到原始值不与其他原始值共享状态。
这对我来说很有意义,但我想知道是否有人可以给我一个示例,其中数据值实际上与 java 中的其他数据值共享状态。我可以想出一个包含静态变量的自定义类。
自然地,该类的实例将共享这些静态变量,从而共享某种状态。但我正在寻找专门显示 JAVA 提供的非原始数据类型中状态共享的示例。
我认为sharing state
这里的意思是非原始变量总是对内存中对象的引用。这些对象在这些变量之间“共享”。
即你可以使用非原始类型:
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = sb1;
sb1.append("change thru sb1");
sb2.append(" change thru sb2");
// will print both modifications, since sb1 & sb2 refer to the same object
System.out.println(sb1);
并且您不能将其用于原语,因为它们始终维护自己的数据副本。
java中的原始数据类型不保留对其他对象的引用,例如:
int a = 0;
int b = 1;
b = 2;
//a value is still 0;
Java 中的对象变量是指向对象的指针,因此您可以共享两个变量的状态,让它们引用同一个对象:
Object a = new Object();
Object b = a;
b.modifySomething();
// a is modified too because they are the same object