[英]Which data types in java share state?
我正在研究java中的原始數據類型。 它提到原始值不與其他原始值共享狀態。
這對我來說很有意義,但我想知道是否有人可以給我一個示例,其中數據值實際上與Java中的其他數據值共享狀態。 我可以提出一個自定義類,其中包含靜態變量。
自然,該類的實例將共享那些靜態變量,因此處於某種狀態。 但是我正在尋找一些示例,專門顯示由JAVA提供的非原始數據類型中的狀態共享。
我認為這里的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);
而且您不能在原語中使用它,因為它們總是維護自己的數據副本。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.