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

java共享状态下的哪些数据类型?,java,primitive-types,state-saving,Java,Primitive Types,State Saving,我正在浏览中的基本数据类型。它提到原语值不与其他原语值共享状态 这对我来说很有意义,但我想知道是否有人能给我一个例子,在java中,一个数据值实际上与其他数据值共享状态。我可以提出一个自定义类,其中包含静态变量 自然地,该类的实例将共享这些静态变量,因此是某种状态。但我正在寻找一些示例,这些示例专门显示JAVA提供的非原始数据类型中的状态共享。JAVA中的原始数据类型不保留对其他对象的引用,例如: int a = 0; int b = 1; b = 2; //a value is still

我正在浏览中的基本数据类型。它提到原语值不与其他原语值共享状态

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


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

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

我认为这里的
共享状态
意味着非原语变量总是引用内存中的对象。这些对象在这些变量之间是“共享”的

也就是说,您可以使用非基本类型:

    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中数据传递的“问题”


有无限多可能的例子。我认为这意味着两个不同的对象共享某个状态,而不是指向同一个内存位置。我敢肯定你想得太多了。首先,在您引用的教程中,类和对象将在后面的很多时候进行解释。不同对象之间的数据共享只能通过某种形式的
静态
全局数据来实现,因此这里也没有太多的讨论。