1. 程式人生 > >淺談static關鍵字的四種基本用法

淺談static關鍵字的四種基本用法

此文章轉載自程式設計師大佬 : 訪問原文章可點選

1、修飾成員變數:
  在一個person類中,一個成員變數例如 String name,當new2個person()物件時候,這2個物件在堆的位置是不同的,給name賦值張三、李四,這兩個物件的  name是互相不影響的。
  當用static修飾時,例如static String name,這個變數是存在靜態區,被堆中的物件所共享。如果依次賦值給2個物件name張三、李四。最終2個物件的name為李四(因為後一次的賦值在靜態區中將前一次的賦值覆蓋);



該修飾只會在特定情況下使用,例如給一個數量統計count一個初始化值0,後續根據程式碼邏輯增加。可以修飾為例如:private static int count=0;

2、修飾成員方法:


  static修飾方法後,最大的作用就是可以"類名.方法名"呼叫該方法。但是在實際開發中也少用到該方式,因為一是static修飾後的方法資源共享,在多執行緒場景不安全。二是靜態資源常駐記憶體,很難被回收;
  static方法也是沒有this的方法,this代表當前物件。而static方法不需要物件;
  主要用在沒有建立物件的時候呼叫方法/變數;

  擴充套件:
  構造器是靜態方法麼?
  構造器中可以有"this",並且當建立物件時必須new Person();此時用到了構造器。而static方法沒有this,也不屬於任何物件,並且構造器也不是方法。所以構造器不是靜態方法;

3、靜態塊
  static修飾靜態塊後,將要修飾的成員同一放在一個static中。該靜態化會在第一次使用類時,最先初始化static修飾的靜態塊。並且在程式執行過程中,只需要初始化一次,不會進行多次初始化;



  輸出結果:
  animal staticcat staticanimal constructor
  cat constructor
  載入順序:首先執行main方法,但是在執行main方法之前會先載入類,發現Test繼承Base類,所有先載入Base類,再載入Test類。載入類的時候執行靜態程式碼塊,所以依次輸出animal static、cat static。載入完類後執行main方法,建立物件new Cat(),執行構造器,先執行父類,再執行子類,則依次輸出animal constructor、cat constructor。(構造器在new物件後才會去初始化)


4、靜態導包


  靜態導包指在匯入包前用static修飾,作用是當使用靜態導包後,引用匯入類的方法(變數)時,可以不用XXX=類名.方法,直接XXX=方法();(變數也是一樣);
但是有一個缺點,如果頻繁使用靜態導包,會降低程式碼可讀性。並且如果匯入的不同類有相同方法名(或變數名),可能會衝突。

相關推薦

static關鍵字基本用法

此文章轉載自程式設計師大佬 : 訪問原文章可點選 1、修飾成員變數:   在一個person類中,一個成員變數例如 String name,當new2個person()物件時候,這2個物件在堆的位置是不同的,給name賦值張三、李四,這兩個物件的  name是互

static關鍵字用法

 1、修飾成員變數:  在一個person類中,一個成員變數例如 String name,當new2個person()物件時候,這2個物件在堆的位置是不同的,給name賦值張三、李四,這兩個物件的  name是互相不影響的。  當用static修飾時,例如static String name,這個變數是存在靜

Java static關鍵字用法

static關鍵字,是我們在java開發中必須掌握的關鍵字之一,不同的關鍵字有著不同的作用,在適合的環境下運用可以,可以提高程式的執行效能,優化程式的結構。 靜態成員的使用“類名.靜態成員”

TCP/IP計時器、慢啟動、擁塞避免、快速重傳、快速恢復

持續計時器 假設一種場景:A給B傳送資料,如果B告訴A自己的緩衝區已滿,於是A停止傳送資料,等待一段時間後,B的緩衝區出現了富餘,於是給A傳送報文告訴rwnd大小為400,但是這個報文不幸丟失了,於是就出現A等待B的通知,B等待A傳送資料的死鎖狀態,為了處理這

static ,final 關鍵字的作用

一 、java中的關鍵字static 是在編寫程式碼和閱讀程式碼時碰到的比較難以理解的一個關鍵字,在平常的面試當中也是面試官常問到的一個問題,下面 就 static 關鍵字 講解三點它常見的問題  1、static關鍵字的用途 在《Java程式設計思想》P86頁有

一下web移動端基本

5.5 相關 過程 部件 位圖 都是 3.5 柵格 開發 屏幕尺寸、屏幕分辨率、屏幕像素密度 屏幕尺寸: 指屏幕的對角線的長度,單位是英寸,1英寸=2.54厘米。 常見的屏幕尺寸有2.4、2.8、3.5、3.7

var 關鍵字

簡潔 混淆 list() 是否一致 運行機制 private 靜態類型語言 技術支持 som 提起 var關鍵子,程序員的第一反應就是JavaScript, 事實上這個關鍵子在其他語言中也有被采用。 比如說C#, 比如說kotlin, 用法和JavaScript中使

OAuth2 RFC 6749 規範提供的基本認證方案

amp 通過 rfc bsp nbsp ken server 服務 optional OAuth2 RFC 6749 規範提供了四種基本認證方案,以下針對這四種認證方案以及它們在本實現中的使用方式進行分別說面。第一種認證方式: Authorization Code Gr

@GeneratedValue 標準用法為TABLE,SEQUENCE,IDENTITY,AUTO

body string 策略 gen 序列 jpa 數據庫 自動生成 目錄 一、JPA通用策略生成器 JPA提供四種標準用法,由@GeneratedValue的源代碼: @Target({METHOD,FIELD}) @Retention(RUNT

BloomFilter【上】基本概念和實現原理

pty 是否 的人 它的 構建 網絡爬蟲 ace head filters ? ??在日常生活中。包括在設計計算機軟件時,我們常常要推斷一個元素是否在一個集合中。

簡述擁塞控制的基本算法

OS 發送數據 clas 首部 未收到 連接建立 net 做的 判斷 losbyday 一名熱愛開源、樸實的搬運工 TCP/IP詳解--擁塞控制 & 慢啟動 快恢復 擁塞避免 TCP的擁塞控制 1. 擁塞:即對資源的需求超過了可用的資源。若網絡中

函數的基本類型

應用 enum menu cti clas comment 情況下 calc ram 4種函數的類型 函數根據有沒有參數,有沒有返回值,可以相互組合,一共有4種 無參數,無返回值 無參數,有返回值 有參數,無返回值 有參數,有返回值 <1>無參數,無返回值的

static 和 final

Static Static系統快取作用,只會初始化一次,無須多次new。 Static不能修飾區域性變數。 靜態變數被全域性物件共有,當且僅當類被初次載入時初始化,在記憶體中只有一個副本。 靜態方法無法呼叫非靜態的成員和方法。 Static 程式碼塊用於優化效能,把只需要初始化一次的程式碼放入sta

資料庫(

** 淺談資料庫(四) ** ** ``` 1、外來鍵(foreign key) 1、定義 :讓當前表的欄位值在另一張表的範圍內去選擇 2、語法格式 foreign key(參考欄位名) references 主表(被參考欄位名) on delet

Spring的兩配置容器

簡單的 url 上下 rip 快的 png getbean 比較 file 淺談Spring的兩種配置容器 原文:https://www.jb51.net/article/126295.htm 更新時間:2017年10月20日 08:44:41 作者:黃小魚Z

iOS中Runtime的幾基本用法記錄(必看)

Runtime顧名思義執行時,就是系統在執行的時候的一些機制,最主要的是訊息機制。下面這篇文章主要給大家介紹了關於iOS中Runtime的幾種基本用法,文中通過示例程式碼介紹的非常詳細,需要的朋友下面隨著小編來一起學習學習吧 Runtime 介紹 這不是一遍介紹關於Runtime實現

android基本動畫效果使用

1.點選下載 上圖: 包括基礎的動畫 透明度、放大縮小、平移、旋轉、組合動畫、閃爍、彈跳動畫 1.透明度 final Animation alphaAniamtion = new AlphaAnimation(1.0f,0); alphaAniamtion

http協議六請求方法,get、head、put、delete、post、options區別

原帖:https://www.cnblogs.com/wei-hj/p/7859707.html 標準Http協議支援六種請求方法,即: 1、GET 2、POST 3、PUT 4、Delete 5、HEAD 6、Options 但其實我們大部分情況下只用到了GET和P

技本功丨MySQL的七

作者:宋丹琪(花名:三思)袋鼠云云服務部DBA團隊 資料庫工程師 時常會有開發的同學突然緊張兮兮地找我, 然後丟給我一個程式碼層面的 CannotAcquireLockException的報錯, 一臉無辜地問我是不是自己搞出了一個死鎖。 好像大家看到LOCK的字眼 總會第一時間想到

Javascript 的 this的常用用法

this是 JavaScript 語言的一個關鍵字。 它是函式執行時,在函式體內部自動生成的一個物件,只能在函式體內部使用。 總的來說,this就是函式執行時所在的環境物件 一:純粹的函式呼叫 這是函式的最通常用法,屬於全域性性呼叫,因此this就代表全域性物件 v