變量與方法
成員變量與局部變量的區(qū)別有哪些
變量:在程序執(zhí)行的過程中,在某個范圍內(nèi)其值可以發(fā)生改變的量。從本質(zhì)上 講,變量其實是內(nèi)存中的一小塊區(qū)域 成員變量:方法外部,類內(nèi)部定義的變量 局部變量:類的方法中的變量。 ??成員變量和局部 變量的區(qū)別
作用域
成員變量:針對整個類有效。
局部變量:只在某個范圍內(nèi)有效。 ?(一般指的就是方法,語句體內(nèi))
存儲位置
成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失,存儲在堆內(nèi)存中。
局部變量:在方法被調(diào)用,或者語句被執(zhí)行的時候存在,存儲在棧內(nèi)存中。當方法調(diào)用完,或者語句結(jié)束后,就自動釋放。
生命周期
成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
局部變量:當方法調(diào)用完,或者語句結(jié)束后,就自動釋放。
初始值
成員變量:有默認初始值。
局部變量:沒有默認初始值,使用前必須賦值。
使用原則
在使用變量時需要遵循的原則為:就近原則 首先在局部范圍找,有就使用;接著在成員位置找。
在Java中定義一個不做事且沒有參數(shù)的構(gòu)造方法的作用
Java程序在執(zhí)行子類的構(gòu)造方法之前,如果沒有用super()來調(diào)用父類特定的構(gòu) 造方法,則會調(diào)用父類中?“沒有參數(shù)的構(gòu)造方法”。因此,如果父類中只定義了 有參數(shù)的構(gòu)造方法,而在子類的構(gòu)造方法中又沒有?用super()來調(diào)用父類中特定 的構(gòu)造方法,則編譯時將發(fā)生錯誤,因為Java程序在父類中找不到?jīng)]有參數(shù)?的構(gòu)?造方法可供執(zhí)行。解決辦法是在父類里加上一個不做事且沒有參數(shù)的構(gòu)造方法。
在調(diào)用子類構(gòu)造方法之前會先調(diào)用父類沒有參數(shù)的構(gòu)造方法,其目的是?
幫助子類做初始化工作。
一個類的構(gòu)造方法的作用是什么?若一個類沒有聲明構(gòu)造方法,改程序能正確執(zhí)行嗎?為什么?
主要作用是完成對類對象的初始化工作。可以執(zhí)行。因為一個類即使沒有聲明構(gòu) 造方法也會有默認的不?帶參數(shù)的構(gòu)造方法。
構(gòu)造方法有哪些特性?
名字與類名相同;
沒有返回值,但不能用void聲明構(gòu)造函數(shù);
生成類的對象時自動執(zhí)行,無需調(diào)用。
靜態(tài)變量和實例變量區(qū)別
靜態(tài)變量: ??靜態(tài)變量由于不屬于任何實例對象,屬于類的,所以在內(nèi)存中只會 有一份,在類的加載過程?中,??JVM只為靜態(tài)變量分配一次內(nèi)存空間。
實例變量: ??每次創(chuàng)建對象,都會為每個對象分配成員變量內(nèi)存空間,實例變量 是屬于實例對象的,在內(nèi)?存中,創(chuàng)建幾次對象,就有幾份成員變量。
靜態(tài)變量與普通變量區(qū)別
static變量也稱作靜態(tài)變量,靜態(tài)變量和非靜態(tài)變量的區(qū)別是:靜態(tài)變量被所有 的對象所共享,在內(nèi)存 ?中只有一個副本,它當且僅當在類初次加載時會被初始 化。而非靜態(tài)變量是對象所擁有的,在創(chuàng)建對象?的時候被初始化,存在多個副 本,各個對象擁有的副本互不影響。
還有一點就是static成員變量的初始化順序按照定義的順序進行初始化。
靜態(tài)方法和實例方法有何不同?
靜態(tài)方法和實例方法的區(qū)別主要體現(xiàn)在兩個方面:
1. 在外部調(diào)用靜態(tài)方法時,可以使用"類名.方法名"的方式,也可以使 用"對象名.方法名"的方式。而?實例方法只有后面這種方式。也就是說,調(diào) 用靜態(tài)方法可以無需創(chuàng)建對象。
2. 靜態(tài)方法在訪問本類的成員時,只允許訪問靜態(tài)成員(即靜態(tài)成員變量 和靜態(tài)方法),而不允許訪?問實例成員變量和實例方法;實例方法則無此 限制
在一個靜態(tài)方法內(nèi)調(diào)用一個非靜態(tài)成員為什么是非法的?
由于靜態(tài)方法可以不通過對象進行調(diào)用,因此在靜態(tài)方法里,不能調(diào)用其他非靜 態(tài)變量,也不可以訪問?非靜態(tài)變量成員。
什么是方法的返回值?返回值的作用是什么?
方法的返回值是指我們獲取到的某個方法體中的代碼執(zhí)行后產(chǎn)生的結(jié)果!(前提 是該方法可能產(chǎn)生結(jié)?果)。返回值的作用:接收出結(jié)果,使得它可以用于其他的 操作!