static與非static的區別
1. static 修飾的變數稱為類變數或全域性變數或成員變數,在類被載入的時候成員變數即被初始化,與類關聯,只要類存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件繫結的,該成員變數僅為當前物件所擁有的。
2. static修飾的變數在載入的時候先於main方法載入在記憶體中的資料共享區-------方法區,而非static的變數在載入的時候,是要建立變數才載入在堆記憶體中的。
3. 一個static變數單獨劃分一塊儲存空間,不與具體的物件繫結在一起,該儲存空間被類的各個物件所共享。static變數值在方法區載入一次,而非static在建立物件時會載入很多次。每次建立都會拷貝一份。4. 物件在引用成員變數是直接通過類名.變數名呼叫,物件在引用例項變數時只能通過物件名.變數名呼叫。
5. 在類中呼叫成員變數時直接呼叫或者以類名.變數名方式呼叫,例項變數則用this或者直接呼叫。
關於static方法和非static方法的區別1. static修飾的方法也和static一樣。先於main方法被載入到方法區,以便共享使用。
2. 靜態的static方法中不能使用this或者super關鍵字,因為static方法是先於物件建立之前就已經載入的方法,是屬於類的方法,而this和super指向的是本類的物件或者父類的物件,非靜態的方法是屬於物件的,方法裡可以用this和super。
3. static方法可以用物件.方法名來呼叫,也可以用類名.方法名來呼叫。而非靜態的方法只能建立物件後時呼叫。
4. static方法是載入一次,被所有的物件所共享。而非靜態方法是有多少個物件就拷貝多少次,每個物件只能呼叫自己的拷貝的方法。
5. 物件呼叫非靜態的方法時,不考慮執行緒安全性的問題,而呼叫靜態方法時,要考慮安全性的問題。因為靜態方法只有一份。而物件的方法是自己有自己的。
6. 同一個類中,靜態方法中只能訪問類中的靜態成員。而非靜態方法可以訪問非靜態的方法(使用類名呼叫,或者創建立本類的物件呼叫)。
相關推薦
static與非static的區別
關於static和非static變數的區別。1. static 修飾的變數稱為類變數或全域性變數或成員變數,在類被載入的時候成員變數即被初始化,與類關聯,只要類存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件繫結的
static關鍵字詳解——static與非static的區別
在本篇部落格中,我主要會講兩個方面的內容,第一個是例項變數與類變數的區別,第二個是例項方法與類方法的區別。大家應該都知道,用static修飾的方法是類方法,用static修飾的變數是類變數。 1.例項變數與類變數的區別 一個類通過使用new關鍵字
類鎖和對象鎖,synchronized修飾static方法與非static方法的區別
ati nbsp 的區別 一個 靜態方法 範圍 之間 對象 ron 當synchronized修飾一個static方法時,多線程下,獲取的是類鎖(即Class本身,註意:不是實例), 作用範圍是整個靜態方法,作用的對象是這個類的所有對象。 當synchro
多執行緒下synchronized修飾static方法與非static方法的區別
一直對多執行緒的概念比較模糊,今天就寫了個關於變數原子操作的小程式,好讓自己加深一下理解 程式碼如下: package atomic; public class JoinThread extends Thread {
類鎖和物件鎖,synchronized修飾static方法與非static方法的區別
類鎖和物件鎖,synchronized修飾static方法與非static方法的區別 當synchronized修飾一個static方法時,多執行緒下,獲取的是類鎖(即Class本身,注意:不是例項
static方法與非static方法之間區別和呼叫的時機
static方法是屬於類,可以通過類名直接呼叫,非static方法是屬於物件的,如果static方法在沒有建立物件時呼叫非static方法是不成立的,因為非static方法只能通過物件來呼叫。非static方法 所有物件都有自己一套非static方法static方法,是所
static 靜態方法 有什麼優缺點 PHP中靜態方法(static)與非靜態方法的使用及區別
static方法是類中的一個成員方法,屬於整個類,即使不用建立任何物件也可以直接呼叫! 靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷燬,而例項化的則可以做銷燬。 靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。 C
【Java】之static靜態方法與非static靜態方法區別
span get nbsp ati pub public ring spa 靜態方法 1、A.class:沒有static public class A { public String getText(){ } B.class調用A的方法
預處理、const、static與sizeof-static全局變量與普通的全局變量有什麽區別
stat 結果 使用範圍 const 有效 源程序 調用 由於 當前 1:全局變量的說明之前再加上static就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別在於,非靜態全局變量的作用域是整個源
Java 靜態(static)與非靜態執行順序
Java中的靜態(static)關鍵字只能用於成員變數或語句塊,不能用於區域性變數 static 語句的執行時機實在第一次載入類資訊的時候(如呼叫類的靜態方法,訪問靜態成員,或者呼叫建構函式), static 語句和 static 成員變數的初始化會先於其他語句執行,而且只會在載入類資訊的時候執行一次,以後
Java的static方法與非static方法
生命週期(Lifecycle): 靜態方法(Static Method)與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體(Memory),不自動進行銷燬,會一直存在於記憶體中,直到JVM關閉。 非靜態方法(Non-Static Method)又
java回顧篇——static和非static的區別
關於static和非static變數的區別。 1. static 修飾的變數稱為類變數或全域性變數或成員變數,在類被載入的時候成員變數即被初始化,與類關聯,只要類存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件繫
static和非static的區別
那天面試,沒有答出來,很可惜,但是還是拿到了offer,在此做一個總結,希望你們看到能夠受用。● 生命週期(Lifecycle):靜態方法(Static Method)與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體(Memory),不自動進行銷燬,會一直存在於記憶體中,直到JVM關閉。非靜態方
預處理、const、static與sizeof-static有什麽作用(至少說出2個)
con 限制 變量 全局 什麽 -s eof 這一 不能 1:在C語言中,關鍵字static有3個明顯的作用: (1)在函數體,一個被聲明為靜態的變量在這一函數被調用的過程中維持其值不變。 (2)在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所有的函數訪問,但
static、非static執行順序以及super
package com.huashen.ni;public class Children extends Father { //father沒寫,給這程式碼差不多 static { System.out.println("Children 靜
java static 方法與普通方法區別
對象 static 方法區 修改 需要 總結 資源 其他 一個 static 方法不需要實例化,靜態方法在JVM剛加載的時候就編譯過了.在程序的運行過程中隨時可以調用,不需要去實例化某個對象然後再去調用,可以直接用類名去調用,直到結束釋放內存,且靜態方法只能調用類靜態變量
在java中public void與public static void區別
sta erro ati 對象 方法 這樣的 調用 必須 靜態方法 static 方法可以被main方法直接調用,而非static方法不可以。因為static方法是屬於類的,是類方法。可以通過類名.方法名直接調用。而非static方法必須等對象被new出來以後才能使用,因而
預處理、const、static與sizeof-使用const與#define的特點及區別
特點 周期 sizeof 傳遞 const常量 fin 參數 編譯器 run 1:#define只是用來做文本替換的。例如: #define PI 3.1415926 float angle; angle=30*PI/180; 那麽,程序進行編譯的時候,編譯器會
public void與public static void區別
pub add 資源 我們 普通 link bsp 圖片 區別 我們換個簡單易懂的說法,這兩句的區別就在於,能不能直接用類名訪問。 很好理解的不是嗎? 假如,我有一個類,如下圖所示: 接下來先實例化一個對象,ca,你會發現它不僅可以訪問普通的方法,也可以訪問靜態的方法
C++(static使用注意,和非static區別) C++(static使用注意,和非static區別)
轉 C++(static使用注意,和非static區別) C++類中的static 在C++中有靜態成員變數和靜態成員函式,要注意,在C++類和物件的概念中,先有類,才有物件。因為static型的成員函式和成員變數是在類產生的時候分配的記憶體,產生於物件之前,故不能再stati