1
我在想這些Java中的修飾符是否有區別。例如:我有一個int值: public int; private int; public static int; private static int; public final int =?; private static final int =?; 因爲我在Minecraft中看到的資源位置是私有的靜態最終。內存消耗是否有區別?關於修飾符的內存問題
我在想這些Java中的修飾符是否有區別。例如:我有一個int值: public int; private int; public static int; private static int; public final int =?; private static final int =?; 因爲我在Minecraft中看到的資源位置是私有的靜態最終。內存消耗是否有區別?關於修飾符的內存問題
聲明爲static
的所有屬性屬於一個類,而非屬性,這些屬性是爲實例化的每個對象分配的。所以是的,static
屬性最終會消耗「少內存」,因爲它們只對所有類的實例創建一次。
但認爲你聲明一個屬性爲static
只是爲了消耗更少的內存是不對的,你創建一個是因爲你想在類的所有實例之間共享相同的值,而這往往不是一個符號壞的設計。當一個屬性被聲明爲static final
時,這意味着它有一個常數值,並且可以在類級別安全地聲明。
您應該更多地關注優秀的設計,良好的抽象,數據結構和算法以及更少的內存消耗......現在的內存很便宜且豐富。 – 2014-09-26 19:04:47
是的,但Minecraft使用大量的內存,並與鍛造安裝了大量的內存... – 2014-09-26 19:07:27
什麼是「大量的內存」?在Java中,只有當你的程序命中,例如2-4 GB(假設一個服務器端程序)時,你應該開始擔心。少一點東西根本不值得,不要擔心減少內存消耗_just yet_。有許多重要的事情需要處理,爲了減少內存佔用而對代碼進行微優化是浪費時間_unless_分析器表明這會導致性能問題。 – 2014-09-26 19:13:22