java中靜態變數和成員變數的區別
所屬不同:
靜態變數屬於類,所以也稱為為類變數;成員變數屬於物件,所以也稱為例項變數(物件變數)
在記憶體中位置不同:
靜態變數儲存於方法區裡的靜態區;成員變數儲存於堆記憶體區
在記憶體中出現的時間不同:
靜態變數隨著類的載入而載入、隨著類的消失而消失;
成員變數隨著物件(也叫例項)的建立而存在,隨著物件的消失而消失。
呼叫方式不同:
靜態變數可以通過類名呼叫,也可以通過物件呼叫; 成員變數只能通過物件名呼叫。
------------------
在靜態方法中是沒有this關鍵字的,如何理解呢?
靜態變數是隨著類的載入而載入,this是隨著物件的建立而存在。靜態先於物件存在。
靜態方法只能訪問靜態的成員變數和靜態的成員方法。
非靜態方法,既可以呼叫靜態的成員變數也可以呼叫非靜態的成員變數;
非靜態方法既可以呼叫靜態的成員方法,也可以呼叫非靜態的成員方法。
相關推薦
java中靜態變數和成員變數的區別
所屬不同:靜態變數屬於類,所以也稱為為類變數;成員變數屬於物件,所以也稱為例項變數(物件變數)在記憶體中位置不同:靜態變數儲存於方法區裡的靜態區;成員變數儲存於堆記憶體區在記憶體中出現的時間不同:靜態變
Java中靜態常量和靜態變數的區別
如下:測試java中靜態常量和靜態變數區別的樣例,表明兩者載入時的區別。StaticClass類中定義了靜態常量FIANL_VALUE和靜態變數VALUE,靜態程式碼塊的列印語句表示類被載入:publi
JAVA基礎(44)---區域性變數和成員變數的區別及封裝
成員變數和區域性變數的區別
JAVA基礎(45)---區域性變數和成員變數的區別及封裝
成員變數和區域性變數的區別 1、在類中的位置不同
(轉載)Java中字串常量和字串變數的區別
https://blog.csdn.net/u010617952/article/details/51781319 ava中字串物件建立有兩種形式,一種為字面量形式,如String str = "droid";,另一種就是使
8_物件建立、static 關鍵字、靜態變數和成員變數的區別、文件
一、物件建立 Student s = new Student(); 步驟: (1)載入 Student.class 檔案進記憶體; (2)在棧記憶體中為 s 開闢空間; (3)在堆記憶體為學生物件開闢空間; (4)對學生物件的成員變數進行預設初始化; (5)對學生物件的成員變數進行顯示初始化
Java中字串常量和字串變數的區別
ava中字串物件建立有兩種形式,一種為字面量形式,如String str = "droid";,另一種就是使用new這種標準的構造物件的方法,如String str = new String("droid");,這兩種方式我們在程式碼編寫時都經常使用,尤其是字面量的方式。
java中靜態類和靜態變數和靜態方法分別有什麼特點?
一、static 請先看下面這段程式:public class Hello{ public static void main(String[] args){ //(1) System.out.println("Hello,world!"); //(2
java中的遞迴——成員變數,區域性變數,靜態變數
在java的遞迴過程中,涉及到三種變數,例項成員變數,區域性變數,靜態變數。成員變數和區域性變數一樣,都會隨著函式遞迴呼叫而進棧,而靜態變數就相當於c語言中的全域性變數,函式在遞迴過程中呼叫的全域性變數始終是同一個。 package com.algorithm.tree;
Java中的static和volatile變數的區別?
在java中宣告一個靜態變數,意味著只有一個副本,無論建立了多少個類的物件,即使沒有建立物件,變數也可以訪問,但是執行緒可能具有本地快取的值。 當變數volatile而不是靜態時,每個object都有一
java中靜態方法和非靜態方法的區別
靜態方法和非靜態方法主要有兩個區別: 1.在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。 2.靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而
java中靜態資源和動態資源的區別
靜態資源:html,屬於客戶端 動態資源:jsp/servlet屬於伺服器端 一、靜態web頁面: 1、在靜態Web程式中,客戶端使用Web瀏覽器(IE、FireFox等)經過網路(Network)連線到伺服器上,使用HTTP協議發起一個請求(Request),告訴
Java學習筆記——區域性變數和成員變數
區別 1.定義的位置不一樣 區域性變數在方法的內部 成員變數在方法的外部,直接寫在類當中 2.作用範圍不一樣 區域性變數只有在方法中才能用,出了方法就不能用了 成員變數整個類都能用 3.預設值不一樣 區域性變數沒有預設值,如果想要使用,必須手動賦值 成員變數有預設值 4.記憶體的位置不一樣
執行緒中全域性變數和成員變數
線上程中,run方法中呼叫的變數不同,那麼程式執行的結果也不同,變數屬於成員變數還是屬於區域性變數,要處理物件的變數還是方法中的變數會導致結果的差異性。 1)執行緒處理了全域性變數 package
Java 中&&和&的區別
log 不能 if判斷 ava nbsp 第一個 als post body &&時判斷第一個條件為false,後面的條件就沒有進行判斷。 &時要對所有的條件進行判斷,所以會對後面的條件進行判斷。 例如if((1!=1)&&(1/0!
Java中的堆和棧的區別
信息 棧內存 ash 譯文 GC diff ror grep xmx (轉載 技術小黑屋) Java中的堆和棧的區別 DEC 7TH, 2014 當一個人開始學習Java或者其他編程語言的時候,會接觸到堆和棧,由於一開始沒有明確清晰的說明解釋,很多人會產生很
java中接口和繼承的區別
inter pan 比較 TP s/4 定義 http nds 接口 實際概念區別:區別1:不同的修飾符修飾(interface),(extends)區別2:在面向對象編程中可以有多繼承!但是只支持接口的多繼承,不支持‘繼承‘的多繼承哦而繼承在java中具有單根性,子類只能
java中的sleep()和wait()的區別
except 的區別 獲取對象 waiting 區別 ace enter thread .html 引自:https://www.cnblogs.com/hongten/p/hongten_java_sleep_wait.html 對於sleep()方法,我們首先要知道該方
java中.equals()方法和==號的區別
主方法要進棧 ==號和equals()方法都是比較是否相等的方法,那它們有什麼區別和聯絡呢? 首先,==號在比較基本資料型別時比較的是值,而用==號比較兩個物件時比較的是兩個物件的地址值,實際上.equals()方法比較的就是相當於把變數進行打包,就是比較包裡面的內容: int
舉例說明java中抽象類和介面的區別
先定義一個介面: 介面中定義了兩個方法,現在定義一個普通類實現這個介面: 這時候發現報錯了,以前只知道實現介面必須實現其中的方法,卻不知道為什麼要實現。最近才瞭解到: 如果一個類繼承了某個抽象類或者實現了某個介面都需要對其中的抽象方法進行實現,否則該類需要被宣告為