簡體   English   中英

Java中的哪些數據類型共享狀態?

[英]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

我建議您閱讀此主題。

我描述了Java中數據傳遞的“問題”。

Java是“按引用傳遞”還是“按值傳遞”?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM