java共享状态中的哪些数据类型?

时间:2014-04-01 12:05:56

标签: java primitive-types state-saving

我在java中浏览原始数据类型。它提到原始值不与其他原始值共享状态

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

当然,该类的实例将共享这些静态变量,因此某种状态。但是,我正在寻找专门展示JAVA提供的非原始数据类型的状态共享的示例。

3 个答案:

答案 0 :(得分: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); 

并且您不能将它与原语一起使用,因为它们始终保留自己的数据副本。

答案 1 :(得分: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

答案 2 :(得分:0)

我建议你阅读这个帖子。

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

Is Java "pass-by-reference" or "pass-by-value"?