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