我有這段代碼的Java程序的靜態方法中:Java的內存管理的神祕
import org.w3c.dom.Document;
...
Document tempdoc1=tempdoc;
//tempdoc1=xmlModifier.setMacro(tempdoc, liquidity, "liquidity"); // this slightly modifies the document
tempdoc1=null;
if (tempdoc1==null){
tempdoc1=tempdoc;
}
...do something with tempdoc1
什麼我不明白的是:如果我拿出評論「//」我從後面的代碼執行中獲得不同的結果,而從我的基本理解來看,它應該完全相同,因爲在任何情況下,變量tempdoc1都將在下面的行中重新定義!有人知道爲什麼嗎?
編輯:我看不出類xmlModifier的靜態方法setMacro如何修改tempdoc引用的對象。例如,該代碼
public static void main(String[] args) {
String test="test";
String test2=dosomething(test);
System.out.println(test);
}
public static String dosomething(String str){
str="mod";
return str;
}
只是打印「測試」,即方法dosomething不會修改測試引用的對象。有沒有情況下,情況並非如此?
你是什麼意思,當你說「我得到不同的結果」?你期望什麼結果?你會得到什麼結果? – neutrino
這意味着在twu情況下xml文檔tempdoc1是不同的(setMacro方法實際上修改了樹的一部分) – splinter123