這一節我們來看一下在我們開發的過程中,在什么時候我們要用到static關鍵字進行靜態修飾。
我們這里所說的靜態,無非就是兩種,一種是靜態變量,一種是靜態函數,我們分這兩種情況進行說明static關鍵字的使用場合。
**一、靜態變量**
我們在7.8節中對static關鍵字特點和7.9節中成員變量與靜態變量區別進行學習的時候就已經很明確的指出了靜態變量是共享數據,而對象中封裝的特有數據。
因此我們可以這樣解釋:當分析對象中所具備成員變量的值是相同的,且不需要對象做修改,這時這個成員變量就可以被static關鍵字修飾為靜態。
從另一個角度也就是說,只要數據在對象中都是不同的,也就是對象的特有數據,必須存在在對象中,則就是非靜態的,不能被static關鍵字修飾為靜態。
因此用static關鍵字定義靜態變量的使用場合:**如果是相同數據,且對象不需要做修改,只需要使用,且不需要存儲在對象中,則使用static關鍵字定義成靜態。**
**二、靜態函數**
我們在7.10static關鍵字使用細節時說到了靜態方法中不能調用非靜態成員,且不能使用this關鍵字,所以對于函數是否使用static關鍵字修飾,只需要參考一點,就是該函數功能是否有訪問到對象中的特有數據。
為了幫助我們理解,我們可以通俗的說,從源碼看,該功能是否需要訪問非靜態成員變量,如果需要,該功能就是非靜態的,如果不需要,我們就可以將該功能用static關鍵字定義成靜態函數。
當然,我們也可以定義成非靜態,但是非靜態需要對象去調用,而當創建了對象卻沒有訪問特有數據的方法,該對象創建是沒有意義的。因為我們之前說過對象是用于封裝特有數據的,當我們沒有訪問特有數據,那么我們為什么要創建對象呢?創建的對象只是浪費了堆內存中的空間,再什么也沒有做,所以說此時創建對象是沒有意義的。
因此用static關鍵字定義靜態函數的使用場合:**如果一個函數不需要訪問非靜態成員變量,就可以用static關鍵字定義成靜態。**
**
**
這一節我們就簡單的說這些吧。
- 前言
- 1.1 基本常識
- 1.2 Java語言概述
- 1.3 Java語言的環境搭建
- 1.4 Java程序開發之初體驗--Hello World
- 2.1 關鍵字
- 2.2 標識符
- 2.3 注釋
- 2.4 常量
- 2.5 進制掃盲
- 2.6 變量和數據類型(1)
- 2.7 變量和數據類型(2)
- 2.8 運算符
- 3.1 if語句
- 3.2 switch語句
- 3.3 while和do-while語句
- 3.4 for語句
- 3.5 for循環的嵌套
- 3.6 break語句與continue語句
- 4.1 函數的定義
- 4.2 定義函數的兩個明確
- 4.3 函數的內存加載過程
- 4.4 函數的重載
- 5.1 數組的定義
- 5.2 數組的內存分配及特點
- 5.3 數組操作中常見問題
- 5.4 數組常用操作(1)
- 5.5 數組常用操作(2)
- 5.6 二維數組
- 6.1 面向對象的概述
- 6.2 類與對象的關系
- 6.3 對象的內存體現
- 6.4 成員變量與局部變量
- 6.5 類類型參數與匿名對象
- 6.6 基本數據類型參數與引用數據類型參數的傳遞過程
- 6.7 封裝
- 7.1 構造函數概述與默認構造函數
- 7.2 構造函數與一般函數的區別
- 7.3 構造函數的重載
- 7.4 構造函數的內存加載
- 7.5 構造函數需要注意的幾個細節
- 7.6 this關鍵字的原理
- 7.7 this關鍵字的細節與應用
- 8.1 static關鍵字之特點
- 8.2 成員變量與靜態變量的區別
- 8.3 static關鍵字使用的注意細節
- 8.4 main函數的解析與細節
- 8.5 static關鍵字的使用場景
- 8.6 靜態的內存加載
- 8.7 靜態代碼塊
- 8.8 構造代碼塊
- 9.1 繼承
- 9.2 單繼承與多重繼承
- 9.3 子父類中成員變量特征體現