1. 程式人生 > >java學習(1).static,volatile,transient,final等關鍵字

java學習(1).static,volatile,transient,final等關鍵字

static 靜態關鍵字

簡而言之一句話,不對類來例項化就可以用。

一,相關用法

1,static可以修飾類中定義的變數 也叫做靜態變數。

此時表明這個變數和具體類的例項無關而是和類相關的。靜態變數和普通類變數的區別也就是。類變數不區分例項,也就是說所有例項公用。只有在類初次載入的時候才會初始化。然後非靜態變數是共有的。每次進行物件建立就會產生一個副本。

2,static可以修飾函式方法 也叫做靜態方法。

同樣的靜態方法也不依賴與具體的類物件。既然不依賴具體物件,那麼關鍵的一點是,靜態方法是沒有類的this指標的,既然如此那麼必然在靜態函式內部找不到非靜態函式和非靜態變數。何談呼叫。但是反過來是可以的,非靜態成員方法呼叫靜態方法和靜態變數。
因此如果說想在不建立某個物件的情況下呼叫一個方法,那就可以把這個方法宣告為static的,比如main方法。

特殊的一點 即使沒有顯示的宣告為static,類的構造器實際上也是靜態方法

3.static可以用來修飾程式碼塊 就叫static程式碼塊吧。

靜態程式碼塊的作用主要來說是用來優化程式效能的,之所以說會優化效能是因為只有在類載入的時候會執行一次,其他例項化類的時候不會執行static程式碼塊。static可以置於程式的任何地方。類中可以有多個static塊。類被載入的時候,會按照static塊的順序來依次執行。

2.幾個要點

1.static關鍵字 不會改變類中成員的訪問許可權。能夠改變成員變數訪問許可權的只有protected private public

2.雖然靜態變數是獨立於具體物件的,但是通過類的this指標仍然可以訪問static變數。

3.static不可以用來修飾區域性變數。。。。。

3.static常見的具體用法。

1、單例模式中使用內部靜態類來實現。

  單例模式(singleton)是一種建立型模式,在某個類採用singleton模式之後,只可能產生一個供外部訪問的例項。核心知識點如下:
  (1)類的建構函式要是private的。保證只有內部給外部的介面可以進行類的初始化。
  (2)給外部提供的類的例項化物件必須為private static 的。
  (3)定義的提供給外部訪問改例項化物件的介面一定是static的。
  單例模式中常見的方式有餓漢式,懶漢式。內容比較多見下片部落格

2、父類和子類都有靜態程式碼塊,那麼這個類的載入順序。具體程式碼如下

   第一步程式呼叫main函式。此時要先載入TestLoadClass類,但是TestLoadClass呼叫了Base,那麼就要先載入Base類。建構函式先呼叫父類再子類。所以輸出很好理解了。

見下面這種情況
testloadclass2
首先仍然是從面函式入口,先載入TestLoadClass類,然後執行new MyClass()。此時載入MyClass類。因為TestLoadClass已經被載入過所以不會再呼叫TestLoadClass的static靜態程式碼塊。此時要優先執行父類的成員變數初始化。所以會先執行Person person = new Person(“Test”)接著就是正常流程。順序實行父類的建構函式,再執行自己的。
類中變數初始化的順序參考 類中變數初始化的順序參考http://blog.csdn.net/shijinupc/article/details/7692315

3、

相關推薦

java學習(1).staticvolatiletransientfinal關鍵字

static 靜態關鍵字 簡而言之一句話,不對類來例項化就可以用。 一,相關用法 1,static可以修飾類中定義的變數 也叫做靜態變數。 此時表明這個變數和具體類的例項無關而是和類相關的。靜態變數和普通類變數的區別也就是。類變數不區分例項,也就是說

Java 學習筆記之jfreechart 生成折線圖餅圖

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java1-100以內的所有素數判斷一個數是不是素數。Java程式碼實現附測試結果圖

質數(prime number)又稱素數,有無限個。 質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。 小師弟問了我個這麼個聯絡題,雖然看似簡單,但是,大家都覺得簡單的東西

Java學習筆記(24)Implementing ListsStacksQueuesand Priority Queues

12  publicboolean contains(E e); 13 14  /** Return the element from this list at thespecified index */ 15  public E get(int index);

java學習day23-多執行緒的引入同步

 (2)Java程式的執行原理及JVM的啟動是多執行緒的嗎?  Java程式的執行原理: *   由java命令啟動JVM,JVM啟動就相當於啟動了一個程序。 *   接著有該程序建立了一個主執行緒去呼叫main方法。 *  * 思考題: *   jvm虛擬機器的啟動是單執行緒的還是多執行緒的? *    多

Java 學習筆記之jfreechart 生成折線圖餅圖 ...

package com.yyh.jfreechart; import java.awt.Color; import java.awt.Font; import java.io.File; import java.io.FileOutputStream; import ja

Java學習之訪問許可權Public,Private,ProtectedDefault的作用域

1.Default:預設的許可權,當方法或域名沒有使用許可權限制符時,其磨人具有default許可權,即是包許可權,只有在該包下可見 2.public許可權:在方法或域面前顯示的給定public限定時候,其具有該許可權控制。public是對所有可見 a

Java1-100以內的所有素數判斷一個數是不是素數

再看 println 判斷 block ron ati lis 以及 form 質數(prime number)又稱素數,有無限個。 質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。 小師弟問了我個這麽個聯系題,雖然看似簡單,但是,大家都覺得簡單

Java學習1——JDK(學前準備)

edi 嵌入 hit sta 種類型 安裝 log enter classpath 一、下載: 可以在http://www.oracle.com/technetwork/java/javase/downloads/index.html下載並安裝Java SE(JDK)

java學習1

對象 分配 回收 nal 類繼承 內存空間 over 產生 glob Head First Java1 1.類繼承的方法可以被覆蓋(override) 2.類帶有實例變量(instance variable)和方法(methods) 3.創建對象時,它會被存放在堆中。Jav

Java學習-1 Myeclipse與Idea

abcdefg agent tomcat 擴展 oracl foo load where int 半年沒寫了,天天加班,沒時間和精力再自我充電,最近還是要下定決心,多學習下其它語言(Java、Oracle、Angular等),擴展視野,擁抱市場,不能困死在.net一棵樹上。

Java學習——使用Static修飾符

pri img style stub oid .get 修飾 eth 增加 這是原來的 class StaticDemo { static int x; int y; public static int getX() { return x;//靜態方法中可以訪

JAVA學習筆記 static(靜態變數 靜態方法)

一。程式碼 (1)public class statictest {public static void main(String args[]){ statictest tm=new statictest(); tm.printSxt(); int c=tm.add(30,40,50)+1000;

Java學習筆記-Static修飾符用法

使用static可修飾類屬性、方法、初始化塊,可通過類名直接進行訪問,用在類中公用的部分,需定義為static。 無static修飾的屬性、方法稱為例項屬性、例項方法,每個例項物件都一一對應自己的屬性或者方法; 由static修飾的屬性或者方法稱為類屬性、類方法,每個例項物

java學習1、abstract 抽象函式 抽象類

抽象函式------>只有函式名,沒有函式體的函式 e.x. abstract  void  eat(); 1、抽象類不能生成物件; 2、如果一個類中包含抽象函式,那麼這個類必須被宣告為抽象類; 3、如果一個類中沒有抽象函式,那麼這個類也可以被宣告為抽象類; 抽

Java中的staticvolatile變數的區別?

在java中宣告一個靜態變數,意味著只有一個副本,無論建立了多少個類的物件,即使沒有建立物件,變數也可以訪問,但是執行緒可能具有本地快取的值。 當變數volatile而不是靜態時,每個object都有一

Java學習——方法中傳遞參數分簡單類型與復雜類型(引用類型)編程計算100+98+96+。。。+4+2+1的值用遞歸方法實現

dig oid 傳遞 system alt style 類型 遞歸 gen package hello; public class digui { public static void main(String[] args) { /

kafka學習(1)linux下的安裝和啟動以及Java示例程式碼

1. 安裝 1.1 下載kafka並解壓 wget http://mirror.bit.edu.cn/apache/kafka/0.11.0.0/kafka_2.11-0.11.0.0.tgz tar -zxvf kafka_2.11-0.11.0.0.tgz 1.2 修改

最近整理出了有關大資料微服務分散式,Java,PythonWeb前端產品運營互動等1.7G的學習資料有視訊教程原始碼課件工具面試題等等。這裡將珍藏多年的資源免費分享給各位小夥伴們

大資料,微服務,分散式,Java,Python,Web前端,產品運營,互動 領取方式在篇尾!!! 基礎篇、網際網路架構,高階程式設計師必備視訊,架構師系列視訊,各框架原始碼解析視訊,Linux系統、JVM、大型分散式電商專案實戰視訊........等等   

最近整理出了有關大資料微服務分散式,Java,PythonWeb前端產品運營互動等1.7T的學習資料有視訊教程原始碼課件工具面試題等等。這裡將珍藏多年的資源免費分享給各位小夥伴們

大資料,微服務,分散式,Java,Python,Web前端,產品運營,互動 領取方式在篇尾!!! 基礎篇、網際網路架構,高階程式設計師必備視訊,架構師系列視訊,各框架原始碼解析視訊,Linux系統、JVM、大型分散式電商專案實戰視訊........等 等