java程序設計風格:(類的說明介紹)
Java文件注釋頭
類中開頭處插入如下 注釋
/******************************************************************
*該類功能及特點的描述(例如:該類是用來.....)
*
*
*該類未被編譯測試過。
*
*@see(與該類相關聯(lián)的類):(AnotherClass.java)
*
*
*
*開發(fā)公司或單位:XXX軟件有限公司研發(fā)中心
*
*版權:本文件版權歸屬XXX公司研發(fā)中心
*
*
*@author(作者):XXX
*
*@since(該文件所支持的JDK版本):Jdk1.3或Jdk1.4
*
*@version(版本):1.0
*
*
*@date(開發(fā)日期): 1999-01-29
*
*最后更改日期: 2003-01-02
*
*
*修改人: XXXX
*
*復審人: 張三李四 王五
*
*/
內存管理
伊甸園用來保存新的對象,它就像一個堆棧,新的對象被創(chuàng)建,就像指向該棧的指針在不斷的增長一樣,當伊甸園區(qū)域中的對象滿了之后,JVM系統(tǒng)將要做可到達性測試,主要任務是檢測有哪些對象由根集合出發(fā)是不可到達的,這些對象就可以被JVM回收,并且將所有的活動對象從伊甸園區(qū)域拷到TO區(qū)域,此時一些對象將發(fā)生狀態(tài)交換,有的對象就從TO區(qū)域被轉移到From區(qū)域,此時From區(qū)域就有了對象,這個過程都是JVM控制完成的。
Java 中的析構方法 finalize
對象是使用完了 盡量都賦 為 null
共享靜態(tài)變量存儲空間
不要提前創(chuàng)建對象
........
void f(){
int i;
A a = new A();
//類A的對象a被創(chuàng)建
//在判斷語句之中沒有
//應用過a對象
.....
if(....){
//類A的對象a僅在此處被應用
a.showMessage();
....
}
.....
}
..........
正確的書寫方式為:
void f(){
int i;
.....
if(...){
A a = new A();
//類A的對象a被創(chuàng)建
//應用過a對象
a.showMessage();
}
......
}
JVM內存參數(shù)調優(yōu)
表達式、語句和保留字
非靜態(tài)方法中可引用靜態(tài)變量
靜態(tài)方法不可以引用非靜態(tài)變量
靜態(tài)方法中可 創(chuàng)建 非靜態(tài)變量
調用父類的構造方法必須將其放置子類構造方法的第一行
JAVA核心類與性能優(yōu)化
線程同步:Vector Hashtable
非線程同步: ArrayList HashMap
字符串累加 盡量使用 StringBuffer +=
方法length() 和 length屬性 區(qū)別
IO緩存,讀寫文件優(yōu)化。
類與接口
內部類(Inner Class)是Java語言中特有的類型,內部類只能被主類以外的其他內部類繼承,主類是不能繼承其內部類的,因為這樣就引起了類循環(huán)繼承的錯誤,下面的代碼就是錯誤的。
public class A extends x {
public A(){}
……
Classs x{
…..
}
}
上面的代碼將引發(fā)類循環(huán)繼承的錯誤,這種錯誤在編譯時就會被發(fā)現(xiàn),比較容易發(fā)現(xiàn)和排除。
但是下面例子中的內部類的繼承方式卻是正確的:
class A{
….
public A(){}
……
class X extends Y {
……….
}
calss Y {
……
}
}
什么時候使用繼承,什么樣的繼承是合理的:
1. 現(xiàn)實世界的事物繼承關系,可以作為軟件系統(tǒng)中類繼承關系的依據(jù)。
2. 包含關系的類之間不存在繼承關系。如:主機,外設 ,電腦。 把主機類和外設類作為電腦類的成員就可以了。
3. 如果在邏輯上類B是類A的一種,并且類的所有屬性和行為對類而言都有意義,則允許B繼承A的行為和屬性(私有屬性與行為除外)。