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=方法();(變數也是一樣);
但是有一個缺點,如果頻繁使用靜態導包,會降低程式碼可讀性。並且如果匯入的不同類有相同方法名(或變數名),可能會衝突。

參考文章:https://www.cnblogs.com/dolphin0520/p/3799052.html        https://www.cnblogs.com/dotgua/p/6354151.html?utm_source=itdadao&utm_medium=referral        http://blog.csdn.net/qq_17864929/article/details/48006835

相關推薦

Java static關鍵字用法

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

static關鍵字基本用法

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

static關鍵字用法

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

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

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

[java]static關鍵字用法

在java的關鍵字中,static和final是兩個我們必須掌握的關鍵字。不同於其他關鍵字,他們都有多種用法,而且在一定環境下使用,可以提高程式的執行效能,優化程式的結構。下面我們先來了解一下static關鍵字及其用法。 static關鍵字 1.修飾成員變數 在我們平時的使用當中,static最常用的功能就是

static關鍵字用法

在java的關鍵字中,static和final是兩個我們必須掌握的關鍵字。不同於其他關鍵字,他們都有多種用法,而且在一定環境下使用,可以提高程式的執行效能,優化程式的結構。下面我們先來了解一下static關鍵字及其用法。static關鍵字1.修飾成員變數在我們平時的使用當中,

c#委託的用法及lambda匿名委託

c#委託是一個類,可以定義一種方法型別,將有這種型別的函式當做引數進行傳遞,即他是一個可以把方法作為引數的類。 這裡通過一個小功能分別說明一下c#委託(delegate、Action、Func、predicate)的用法。 如下圖所示: Form1窗體

[java]static關鍵字用法和void的用法

void關鍵字表示函式沒有返回結果,是java中的一個關鍵字。Void作為函式的返回結果表示函式返回null(除了null不能返回其它型別)。在java的關鍵字中,static和final是兩個我們必須掌握的關鍵字。不同於其他關鍵字,他們都有多種用法,而且在一定環境下使用,可

C# this關鍵字用法

end 復制代碼 replace 原始類型 catch 擴展 取數據 convert exec 用法一 this代表當前類的實例對象 namespace Demo { public class Test { private string

static ,final 關鍵字的作用

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

C語言const關鍵字用法

#include <stdio.h> /* gcc中,const是通過編譯器在編譯的時候執行檢查來確保實現的(也就是 說const型別的變數不能改是編譯錯誤,不是執行時錯誤。)所以

mmap()和ioremap()的用法與區別

12只 設備 gpa 我們 之間 mmap ioremap shared set 一、mmap()mmap()函數是用來將設備內存線性地址映射到用戶地址空間。(1)首先映射基地址,再通過偏移地址尋址;(2)unsigned char *map_cru_base=(unsig

mysql中模糊查詢的用法介紹

包含 如果 正則 搜索 name 模糊查詢 長度 use mysql 下面介紹mysql中模糊查詢的四種用法: 1,%:表示任意0個或多個字符。可匹配任意類型和長度的字符,有些情況下若是中文,請使用兩個百分號(%%)表示。 比如 SELECT * FROM [user] W

var 關鍵字

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

JS中this的用法

syn pac copy title pan 復制 comment test code 1.在一般函數方法中使用 this 指代全局對象 1 2 3 4 5 function test(){     this.x = 1;     alert(this.

css常用偽類用法

ext checked 如何 元素 splay -a AR margin checkbox 著重寫一下after和before的用法:   如何變成 上面的目錄結構是jsTree生成的,我們知道後邊是沒有標記的,如何生成呢? 很簡單,只有css樣式就可以搞定:標簽元素+偽類

c++中for的用法

四種 mes pre using In col space c++ names #include <algorithm> #include <vector> #include <iostream> using namespace

QMessageBox 的用法

void MainWindow::on_info_clicked() { //info QMessageBox::information(this, "Title", "Text"); } void MainWindow::on_question_clicked() { //ques

static 和 final

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

資料庫(

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