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