java共享状态下的哪些数据类型?
我正在浏览中的基本数据类型。它提到原语值不与其他原语值共享状态 这对我来说很有意义,但我想知道是否有人能给我一个例子,在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中的原始数据类型不保留对其他对象的引用,例如:
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中数据传递的“问题”
有无限多可能的例子。我认为这意味着两个不同的对象共享某个状态,而不是指向同一个内存位置。我敢肯定你想得太多了。首先,在您引用的教程中,类和对象将在后面的很多时候进行解释。不同对象之间的数据共享只能通过某种形式的
静态
全局数据来实现,因此这里也没有太多的讨论。