1. 程式人生 > >Java中關於 靜態成員變數 在JVM中的儲存位置

Java中關於 靜態成員變數 在JVM中的儲存位置

和朋友討論了一下java中變數的儲存位置.成員方法中的區域性變數,儲存在記憶體棧(stack)區,而且,區域性變數不允許有任何修飾符. 成員變數的型別又分為靜態和非靜態的變數.靜態成員變數不屬於任何物件,它被該類的所有物件所共享.                  

非靜態的成員變數,儲存在記憶體堆(heap)區,靜態的成員變數儲存在記憶體棧區.             

關於成員方法,非靜態方法有和靜態方法的區別:非靜態方法有一個隱含的傳入引數,該引數是JVM給它的,這個隱含的引數就是大家熟知的this指標(指向當前物件).   而靜態方法無此隱含引數,因此也不需要new物件,只要class檔案被類載入器載入JVM的stack,該靜態方法即可被呼叫。

相關推薦

java靜態成員變數和非靜態成員變數的區別

2 靜態成員變數值是所有類的例項共享的,所以呼叫的時候只需要  類名.屬性名  就可呼叫(也只能這樣呼叫),而非靜態成員變數的值是各個例項私有的,所以呼叫的時候必須是先有具體的類的例項,然後通過例項名來呼叫。也就是說,static修飾的成員,大家用的時候都用的一

Java靜態成員變數靜態程式碼塊,靜態內部類何時被初始化?

關於這個問題,本文不扯理論,直接上程式碼,通過結果來驗證結論,廢話少說,測試程式碼如下: public class StaticTest { public static StaticMember staticMember = new Static

JAVA靜態成員變數的相關使用

package com.SortfGrowingup; //各位前輩,我是新人學習Java剛剛接觸靜態成員變數在類中如何使用,自己整理的心得。 //希望各位前輩不要笑話我,有什麼理解不到位的地方給我留言糾正一下。蟹蟹{^_^) //ps17.6.8___今天才發現,在

C++靜態成員變數靜態成員函式的用法

昨天在修改專案函式功能時,在其中一個類中添加了一個靜態成員變數和兩個靜態成員函式,結果在連結時出現一個非常典型的錯誤:“The following symbols referenced in processor “p0” could not be resolve

Spring 靜態成員變數的注入,以及其他靜態成員變數的單例延遲載入--查漏補缺

Spring對於一個需要自動注入的類,首先應該在類上加入註解:@compone   或者@seveice等等。 由於對於靜態成員變數,直接加@Value("xxxxx")是無法獲取值的,執行時是在其

Java關於 靜態成員變數JVM儲存位置

和朋友討論了一下java中變數的儲存位置.成員方法中的區域性變數,儲存在記憶體棧(stack)區,而且,區域性變數不允許有任何修飾符. 成員變數的型別又分為靜態和非靜態的變數.靜態成員變數不屬於任何物件,它被該類的所有物件所共享.                   非靜態的

javastatic關鍵字的使用--靜態成員變數

一、修飾成員變數 沒有被static修飾的成員變數,叫做例項變數。 被static修飾的成員變數,稱為靜態成員變數,也叫做類變數 特點: 所有物件共享靜態成員變數。 可以使用類名直接呼叫。(使用物件名仍能呼叫) 二、使用 package com.key

java 類初始化,構造方法,靜態成員變數靜態塊的載入順序

1、編譯和執行概念要搞清:編譯即javac的過程,負責將.java檔案compile成.class檔案,主要是型別、格式檢查與編譯成位元組碼檔案,而載入是指java *的過程,將.class檔案載入到記憶體中去解釋執行,即執行的時候才會有載入一說。 2、類的載

C++靜態成員變數,全域性類物件,單例模式

前段時間要實習一個充值介面,建立了一個類(就叫類A好了),這個類A要和另外3個類進行互動,3個類對類A修改的資料是對其他類可見的。這種情況我想到了3個方法: 1.static 靜態成員,靜態成員為該類的所有例項所共享,3個類中各自建立一個類A的物件,它們對靜態成員的修改對其他類可見。 2.全

Java靜態成員類及靜態內部類的Builder模式構建物件、靜態內部類構建單例模式

一、什麼是巢狀類 巢狀類是指被定義在另一個類的內部的類。巢狀類存在的目的應該只是為他的外圍類提供服務。如果巢狀類將來可能會用於其他的某個環境中,它就應該是頂層類。巢狀類有四種:靜態成員類、非靜態成員類、匿名類和區域性類。除了第一種之外,其他三種被稱為內部類。

Spring注入static靜態成員變數會導致空指標異常問題及解決方案

首先,,按照常規的注入,,我們會直接在需要注入的物件上加註解@Autowired,,,執行服務的的時候,,,就會出現呢空指標異常java.lang.NullPointerException,,異常的原因是 靜態變數/類變數不是物件的屬性,而是一個類的屬性,spring則是基於

沒有躲過的坑--類靜態成員變數(static or const static)

工作中是這樣的,A類中有一個成員變數x,最開始宣告為私有: class A{ private: int x; }; 現在需要在另一個cpp中使用這個x,所以要把它變為共有並且靜態: class A{ public: static int

static靜態程式碼塊靜態成員變數賦值坑

public class testdemo { private static final String name; static { name = "string"; try { // name="stri

靜態成員函式不可以訪問類成員變數

原因:因為靜態成員函式在類物件構造時沒有分配this指標(非靜態成員函式則具有this指標),相當於是全域性函式,是屬於類的,而類的成員變數只有類物件(例項)能夠訪問,成員變數只有例項化才有意義。 解決辦法:靜態成員函式增加一個類的指標或引用作為引數。如

java靜態成員與非靜態成員之間的訪問關係

轉載地址:http://blog.csdn.net/zhouwubin123/article/details/6623308 程式最終都將在記憶體中執行,變數只有在記憶體中佔有一席之地時才能被訪問。 類的靜態成員(變數和方法)屬於類本身,在類載入的時候就會分配記憶體,可以

關鍵字static的作用是什麼? C++類靜態成員變數靜態成員函式的作用

關鍵字static的作用是什麼? 本題目轉自《面試寶典》 1,函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體 只被分配一次,因此其值在下次呼叫時,仍維持上次的值; 2,在模組內的static全域性變數可以被模組內所有的函式訪問,但不能被模

Java靜態成員的初始化

//: initialization/StaticInitialization.java// Specifying initial values in a class definition./* *   2018年3月20日10:09:27 *   程式碼位置: java

lib定義的靜態成員變數不一定唯一

  今天偶然間遇到一個BUG,我主工程和一個DLL工程同時使用了同一個lib中的靜態成員變數。除錯過程中就發現靜態成員變數賦值後,到DLL中竟然沒有值。   後來發現原來主工程和DLL工程有各自生成了一個靜態成員變數,導致和預想的執行效果不一致,我想可能與主工程和DLL工程

MFC C++類靜態成員變數靜態成員函式的作用

資料成員可以分靜態變數、非靜態變數兩種.  靜態成員:靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名+靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員..因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜態的

Java基礎知識】Java介面成員變數為何必須是public static final

一、Java介面中的成員變數為何必須是public static final 介面中的成員變數只有一種型別,public static final ,所以可以直接省去修飾符。 為什麼介面的變數修飾符必須是public static final 型別呢? ①