摘要:小節也有類似的栗子,其結論是靜態方法不具有多態性。來自一個有趣的問題靜態字段論述的問題大致是說以上兩個類中各有幾個方法本質其實就是有無時的區別。
Demo1
來自關于java中static一個有意思的小案例:
class Employee { private static Employee employee = new Employee(); public static int count1 = 0; public static int count2; private Employee(){ count1++; count2++; }; public static Employee getInstance(){ return employee; } } public class TestLoader{ public static void main(String[] args){ Employee employee = Employee.getInstance(); System.out.println("count1-------"+employee.count1); System.out.println("count2-------"+employee.count2); } }
運行結果為:
count1-------0
count2-------1
public static int count1 = 2; private Employee(){ System.out.println("init count1-------"+count1); System.out.println("init count2-------"+count2); count1++; count2++; };
我們在構造方法中加入兩個輸出,輸出結果為:
init count1-------0
init count2-------0
count1-------2
count2-------1
你也發現了吧,此時count1尚未初始化賦值。即new Employee()先于count1 = 2執行。
因此解決這個demo混淆的最好方法就是將靜態變量定義在方法之前。這樣是我們平常編碼的一種好習慣吧。
來自Java有意思的知識點
public class Parent { public static String say() { return "parent static say"; } public String say2() { return "parent say"; } } public class Child extends Parent { public static String say() { return "child static say"; } public String say2() { return "child say"; } } public class OverrideTest { public static void main(String[] args) { Parent p = new Child(); System.out.println(p.say()); System.out.println(p.say2()); } }
運行結果:
parent static say
child say
是你想的那樣嗎?
所謂靜態方法,并不僅僅指該方法在所有實例中只有一份,同時也指該方法是“靜態”加載的,即在編譯期就已決定其行為。此處p的靜態類型為Parent,所以它所調用的方法也在編譯期和Parent的say()方法綁定。
《Think In Java》8.2小節也有類似的栗子,其結論是“靜態方法不具有多態性”。
Demo3來自一個有趣的問題(java靜態字段)
class TestMethodA { static String name = "rebey.cn"; } class TestMethodB { static final String name = "rebey.cn"; }
論述的問題大致是說以上兩個類中各有幾個方法?本質其實就是有無final時的區別。怎樣,心中有答案了嗎?
說點什么/** * 修飾 * 屬性 * 方法 * 對象 */ /** * 類加載時,實例化前加載一次;; * 可通過類名直接調用或實例調用,且所有實例共享; * * 此外,靜態方法中不能用this和super關鍵字, * 不能直接訪問所屬類的實例變量和實例方法 (就是不帶static的成員變量和成員成員方法), * 只能訪問所屬類的靜態成員變量和成員方法; * */還有什么玩法
靜態導包;
本文不定期更新中...
更多有意思的內容,歡迎訪問rebey.cn
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67443.html
摘要:希望大家在這浮夸的前端圈里,保持冷靜,堅持每天花分鐘來學習與思考。 今天的React題沒有太多的故事…… 半個月前出了248個Vue的知識點,受到很多朋友的關注,都強烈要求再出多些React相前的面試題,受到大家的邀請,我又找了20多個React的使用者,他們給出了328道React的面試題,由我整理好發給大家,同時發布在了前端面試每日3+1的React專題,希望對大家有所幫助,同時大...
摘要:要招一個會的開發者作為面試官的你,你還會每次都只是問這些老土的問題嗎你對的理解是什么你知道什么是雙向綁定嗎你了解它的原理嗎說說的生命周期有哪些組件通訊有哪些你用過嗎作為面試者的你,在網上搜索下面試題及答案,看完后你是不是覺得自己掌握了武林秘 showImg(https://segmentfault.com/img/bVburrG?w=533&h=300); 要招一個會vue的開發者: ...
摘要:如果你有一臺云主機,你會用來做什么呢已經有一個個人使用的云主機。這臺云主機安裝的是系統。通過云主機的公網可以家庭網絡的公用映射。云幫手面板是啥可以管理云主機嗎云幫手是一款集中化管理云主機的軟件?;旧厢槍υ浦鳈C,云幫手的功能是十分齊全的了。如果你有一臺云主機,你會用來做什么呢?已經有一個個人使用的云主機。這臺云主機安裝的是centos系統。使用docker裝了幾個網站。使用nodejs通過m...
摘要:所以,剛開始我并沒有直接就投遞阿里,畢竟心里還是有一點點小害怕的。操作系統的內存管理機制進程和線程的區別說下你對線程安全的理解有什么作用,和有什么區別實現原理用過么什么場景下用的底層原理。 作者:ppxyn。本文來自讀者投稿。該文已加入筆主的開源項目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項目),地址:https://github.com/Sna...
摘要:但是,不要高興的太早。。。。。,看看頁面上并不是顯示的我們傳過來的值。。?,F將兩個頁面的部分代碼做如下修改部分代碼部分代碼不知道你們了解這個的使用姿勢了嗎反正作為菜鳥的我是又學到了,歡迎留言說說你們在開發中遇到的一些值得卸載小本本上的問題唄 本文首發在個人的博客上,地址:重慶崽兒Brand,歡迎訪問~~~~ 最近做公司項目遇到這樣一個需求: 從一個頁面跳轉到另一個頁面去選擇一些信息,選...
閱讀 2543·2023-04-26 00:56
閱讀 2000·2021-10-25 09:46
閱讀 1236·2019-10-29 15:13
閱讀 811·2019-08-30 15:54
閱讀 2190·2019-08-29 17:10
閱讀 2612·2019-08-29 15:43
閱讀 497·2019-08-29 15:28
閱讀 3022·2019-08-29 13:24