一.原理、概念
1.面相對象語言的三個核心本質:數據抽象化(data abstraction)、繼承(inheritance)、多態(polymorphism也叫動態綁定dynamic binding)。覆寫(overriding)和重載(overloading),覆寫是子類的方法名、參數與父類的一樣,覆寫引發多態;重載是同一類中相同的函數名,不同的參數(包括個數、類型、位置)
2.static,final,abstract說明:
static用來修飾變量(類變量)。方法(類方法),他們是靜態的、只需加載一次、類公用,類變量定義如用到方法只能是類方法,類方法內用到的變量只能是類變量,因為他們被初始化時成員變量和成員方法還沒有初始化。
final用來修飾變量(不能改變)、方法(不能重載)、類(不能繼承)。
abstract用來修飾方法(只能被重載)、類(只能被繼承),抽象類不一定含有抽象發放;但含有抽象方法的一定為抽象類。
3.在一個文件夾內的兩個.java文件如果沒設package,則編譯器會將兩個文件隸屬的文件夾視為default package,因此他們互為friendly。
4.類無構造函數可自動產生一無參構造函數(default constructor);當有任何構造函數時都不會有default constructor。構造函數調用其他構造函數只能在第一行,故無法調用兩個構造函數(包括父類和子類其他的構造函數)。
5.類的裝載時間:生成一個對象時(裝載整個類);取類變量或類方法時(裝載靜態部分)。
6.生成對象,實現接口。生成對象包括:聲明、實例化、初始化。
二.語法
1.java's lable:仔細看一下文檔你就會發現,JAVA里的標號只能定義循環語句。
label1: for (.....) 是合法的。
break label1;
continue label2;
label2: if (...) 是非法的。
2.轉義字符 轉義字符的意義
\n 換行
\t 橫向跳到下一制表位置
\v 豎向跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜線符"\"
\' 單引號符
\a 鳴鈴
\u****???? 1~4位十六進制數所代表的unicode字符(java)
\*** 1~3位八進制數所代表的ASCII字符(c)
\x** 1~2位十六進制數所代表的ASCII字符(c)
3.三種常用進制表示:0123——八進制 123——十進制 0x123——十六進制。
4.length & length():length使數組的一個變量;length()是String類的一個方法。
5.throw & throws:throw在方法體內引發異常;throws在方法參數表后向上級拋出異常。
6.無限循環:for(;;) 和 while(true){} ,得用break離開。
三.類庫
1.java隨機數:首先利用random()獲得一個隨機浮點數,然后乘以你希望得到的整數的最大值,最后對得到的結果取整。例如你希望得到的整數的最大值是1000,那么你就可以這么寫: int rand = (int) (1000 * Math.random());//Math.random()的輸出范圍是[0,1)。
2.數組的相關操作
a)array的充填
Java標準程序庫中的Arrays中有fill(),將單一數值復制到每個位置
b)array的復制
Java標準程序庫中提供System.arraycopy()的static函數
c)array的比較
Arrays提供重載版的equals(),藉以比較兩個arrays是否相等,能夠處理object和所有基本型別,兩個arrays必須擁有相同個數的元素,而有所有對應元素必須兩兩相等。
d)array元素的比較
有兩種方法:a)【java編程思想e2 P310】實現java.lang.Comparable接口,Comparable只有一個compareTo()方法,覆寫它:x大返回-1
,相等返回0,x小返回1。b)【java編程思想e2 P311】實現java.util.Comparator接口,此接口有compare()和equals()方法,如無必要無需覆
寫equals()方法。
e)array的排序
利用內置的sort函數,可以針對任何primitives array或objects array進行排序。
f)在已排序的array中進行查找
array排序完畢后,可以使用Arrays.binarySearch()快速查找某個元素,在未經排序的array上不能使用binarySearch(),否則結果完全無
法預測,如果array內含多個相同元素,查找動作不保證會搜出其中哪一個元素。
3.容器(containers)
java.lang.Object -> java.util.AbstractCollection & AbstractMap
AbstractCollection -> AbstractList & AbstractQueue & AbstractSet
sop(AbstractCollection);//打印[dog, cat, bird]
sop(AbstractMap);//打印{first=dog, second=cat, third=bird}
四.經驗
1.Java是面向對象的語言,操作幾乎都是在對象之間進行的,一個類的實例如果是(null)的話則不能調用這個實例的方法,否則就會出java.lang.NullPointException錯誤。確定它肯定是不為null的。對于String的這種equals或equalsIgnoreCase的操作常常還可以用下面的方法進行安全操作:用一個確定的不為null的String去與未知的String進行比較。
String str = null;
if (“Hello”.equals(str))
{ System.out.println(“str is Hello”); }
2.java中應用浮點數:http://www-128.ibm.com/developerworks/cn/java/j-jtp0114/index.html。建議:想辦法用整數;或者用BigDecimal類。
3.java中+用于字符串連接和算術運算,char類型在做運算時會先轉換成int類型,所以System.out.println('H'+'a');輸出169。
如果你真想把char連接起來,要怎么辦呢?
1。用Stringbuffer。
StringBuffer buf = new StringBuffer();
buf.append(`H`);
buf.append(`a`);
System.out.println(buf);
2。按照對付int的方法來處理,利用String重載+運算符的特性。
System.out.println("" + `H` + `a`);
3。在JDK5.0里,還可以用格式化輸出。
System.out.println("%c%c", `H`,`a`);
System.out.println(""+'a'+'b'+'c');//前面加一個空串就都按字符串處理。
posted on 2006-06-01 14:42
保爾任 閱讀(211)
評論(0) 編輯 收藏