我在java中浏览原始数据类型。它提到原始值不与其他原始值共享状态。
这对我来说很有意义,但我想知道是否有人可以给我一个示例,其中数据值实际上与java中的其他数据值共享状态。我可以想出一个包含静态变量的自定义类。
当然,该类的实例将共享这些静态变量,因此某种状态。但是,我正在寻找专门展示JAVA提供的非原始数据类型的状态共享的示例。
答案 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)