在class層宣告之變數稱為全域變數,可以在該層以下的所有副程式(void)使用。 有關void的內容在方法的章節會提到。 程式, 輸出. public class test{ int ... ... <看更多>
「java final變數」的推薦目錄:
- 關於java final變數 在 Re: [問題] 類別共用變數- 看板java - 批踢踢實業坊 的評價
- 關於java final變數 在 變數類型- Java學習筆記 的評價
- 關於java final變數 在 #046 [JAVA] - Final Keyword (Final Variable, Final ... - YouTube 的評價
- 關於java final變數 在 Assigning value to a static final variable - java - Stack Overflow 的評價
- 關於java final變數 在 Fail to set private static final variable in Android #44 - GitHub 的評價
java final變數 在 #046 [JAVA] - Final Keyword (Final Variable, Final ... - YouTube 的推薦與評價
كورس البرمجة الكينونية باستخدام لغة البرمجة جافا:شرح المتغير النهائي (الثابت) وأنواعه~Explanation of Final Keyword:- Final Variable- Final ... ... <看更多>
java final變數 在 Fail to set private static final variable in Android #44 - GitHub 的推薦與評價
In Android, jOOR doesn't work when reflect final field by jOOR. ... For example: * <pre> * public static final int java.lang.Thread. ... <看更多>
java final變數 在 Re: [問題] 類別共用變數- 看板java - 批踢踢實業坊 的推薦與評價
先聲明,下面的程式碼是一個 bad style,
// 把全域變數都放在這裡
public class GlobalVariable {
public final static int[] array = new int[100];
}
public class A {
public void method() {
// 從全域變數取得數值
for (int value : GlobalVariable.array) {
// TODO ...
}
}
}
這種寫法具有一種壞味道。
既然我可以把變數放在全域變數讓程式的任何物件使用
那麼我為何不把所有變數都放到全域變數裡面?
這樣不是很方便嗎?
是的,很方便沒錯,但是隨著程式愈來愈大,全域變數愈來愈多
各式各樣的變數通通都擠在一個類別裡面,而且還是「類別擁有」!
這將會讓軟體全部都依賴這個全域變數,整個程式變得不可切割
這意味著,你今天寫了一個功能型的類別,但由於它依賴此全域變數
所以無法讓另一個程式直接使用這個功能型的類別
而必須連同全域變數也一起搬過來才行!
但是,如果我們把這些全域變數稍做一些分類如何?
public class Graph {
public final static int[] edges = new int[100];
public void method() {
// 與 Graph 有關係的方法
}
}
public class Board {
public final static int[] pieces = new int[100];
public void method() {
// 與 Board 有關係的方法
}
}
這樣寫有好一點點,但是程式寫久了還是會發現這種寫法並非「萬靈丹」
因為 Graph.edges 和 Board.pieces 都是類別擁有
這意味著 Graph 和 Board 的衍生物件都享有同一個 edges 和 pieces
此缺點在物件數量只有一個的時候還不會發生,但是如果今天我想要產生 10 個 Graph
以及 10 個 Board 的物件的話呢? 它們仍然享有同一個 edges 和 pieces
這樣不合理,照理說它們應該分成各自的 10 個 edges 與 10 個 pieces
我在修改其中一個 edges 或 pieces 的時候,不能影響到其他 9 個物件的屬性。
說了半天,其實只是想要說,全域變數是個壞主意,不要再想它了!
真正最好的寫法還是本討論串第二篇的方法,找一個類別把你的變數塞進去
並且讓它是:「物件擁有」!
public class A {
public int map[][] = new int[100][100];
}
※ 引述《b60413 (None)》之銘言:
: 假設我有三個類別 都要使用到同一個資料請問該怎樣寫會比較好?
: 有想過把資料宣告為全域變數 但是Java好像不能這樣做....
: 第一次用Java寫比較大型的專案 很多地方不是很了解
: 謝謝
: ex:
: int map[100][100];
: class A {
: public void method () {
: method2();
: }
: private void method2 () {
: //在這裡會使用到map這個變數
: }
: }
: class B {
: ..... //同A的method
: }
: class C {
: ..... //同B的method
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.247.13
... <看更多>