Java的內存劃分全解析
Java把內存劃分成兩種:一種是棧內存,一種是堆內存。下面一起來看看java的內存劃分全部內容。
棧內存
存放對象:函數中基本類型的變量和對象的引用變量、靜態類方法
特點:棧有一個很重要的特殊性,就是存在棧中的數據可以共享。假設我們同時定義:
inta=3;
intb=3;
編譯器先處理inta=3;首先它會在棧中創建一個變量為a的引用,然後查找棧中是否有3這個值,如果沒找到,就將3存放進來,然後將a指向3。
接着處理intb=3;在創建完b的引用變量後,因為在棧中已經有3這個值,便將b直接指向3。這樣,就出現了a與b同時均指向3的情況。
堆內存
存放對象:用來存放由new創建的對象和數組。
特點:在堆中分配的內存,由Java虛擬機的自動垃圾回收器來管理。
在堆中產生了一個數組或對象後,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等於數組或對象在堆內存中的'首地址,棧中的這個變量就成了數組或對象的引用變量。
引用變量就相當於是為數組或對象起的一個名稱,以後就可以在程序中使用棧中的引用變量來訪問堆中的數組或對象。
Q:static關鍵字,是一個修飾符,用於修飾成員(成員變量和成員函數),有什麼特點
A:1,想要實現對象中的共性數據的對象共享。可以將這個數據進行靜態修飾。
2,被靜態修飾的成員,可以直接被類名所調用。也就是説,靜態的成員多了一種調用方式。類名.靜態方式。
3,靜態隨着類的加載而加載。而且優先於對象存在。
-
2016年Java認證筆試題及答案
一、單項選擇題是從()語言改進重新設計。B.C++calC答案:B2.下列語句哪一個正確()A.Java程序經編譯後會產生machinecode程序經編譯後會產生bytecode程序經編譯後會產生DLLD.以上都不正確答案:B3.下列説法正確的有()s中的constructor不可省略B.constructor必須與cl...
-
關於JDK5交通燈模擬控制系統
為了方便廣大程序猿交流和學習,下面小編準備了關於JDK5交通燈模擬控制系統,歡迎大家參考!本系統由,,和組成。:packagefic;publicenumLamp{//前進,左拐,右拐S2N("N2S","S2W",false),S2W("N2E","E2W",false),S2E(null,null,true),E2W("W2E","E2S",false),E2S("W2N","S2N",false),E2N(nu...
-
Java高級工程師試題
Sun認證Java程序員考試內容涉及Java所有相關知識、編程概念及applet開發技巧。下面是關於Java高級工程師試題,希望大家認真做題!一、Java基礎1.String類為什麼是final的。2.HashMap的源碼,實現原理,底層結構。3.説説你知道的幾個Java集合類:list、set、queue、map...
-
關於Java堆、棧和常量池的介紹
常量池指在java用於保存在編譯期已確定的,已編譯的class文件中的一份數據。下面小編準備了關於Java堆、棧和常量池的介紹,歡迎大家參考!1.寄存器:最快的存儲區,由編譯器根據需求進行分配,我們在程序中無法控制。2.棧:存放基本類型的變量數據和對象的引用,但對象本身不...