Java內存是如何劃分的
Java具有簡單性、面向對象、分佈式、健壯性、安全性、與可移植性、多線程、動態性等特點。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,靜態隨着類的加載而加載。而且優先於對象存在。
-
計算機二級Java備考習題及答案
練習可以幫助我們加深對知識的記憶和理解,下面是本站小編整理的2017計算機二級Java備考練習題及答案,歡迎學習!備考練習題一1、下列敍述中,錯誤的是______。A、Applet的默認佈局管理器是FlowLayoutB、JApplet中增加構件是加到JApplet的內容面板上,不是直接加到JApp...
-
Java中運算符的使用
導語:計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。下面是java中運算符的使用,一起來學習下吧:算術運算符單目:+(取正)-(取負)++(自增1)--(自減1)雙目:+-*/%(取餘)三目:a>b?true:false説明:當a大於b的時候,為tru...
-
Java創建線程的三種方法
導語:編寫多線程程序是為了實現多任務的併發執行,從而能夠更好地與用户交互。下面是Java創建線程的三種方法,一起來學習下吧:Runnable和Callable的區別(1)Callable規定的方法是call(),Runnable規定的方法是run().(2)Callable的任務執行後可返回值,而Runnable的任務...
-
java與JavaScript語言有何不同
java和JavaScript是兩個不同的語言。那麼這兩個語言有什麼不同呢?下面本站小編帶大家一起來看看詳細內容,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!講個故事:話説很久很久以前,有一個叫網景(Netscape)的,十月懷胎,他生了個兒子,很開興,...