類和對象
面向?qū)ο蟮某绦蚴菑膶ο髽?gòu)建的. 類是用于創(chuàng)建對象的“模板”. 該類定義對象可以包含的值以及可以對該對象執(zhí)行的操作.
編譯之后,一個類被存儲在文件系統(tǒng)中的'(class-name).class'文件中.
當(dāng)我們要從該類創(chuàng)建第一個對象時,或者當(dāng)我們調(diào)用其一個靜態(tài)函數(shù)時,該類被加載到內(nèi)存中.
在類加載期間,所有類的靜態(tài)變量都被初始化. 還將執(zhí)行在static { ... }塊中定義的操作. 一旦加載了一個類,它將保留在內(nèi)存中,類靜態(tài)變量將不再被初始化.
將類加載到內(nèi)存中后,可以從該類創(chuàng)建對象. 當(dāng)一個對象創(chuàng)建時,它的成員變量被初始化,但靜態(tài)變量不是.
當(dāng)沒有更多的引用對象時,垃圾收集器會銷毀對象并釋放其內(nèi)存,以便可以重用內(nèi)存來保存新的對象.
方法
方法是我們?nèi)绾闻c對象進行通信. 當(dāng)我們調(diào)用或調(diào)用方法時,我們要求對象執(zhí)行一個任務(wù).
我們可以說方法實現(xiàn)對象的行為. 對于每種方法,我們需要給出一個名稱,我們需要定義它的輸入?yún)?shù),我們需要定義它的返回類型.
我們還需要設(shè)置其可見性 (私人,受保護或公開). 如果該方法拋出一個被檢查的異常,那么它也需要被聲明. 它被稱為方法定義 . 方法定義的語法是:
MyClass {
...
public ReturnType methodName ( ParamOneType parameter1 , ParamTwoType parameter2 ) {
...
return returnType ;
}
...
}
可以將任何基本數(shù)據(jù)類型或引用數(shù)據(jù)類型傳遞給一種方法
- 基本類型按值傳遞:這意味著一旦傳入了基本類型,方法中的值和源變量之間就沒有更多的連接:
- 對象類型按引用傳遞: 方法中的值和源變量之是同一個引用
Java SE 5.0為具有可變參數(shù)列表的方法添加了句法支持,這簡化了需要可變數(shù)量參數(shù)的方法的類型安全使用
public void drawPolygon ( Point ... points ) {
// ...
}
線程
任何計算機的CPU都被設(shè)計為在任何給定時間執(zhí)行一個任務(wù),但是我們并行運行多個應(yīng)用程序,并且一切都以完美的一致性運行.
這不僅僅是因為CPU在執(zhí)行計算時速度非常快,這是因為CPU使用了一個聰明的設(shè)備,將時間分成各種任務(wù).
在計算機上調(diào)用的每個應(yīng)用程序或任務(wù)都以進程的形式與CPU關(guān)聯(lián). 因此,CPU管理各種進程,并在每個進程之間來回跳轉(zhuǎn),從而給予其一小部分時間和處理能力.
這種情況發(fā)生得非???以至于正在運行的計算機用戶同時運行進程的錯覺. CPU在進程之間劃分時間的這種功能稱為多任務(wù) .
所以,如果我們在計算機上運行一個Java應(yīng)用程序,我們正在有效地創(chuàng)建一個CPU,CPU占用CPU時間的一小部分.
在Java語法中,這個主進程被稱為守護程序進程或守護程序線程 . 但是,Java走得更遠一些. 它允許程序員將這個守護進程線程分成幾個同時執(zhí)行的多個線程(就像一個CPU),因此為Java應(yīng)用程序提供了一個更精細的多任務(wù)處理功能,稱為多線程 .