关于Java的点点滴滴(1)——Static关键字
生活随笔
收集整理的這篇文章主要介紹了
关于Java的点点滴滴(1)——Static关键字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本人不是開發大神,只是剛剛進入這一行業的小小菜鳥,爭取每天通過書寫博客積累些知識(內容估計會雜亂無章,有些會記下書中的有用的話,有些會從其他大神中摘取精華語句),希望同行的前輩們指點迷津!
一般來講,執行new來創建對象時,數據存儲空間才會被分配,其方法才供外界調用。但是,當只想為某個特定域分配單一存儲空間,而不去考慮要創建多少對象(甚至不創建對象),或者希望某個類中方法不與其類的任何對象關聯一起的情況下,這種new方法是無法解決的。 通過static關鍵字可以滿足其上述的兩種情況。這也是為什么會用到static關鍵字的原因。總結: 1:被static修飾的變量稱為靜態變量(實質上就是全局變量),僅僅類初次加載時會被初始化,在內存中只有一塊空間,被所有對象共享。 2:被static修飾的方法為靜態方法,同樣不依賴任何對象就可以訪問,因而沒有this方法的。它不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。(類的構造器實際上也是靜態方法) 3:static代碼塊 用于優化程序性能。(這塊只是表面懂其作用,但是還不清楚怎么靈活運用,在此只是簡單說明下) 4:一種特殊用法是用static修飾內部類,普通類是不允許聲明為靜態的,只有內部類才可以。被static修飾的內部類可以直接作為一個普通類來使用,而不需實例一個外部類例如:`public class OuterClass { public static class InnerClass{ InnerClass(){ System.out.println("============= 我是內部類'InnerClass' ============="); } }}
public class TestStaticClass { public static void main(String[] args) { // 不需要new一個OutClass new OuterClass.InnerClass(); } }使用靜態內部類需要注意幾點限制:
(1) 非靜態內部類也可以定義靜態成員但需要同時有final關鍵詞修飾,靜態方法鑒于無法用final修飾,仍必須是在靜態內部類 或者非內部類中定義。
(2)一般的非靜態內部類,可以隨意的訪問外部類中的成員變量與成員方法。即使這些成員方法被修飾為private,其非靜態內部類都可以隨意的訪問。則是非靜態內部類的特權。因為在其他類中是無法訪問被定義為私有的成員變量或者方法。如果定義其為靜態內部類,都只能夠引用外部類中的靜態成員方法或者成員變量。
參考資料:
1. http://www.cnblogs.com/dolphin0520/p/3799052.html
總結
以上是生活随笔為你收集整理的关于Java的点点滴滴(1)——Static关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SuperMemo POJ - 3580
- 下一篇: 免开发打造智能咖啡机,让您省时又省力