摘要:一引用操縱對(duì)象在的世界里,一切都被視為對(duì)象。特點(diǎn)創(chuàng)建程序時(shí),需要知道存儲(chǔ)在棧內(nèi)所有數(shù)據(jù)的確切生命周期,以便上下移動(dòng)堆棧指針。因?yàn)椋赶蛲粔K內(nèi)存空間除了通過對(duì)象引用靜態(tài)變量,我們還可以通過類直接引用靜態(tài)變量
一、引用操縱對(duì)象
在Java的世界里,一切都被視為對(duì)象。操縱的標(biāo)識(shí)符實(shí)際上是對(duì)象的引用,
例如:遙控器與電視的關(guān)系。
可以在沒有對(duì)象關(guān)聯(lián)的情況下,擁有一個(gè)引用。沒有電視機(jī),也可以擁有遙控器。
eg:
String s1; //此時(shí)創(chuàng)建的只是引用,而不是對(duì)象。
如果此時(shí)向s1發(fā)送一個(gè)消息,會(huì)報(bào)錯(cuò)。因?yàn)閟1實(shí)際上并未與任何事物關(guān)聯(lián)。
安全的做法,創(chuàng)建一個(gè)引用的同時(shí)便進(jìn)行初始化。
String s2 = "qwer";
二、存儲(chǔ)
Java內(nèi)存分配:
寄存器:最快的存儲(chǔ)區(qū),位于存儲(chǔ)器內(nèi)部,無法直接控制,由寄存器根據(jù)需求進(jìn)行分配。
棧:位于RAM(隨機(jī)訪問存儲(chǔ)器)中,通過堆棧指針進(jìn)行操作。指針下移,分配新的空間,指針上移,釋放內(nèi)存。特點(diǎn):創(chuàng)建程序時(shí),需要知道存儲(chǔ)在棧內(nèi)所有數(shù)據(jù)的確切生命周期,以便上下移動(dòng)堆棧指針。
堆:通用的內(nèi)存池,用于存放所有的Java對(duì)象。特點(diǎn):程序不需要知道數(shù)據(jù)在堆中的生命周期。用堆進(jìn)行存儲(chǔ)分配和清理可能會(huì)比用棧進(jìn)行存儲(chǔ)分配更耗時(shí)。
常量存儲(chǔ):直接存儲(chǔ)在程序代碼內(nèi)部。(某些嵌入式系統(tǒng)中,常量存儲(chǔ)在只讀存儲(chǔ)器)
非RAM存儲(chǔ):數(shù)據(jù)完全存儲(chǔ)于程序之外。流對(duì)象和持久化對(duì)象。
三、基本數(shù)據(jù)類型
基本類型 | 大小 | 最小值 | 最大值 | 包裝器類型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 2字節(jié) | 0 | 2^16-1 | Character |
byte | 1字節(jié) | -128 | 127 | Byte |
short | 2字節(jié) | -2^15 | 2^15-1 | Short |
int | 4字節(jié) | -2^31 | 2^31-1 | Integer |
long | 8字節(jié) | -2^63 | 2^63-1 | Long |
float | 4字節(jié) | IEEE754 | IEEE754 | Float |
double | 8字節(jié) | IEEE754 | IEEE754 | Double |
void | - | - | - | Void |
四、static關(guān)鍵字
應(yīng)用場(chǎng)景:
1.只想為某特定域分配單一的存儲(chǔ)空間,而不去考慮究竟要?jiǎng)?chuàng)建多少對(duì)象
2.希望某個(gè)方法不與任何對(duì)象關(guān)聯(lián)
將static關(guān)鍵字放在定義之前,可以在不創(chuàng)建任何對(duì)象的情況下調(diào)用靜態(tài)方法/靜態(tài)變量
eg:
public class StaticTest { @Test public void test() { DemoClass dClass1 = new DemoClass(); DemoClass dClass2 = new DemoClass(); dClass1.staticNum = 2048; System.out.println(dClass2.staticNum); //輸出2048。因?yàn)椋琩Class1.staticNum、dClass2.staticNum指向同一塊內(nèi)存空間 //除了通過對(duì)象引用靜態(tài)變量,我們還可以通過類直接引用靜態(tài)變量 System.out.println(DemoClass.staticNum); StaticIncrement.staticNumIncrement(); System.out.println(DemoClass.staticNum); } } class DemoClass { static int staticNum = 1024; } class StaticIncrement { static void staticNumIncrement() { DemoClass.staticNum++; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68194.html
摘要:方法的基本組成包括名稱參數(shù)返回值方法體方法名和參數(shù)列表唯一的標(biāo)識(shí)出某個(gè)方法。如果返回的類型是,則的作用僅是退出方法否則必須返回正確的返回值包名名字可見性約定以域名反轉(zhuǎn)作為包名,用來劃分子目錄,并且全部小寫。 點(diǎn)擊進(jìn)入我的博客 2.1用引用操縱對(duì)象 盡管一切都看作對(duì)象,但操縱的標(biāo)識(shí)符實(shí)際上是對(duì)象的一個(gè)引用。 String s; // s是一個(gè)String類型的引用, 并沒有任何對(duì)象與其...
摘要:堆棧位于通用隨機(jī)訪問存儲(chǔ)器中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動(dòng),則分配新的內(nèi)存若向上移動(dòng),則釋放那些內(nèi)存。創(chuàng)建程序時(shí),系統(tǒng)必須知道存儲(chǔ)在堆棧內(nèi)所有項(xiàng)的確切聲明周期,以便上下移動(dòng)堆棧指針。 寫在前面 首先我想說的是 Java編程思想——知識(shí)卡片 將是一系列文章,文章的內(nèi)容是我閱讀《Java編程思想》這本書的心得體會(huì),那么我為什么要寫這一系列的文章呢?原因有一...
摘要:類最基本的作用,在于通過類獲取到相應(yīng)的對(duì)象,在向?qū)ο蟀l(fā)送消息時(shí)以期望對(duì)象做某些特定的事情。先導(dǎo)概念引用中一切皆對(duì)象,因此采用一個(gè)指向?qū)ο蟮囊脕聿倏v對(duì)象。對(duì)象可以存活于作用域之外。 歡迎各位讀者關(guān)注我的微信公眾號(hào),共同探討Java相關(guān)技術(shù)。生命不止,學(xué)習(xí)不休! showImg(https://segmentfault.com/img/bVboaBO?w=129&h=129); 也許你慢...
摘要:在中,并沒有對(duì)抽象類和接口的支持。例如,當(dāng)對(duì)象需要對(duì)象的能力時(shí),可以有選擇地把對(duì)象的構(gòu)造器的原型指向?qū)ο螅瑥亩_(dá)到繼承的效果。本節(jié)內(nèi)容為設(shè)計(jì)模式與開發(fā)實(shí)踐第一章筆記。 動(dòng)態(tài)類型語言 編程語言按數(shù)據(jù)類型大體可以分為兩類:靜態(tài)類型語言與動(dòng)態(tài)類型語言。 靜態(tài)類型語言在編譯時(shí)已確定變量類型,動(dòng)態(tài)類型語言的變量類型要到程序運(yùn)行時(shí),待變量被賦值后,才具有某種類型。 而JavaScript是一門典型...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 2320·2021-11-08 13:13
閱讀 1250·2021-10-09 09:41
閱讀 1693·2021-09-02 15:40
閱讀 3193·2021-08-17 10:13
閱讀 2551·2019-08-29 16:33
閱讀 3126·2019-08-29 13:17
閱讀 3137·2019-08-29 11:00
閱讀 3301·2019-08-26 13:40