淺談Java中static和非static的區(qū)別-創(chuàng)新互聯(lián)

關于static和非static變量的區(qū)別

成都創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為新鄉(xiāng)縣企業(yè)提供專業(yè)的成都網(wǎng)站設計、成都做網(wǎng)站,新鄉(xiāng)縣網(wǎng)站改版等技術服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

1. static 修飾的變量稱為類變量或全局變量或成員變量,在類被加載的時候成員變量即被初始化,與類關聯(lián),只要類存在,static變量就存在。非static修飾的成員變量是在對象new出來的時候劃分存儲空間,是與具體的對象綁定的,該成員變量僅為當前對象所擁有的。


2. static修飾的變量在加載的時候先于main方法加載在內存中的數(shù)據(jù)共享區(qū)-------方法區(qū),而非static的變量在加載的時候,是要創(chuàng)建變量才加載在堆內存中的。


3. 一個static變量單獨劃分一塊存儲空間,不與具體的對象綁定在一起,該存儲空間被類的各個對象所共享。static變量值在方法區(qū)加載一次,而非static在創(chuàng)建對象時會加載很多次。每次創(chuàng)建都會拷貝一份。


4. 對象在引用成員變量是直接通過類名.變量名調用,對象在引用實例變量時只能通過對象名.變量名調用。


5. 在類中調用成員變量時直接調用或者以類名.變量名方式調用,實例變量則用this或者直接調用。

關于static方法和非static方法的區(qū)別


1. static修飾的方法也和static一樣。先于main方法被加載到方法區(qū),以便共享使用。


2. 靜態(tài)的static方法中不能使用this或者super關鍵字,因為static方法是先于對象創(chuàng)建之前就已經(jīng)加載的方法,是屬于類的方法,而this和super指向的是本類的對象或者父類的對象,非靜態(tài)的方法是屬于對象的,方法里可以用this和super。


3. static方法可以用對象.方法名來調用,也可以用類名.方法名來調用。而非靜態(tài)的方法只能創(chuàng)建對象后時調用。


4. static方法是加載一次,被所有的對象所共享。而非靜態(tài)方法是有多少個對象就拷貝多少次,每個對象只能調用自己的拷貝的方法。


5. 對象調用非靜態(tài)的方法時,不考慮線程安全性的問題,而調用靜態(tài)方法時,要考慮安全性的問題。因為靜態(tài)方法只有一份。而對象的方法是自己有自己的。


6. 同一個類中,靜態(tài)方法中只能訪問類中的靜態(tài)成員。而非靜態(tài)方法可以訪問非靜態(tài)的方法(使用類名調用,或者創(chuàng)創(chuàng)建本類的對象調用)。

總結

以上就是本文關于Java中static和非static的區(qū)別的全部內容,希望對大家有所幫助。感興趣的朋友可以參閱:Java單例模式實現(xiàn)靜態(tài)內部類方法示例、Java多線程ForkJoinPool實例詳解、淺談Java注解和動態(tài)代理等,有什么問題可以隨時留言,小編會及時回復大家的。

當前文章:淺談Java中static和非static的區(qū)別-創(chuàng)新互聯(lián)
路徑分享:http://www.bm7419.com/article24/dcdcce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站設計、域名注冊電子商務、企業(yè)建站關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司