為什麼使用private static final

2022-07-23 12:09:13 字數 1475 閱讀 1642

三個修飾符:private、static、final。

private:表示屬性或者方法是私有的與public、protected對應。public代表公用,其他類或者該類的子類也允許訪問被public修飾的屬性等;protected代表受保護的,其他類無法訪問被protected修飾的屬性或者其他東西但是允許該類的子類訪問;private代表私有的,不允許除本類之外的其他類訪問,包括子類也不允許訪問被private修飾的屬性或其他。

static:靜態的,static修飾的東西(**塊、屬性等)不屬於任何物件屬於某個類,是物件公有的。static塊允許出現在任何地方,但是不允許出現在方法內部。

final:最終的,也就是不允許修改,一旦賦值後被final修飾的東西就不再允許修改了。final修飾引用變數時,該引用不能改變其引用位址了,但是該引用的屬性還是允許修改的。final修飾方法時,被修飾的方法不能夠被重寫。final修飾的方法比非final方法要快,因為在編譯的時候就被靜態繫結了,不需要在執行時進行動態繫結。final修飾的類稱為final類。通常使用final修飾的類功能是完整的,因為不允許繼承(string、integer等)。

final修飾變數時,該變數在類載入時就會被初始化,會因為物件的建立而建立載入。

static修飾變數時,該變數將只被初始化一次,此後不再重新初始化。

可見,final和static是不同的,乙個類中若有著final和static修飾的兩個屬性,在建立物件時,static修飾的屬性只被初始化一次,而final修飾的屬性會隨著物件的建立而被建立初始化。

看下面**:

public

class

atest

catch

(interruptedexception e)

atest bb=new

atest();

system.out.println("aa.fs="+aa.fs);

system.out.println("aa.ss="+aa.ss);

system.out.println("bb.fs="+bb.fs);

system.out.println("bb.ss="+bb.ss);}}

執行結果如下:

舉個栗子,比如log

通常我們使用log列印日誌時我們會這樣寫:

private

static

final log log=logfactory.getlog(test.class);

這裡我們將日誌記錄器宣告為私有、靜態、final型別的了。有什麼原因呢?首先日誌記錄器應當是乙個類內部的東西,不允許其子類或者其他類使用因此被private修飾為私有的。再其次,對於所有該類的物件也就是該類的所有例項只需要乙個logger所以使用static修飾。且logger不能被替換或者修改、所以使用final再做修飾。

為什麼使用 DOCTYPE html

a doctype is a mostly useless,but required,header.html5 spec 現在的各種web開發工具都足夠強大,支援插入模板 因此你並不需要把這又長又臭的doctype乙個個字母的敲出來。doctype最大的作用是讓瀏覽器用來選擇渲染模式,或者說是用來觸...

為什麼使用指標

在實際程式設計中,既然使用變數就可以訪問資料,為什麼還用指標呢?使用指標來操縱自動變數的唯一原因是,為了說明指標的工作原理。指標真正的用途是被用於完成下列3種任務 管理自由儲存區中的資料 訪問類的成員資料和函式 按引用傳遞引數 在 函式的 工作原理 中,提到了5個記憶體區域 全域性命名空間 自由儲存...

為什麼使用Servlet amp JSP

web伺服器接收客戶請求,查詢資源,然後向客戶返回一些結果。web客戶允許使用者請求伺服器上的某個資源,並且向使用者顯示請求的結果。客戶和伺服器使用http協議進行通訊,伺服器使用http向客戶傳送html。tcp協議負責確保從乙個網路節點向另乙個網路節點傳送的檔案能作為乙個完整的檔案到達目的地,i...