0

我正在通过java中的原始数据类型。它提到原始值不与其他原始值共享状态。

这对我来说很有意义,但我想知道是否有人可以给我一个示例,其中数据值实际上与 java 中的其他数据值共享状态。我可以想出一个包含静态变量的自定义类。

自然地,该类的实例将共享这些静态变量,从而共享某种状态。但我正在寻找专门显示 JAVA 提供的非原始数据类型中状态共享的示例。

4

3 回答 3

1

我认为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); 

并且您不能将其用于原语,因为它们始终维护自己的数据副本。

于 2014-04-01T12:13:05.683 回答
0

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
于 2014-04-01T12:12:35.297 回答
0

我建议你阅读这个线程。

我描述了在 java 中传递数据的“问题”。

Java 是“按引用传递”还是“按值传递”?

于 2014-04-01T12:16:22.207 回答