靜態與非靜態調用問題。
看過這節課后,有些疑問,求會的小伙伴們幫忙解答一下。 問題如下: ????a.這節課中,看到了“靜態成員”四個字字,而不是靜態變量或者靜態方法。 ????疑問1:“成員”的意思是不是變量和方法的統稱,還是單獨只指代變量,不包含方法? ????b.本節課老師講了“靜態訪問靜態或非靜態”,“普通訪問靜態或非靜態”。 ????疑問2:那么,“非靜態訪問靜態或者非靜態”呢?? ????c.靜態和非靜態關鍵字就在static,用它來區分。 ????疑問3:那么,除了訪問方式不同,變量或者方法是否被static修飾,兩者有什么本質上的意義嗎?
2019-04-29
這位同學很善于思考啊,我來回答一下
靜態成員包含靜態變量和方法,是所有用static修飾的東西的統稱
非靜態可以任意訪問本類(注意是本類?。┲械乃谐蓡T變量和所有方法
靜態和非靜態的本質就比較深了,涉及到java的內存處理和垃圾回收機制,你可以這樣理解,靜態和非靜態所存儲的位置是不同的,靜態成員都存在靜態池中,不可回收,只要程序運行起來就一直存在,非靜態只有在用到是才創建,用完了就被回收了,所以程序中要盡量少用靜態的東西,否則程序會越來越卡,因為靜態占用了太多內存。
2019-04-10
統稱吧
在同類中,靜態方法可以直接調用靜態成員但是不能調用非靜態成員,如果想調用非靜態成員,可以先創建類的對象,然后通過對象來訪問非靜態成員。普通方法可以調用靜態和非靜態的變量
至于最后一個,個人感覺不同之處就是訪問方式的不同吧
2019-04-10
互相交流,希望不要嫌棄,回答全部來自老師的講義。
a. 1-4節中講了成員變量和局部變量,此時的成員是指成員變量的意思,變量似乎有幾哥叫法,其中還有一個叫屬性
在類中一般全部變量,稱為成員變量,局部變量稱為變量,在類的對象中,成員變量通常稱為對象的屬性
b.? 1.9 Java 中的 static 使用之靜態方法
“靜態訪問靜態或非靜態”指靜態方法訪問靜態成員變量和非靜態成員變量
“普通訪問靜態或非靜態”指普通成員方法訪問靜態成員變量和非靜態成員變量
“非靜態訪問靜態或者非靜態”指的就是普通成員方法訪問靜態成員變量和非靜態成員變量
老師講過
靜態方法中可以直接調用同類中的靜態成員,但不能直接調用非靜態成員。
在普通成員方法中,則可以直接訪問同類的非靜態變量和靜態變量
c.?
那么,除了訪問方式不同,變量或者方法是否被
static
修飾,兩者有什么本質上的意義嗎?
Java 中被 static 修飾的成員稱為靜態成員或類成員。它屬于整個類所有,而不是某個對象所有,即被類的所有對象所共享。
其實個人并不太理解static修飾符,下面這句話似乎好像可以加深下理解,其實還是用的少,寫了項目了我們的理解會更深層的
大家都知道,我們可以基于一個類創建多個該類的對象,每個對象都擁有自己的成員,互相獨立。然而在某些時候,我們更希望該類所有的對象共享同一個成員。此時就是 static 大顯身手的時候了?。?/font>