無法從靜態上下文中引用非靜態方法
用static修飾的方法稱為靜態方法,修飾變數則為靜態變數,又分別叫做類方法或者類變數。
靜態方法中不能直接呼叫非靜態方法。因為非靜態方法不是獨立存在的,它是依附於物件存在——即只有申明瞭物件,才能通過物件呼叫。而靜態方法則可以直接通過類名呼叫,而不需要申明物件。因此直接引用非靜態方法就會出錯。
比如常見的main方法都是靜態的,必須由static修飾,因此在main方法裡呼叫類的其他非靜態方法,都是需要先申明物件,才能用。否則就會出現引用非靜態方法的錯誤。
要解決這個問題,可以去除一般方法的static關鍵字(如果是main方法,則不能去掉static)。另外一種方法就是把需要引用的方法也設定成靜態方法。
相關推薦
"無法從靜態上下文中引用非靜態變量,非靜態方法"
使用 對象 上下文 類變量 static 非靜態變量 初始化 方法 log 原因:1.用static修飾的方法稱為靜態方法,修飾變量則為靜態變量,又分別叫做類方法或者類變量。 2.靜態的方法可以在沒有創建實例時使用,而申明為非靜態的成員變量是一個對象屬性,它只有在對象存在時
無法從靜態上下文中引用非靜態變數
non-static variable mainframe cannot be referenced from a static context 即在靜態方法中不能引用非靜態變數 為什麼? 因為我們知道靜態的方法可以在沒有建立例項時使用,而申明為非靜態的成員變數是一個物件屬
java學習遇到的問題 無法從靜態上下文中引用非靜態變數、方法。
在寫java的斐波那契數列遞迴時遇到了一個問題。 public class Fibonacci { public static void main(String []args) { int x = f(6); System.out.println(x); } publ
無法從靜態上下文中引用非靜態方法
用static修飾的方法稱為靜態方法,修飾變數則為靜態變數,又分別叫做類方法或者類變數。 靜態方法中不能直接呼叫非靜態方法。因為非靜態方法不是獨立存在的,它是依附於物件存在——即只有申明瞭物件,才能通
無法在靜態上下文中引用非靜態
轉載自:https://blog.csdn.net/cool_ben/article/details/49334655 如下是經典的Fobonacci遞迴演算法: public class Fibonacci { public static void main(String []args)
C#變數初始化問題:欄位初始值無法引用非靜態欄位、方法或屬性
問題:欄位初始值設定項無法引用非靜態欄位、方法或屬性的問題 下面程式碼出錯的原因,在類中定義的欄位為什麼不能用? (1) public string text = test(); //提示 欄位或屬性的問題欄位初始值設定項無法引用非靜態欄位、方法 protected vo
欄位初始值無法引用非靜態欄位、方法
欄位初始值設定項無法引用非靜態欄位、方法或屬性 如 int i= 此值是用來初始化欄位i的 不能使用非靜態欄位 [c-sharp] view plaincopyprint? //錯誤 int j=5; int i=j ; //此行報出此編譯錯誤 正確 int i=5 //或 static
非靜態內部類、非靜態匿名內部類會持有外部物件的引用
3、適當的考慮下是否應該使用執行緒.Android應用框架設計了許多的類來簡化執行後臺任務,我們可以使用與Activity生命週期相關聯的Loaders來執行簡短的後臺查詢任務。如果一個執行緒不依賴與Activity,我們還可以使用Service來執行後臺任務,然後用BroadcastReceive
java裡的::也可以引用非靜態方法
在java 1.8裡如下引用靜態方法的程式碼是可以編譯通過的: // public static String format(String format, Object... args) BiFunction<String, Object[], String>
java靜態方法中不能引用非靜態變數
靜態方法和靜態變數是屬於某一個類,而不屬於類的物件。 因為我們知道靜態的方法可以在沒有建立例項時使用,而申明為非靜態的成員變數是一個物件屬性,它只有在物件存在時引用,因此如果在物件未建立例項時我們
靜態內部類和非靜態內部類的區別
依賴 table width idt 靜態屬性 bsp 訪問 實例化 外部 靜態屬性和方法 訪問外部類的屬性和方法 實例化 靜態內部類 有 只能訪問靜態的 依賴於外部類的實例 非靜態內部類 無 所有 可以直接實例化 靜態內部類和非靜態內部類的區別
Java子類與父類中靜態程式碼塊、非靜態程式碼塊、建構函式的執行順序一覽表
子類Child繼承父類Parent Child child=new Child(); 執行順序如下: ①父類靜態程式碼塊>>②子類靜態程式碼塊>>③父類非靜態程式碼塊>>④父類建構函式>>⑤子類非靜態程式碼塊>>⑥子類
Java的靜態內部類與非靜態內部類的區別
1 static 靜態修飾符 在程式中任何變數或者程式碼都是在編譯時由系統自動分配記憶體來儲存的。 static修飾表示靜態的,在類載入時JVM會把它放到方法區,被本類以及本類中所有例項所公用。在編譯後所分配的記憶體會在一直存在,直到程式退出記憶體才會釋放這個空間。如果一個被所有例項
靜態內部類和非靜態內部類之間的區別
靜態內部類和非靜態內部類之間的區別 /* * https://blog.csdn.net/xiaomogg/article/details/78231356 */ class OuterClass { public static class StaticInnerClass {
靜態內部類和非靜態內部類
結論: 1.靜態內部類只能夠訪問外部類的靜態成員,非靜態內部類可以訪問外部類的所有成員。 2.靜態內部類能有靜態成員(方法、屬性),非靜態內部類不能有靜態成員(方法、屬性)。 3.靜態內部類和非靜態內部類在建立時有區別。靜態內部類即使外部類沒有被建立時依然存在。非靜態內部類必須通過外部物
java中靜態成員變數和非靜態成員變數的區別
2 靜態成員變數值是所有類的例項共享的,所以呼叫的時候只需要 類名.屬性名 就可呼叫(也只能這樣呼叫),而非靜態成員變數的值是各個例項私有的,所以呼叫的時候必須是先有具體的類的例項,然後通過例項名來呼叫。也就是說,static修飾的成員,大家用的時候都用的一
靜態程式碼塊與非靜態程式碼塊的區別(Java)
靜態程式碼塊是以static修飾的程式碼塊,反之沒有用static修飾的程式碼塊為非靜態程式碼塊,如下所示: 靜態程式碼塊: static{ 若干程式碼 } 非靜態程式碼塊: { 若干程式碼 } 它們之間的區別主要如下: 靜態程式碼塊在虛擬機器載
JAVA 在外部類外部訪問內部類,靜態內部類和非靜態內部類的區別
在外部類外部訪問非靜態類內部類: package a; class Wai{ class Nei{ int i=3; } } public class test{ public
Java 靜態內部類 與 非靜態內部類的區別?什麼時候用靜態內部類,又是什麼時候用非靜態內部類?
Java中內部類載入時間:一般是隻有運到了才會初始化,而不是外部內載入的時候(不管是靜態還是非靜態內部類)。 注意到一個問題: 內部類只有是靜態的,其內部類中才能有靜態屬性和靜態方法; 如果內部類非靜態的,其內部類不能有靜態屬性和靜態方法。 例子: public cla
靜態內部類與非靜態內部類
靜態內部類: 靜態內部類也是定義在另一個類裡面的類,只不過在類的前面多了一個關鍵字static。 非靜態內部類不能有靜態成員: 對於java類載入順序我們知道,首先載入類,執行static變數初始化,接下來執行物件的建立,如果我們要執行程式碼中的變數i初始化, 那麼必須先