Java学习笔记一和前言
??
??發表在這里的筆記,是我從學習Java開始所記下的筆記,我已經翻閱了無數次,應該說是非常的詳細,我希望對后來的Java學習者能夠有所幫助,我也希望,大家能夠養成記筆記的習慣,這樣可以在需要的時候拿來翻閱,而不至于忘掉知識點之后就無從下手了。
?
開始面向對象的學習
(thinking in java每天看三頁)
1.所謂浮點型就是小數,也叫做實數。
2.強制轉換類型:類型 變量名=(類型)變量名,或者在變量名后面加上f
3.原聲數據類型有八種
4.問題:如何進行粘貼轉換?
5.int a = 1, int b=2; double c =a/b,如果這樣寫結果可以賦值給c但是結果是0.0,所以應該強制類型轉換(double)a.
6.? 取模運算符:%。
7.取模的結果符號永遠與被除數相同。
8.a=a+1,等價于a+=1.
9.b=a++,即先把a的值付給b,a再自增1,b=++a,先將a的值自增1后在將a的值付給b,使我們主觀上常用的做法。
10.java新增了一種條件運算符 (三元運算符),type a=條件 ?結果一;結果二; 即 如果條件是真 則a的值為結果一,為假為結果二。
例如。int a=1<2?3;4;?
11.break? 在for循環中直接跳出循環、
oop 面向對象
12.面向對象包括三大特征 繼承、封裝、多態
13.class 表示我要定義一個類, class后面接類的名字
14.main是一種方法,是整個java程序的入口點
15.方法定義不能嵌套。
16.通過類來生成對象
17.public classperson//定義一個 名字為 person的類
{
????????????????????
?
}
調用方法時要生成類的對象,因為主方法可以調用多個類。
18. 區別成員變量與局部變量,局部變量是定義在方法中的變量,成員變量是定義在類中的變量,相當于主函數
19.局部變量使用前必須初始化,而成員變量可以不用初始化
20.執行的是包含main方法的類
21.類又叫做實例,可以說類生成了對象(object),也可以說類生成了實例。(instance)
22.定義在類中的變量叫做成員變量,定義在方法中的變量叫做局部變量
22.數據在類中稱為屬性或者成員變量,對數據的操縱在類中成為方法。
23.有一個人(類),叫張三(對象),張三的退(數據或屬性)在奔跑(方法)
24.封裝(encapsulation):類包含了數據與方法,將數據與方法放在一個類中就構成了封裝
25八種原生類型外的變量類型,系統默認初值為null;String a,輸出結果為Null
?
?
1.
今天開始學習繼承
2. 牢記super的用法 當在子類的構造函數需要調用父類的構造函數時,使用super(),這樣做,就可以不用遵循系統只能默認調用父類沒有參數的方法,而是使用父類中有參數的方法。當然super(),里面可以加形參(根據具體的父類的構造函數是否需要形參),這條語句必須寫在子類構造函數的第一句; 3.繼承,子類可以繼承父類中的屬性,和方法,即使自身沒有屬性; 4.關于繼承的三點 a).父類有的,子類也有; b).父類沒有的,子類可以增加; c).父類有的,子類可以改變,這叫做方法重寫; 3.super只能使用在構造函數中!!!而且必須是構造函數的第一個語句;! 但是,super. 是可以使用的,而且沒有順序限制,使用在子類的語句中,表示調用父類的某個方法,如super.run,表示在子類中調用父類中run方法,二者是先執行的。這樣做就可以讓子類與父類的語句都執行; 4. Flower rose = new Rose ();,指向誰就會調用誰的方法--意思是生成一個Flower類型的引用指向Rose的對象,父類可以指向子類,而子類不能指向父類,玫瑰是花,但花不是玫瑰! 5. 方法重載是讓類以統一的方式處理不同類型數據的一種手段。Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法,。 方法重載不是多態的一種表現,方法重寫才是!因為它不是面向對象的 6. 我們把實參,稱為 變元,把形參稱為參數,就是方法中定義的 7. 方法返回給調用者的兩種形式 ? 方法通過使用return語句返回,如果方法有一個void類型的返回類型,則在到達花括號之前,可以通過return ; 來提前結束方法; 8. 冒泡排序法原則 for (i = 0; i < 9; i++) for (j = 0;j< 9 - i;j++) { if (array[j] > array[j+1]) { t = array[j]; array [j] = array [j +1]; array[j+1] = t ; 9. Abstract class 抽象類 抽象類的特點:抽象類不能實例化(不能生成對象); 10. Abstract method 抽象方法; 有聲明,無實現(花括號中的語句); 抽象方法定義在抽象類中;以分號結束 11. 但是抽象類中可以包含具體的方法; 12. 抽象方法和抽象類有什么作用呢,不能實現,不能生成對象? 聲明為 abstract 成員可以不包括實現代碼,但只要類中還有未實現的抽象成員(抽象方法),那么這個類就是一個抽象類,抽象類的對象就不能被實例化,通常用于強制繼承類必須實現某一成員.抽象類是必須要派生子類的。并且,如果子類沒有實現抽象基類的所有方法,則子類也成為一個抽象類。 在繼承中的作用; 通常將父類定義為抽象類,并用抽象方法,其目的是為了聲明子類的目的,并將子類系統化,雖然可能不用父子類也可以實現,但是就是為了將程序系統化,目的話,增加程序的可讀性;而父類的作用就是聲明; 13. 接口里的方法都是抽象方法,所以就可以省略掉abstract關鍵字; 14. 類可以實現接口,實現使用implements關鍵字表示; 代表某個類實現了某個接口 15. 一個類實現了某個接口,那么該類必須要實現接口中聲明的所有方法,(同名方法),如果該類是個抽象類,那么就無需實現接口中的方法了; 16.java是單繼承的,也就是說某個類只能有唯一的父類,但是一個類卻可以實現多個接口,接口之間使用逗號隔開 17. 多態中的類型轉換有兩種,一種是向上類型轉換,一種是向下類型轉換, 向上類型轉換不需要強制轉換類型,而向下是需要強制轉換類型的,何謂向上與向下,向上 :即 由子類型轉換為父類型,向下:有父類型轉換為子類型; 這在多態中是常常用到的; 例如 定義父類 Parent? 子類? Child, 在main方法中 向上類型轉換: Child c = new Child (); Parent p = c? (這句是把子類的對象傳遞給父類,當然子類要轉換為父類型的,但是多態中子類轉換為父類時不需要說明的,不許要用到強制) 向下類型轉換: Parent p = new Child (); Child c = (Child) p;很容易理解。將p轉換為子類型之后,才能夠指向子類實例;但是需要進行強制類型轉換; 18. public class Test { ??????????????????????? public static void main (String[] args) ??????????????????????? { ???????????????????????????????????????????????? /*Child child = new Child (); ???????????????????????????????????????????????? Parent parent = child ; ???????????????????????????????????????????????? parent.method (); ???????????????????????????????????????????????? 這就是向上類型引用;????????????????????????????????????????????????? */ ???????????????????????????????????????????????? Parent parent = new Child() ; ???????????????????????????????????????????????? Child child = (Child ) parent; ???????????????????????????????????????????????? child.method ();//兩者的結果是相同的,這是向下類型轉換 ???????????????????????????????????? ???????????????????????????????????????????????? } ???????????????????????????????????????????????? } class Parent { ??????????????????????? public void method() ??????????????????????? { ???????????????????????????????????????????????? System.out.println("Parent is running"); ??????????????????????? } } class Child extends Parent { ??????????????????????? public void method () ??????????????????????? { ???????????????????????????????????? System.out.println ("Child is running "); ??????????????????????? } } 18.JAVA中的static
作用
有時你希望定義一個類成員,使它的使用完全獨立于該類的任何對象。通常情況下,類成員必須通過它的類的對象訪問,但是可以創建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態的)就能創建這樣的成員。如果一個成員被聲明為static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變量都聲明為static。static 成員的最常見的例子是main( ) 。因為在程序開始執行時必須調用main() ,所以它被聲明為static。
聲明為static的變量實質上就是全局變量。當聲明一個對象時,并不產生static變量的拷貝,而是該類所有的實例變量共同擁有一個static變量。聲明為static的方法有以下幾條限制:
·
它們僅能調用其他的static方法。
·
它們只能訪問static數據。
·
它們不能以任何方式引用this 或super(關鍵字super 與繼承有關)。 19. Static關鍵字; 以前做過,共同的實例指向同一個引用,就是我所說的引用的傳遞,只要其中一個引用改變了對象的屬性,就會造成全部引用的對象改變; Static類似;但是如果這樣 Object object = new Object (); Object object1 = new Object (); 實例object與object1是兩個獨立的實例,而且分別指向同一個對象,對象間是獨立的!,那么我通過改變object改變類中的屬性,是絕不會對object1的對象屬性造成改變的,但是二者的對象是相同的,使用static關鍵字就可以修飾對象類中的屬性,使之成為二者共有的,這樣就會成為共用類中的屬性了; 在C++中(以及其他一些語言,如 C#,Java 等面向對象的語言中)類的成員變量被聲明為static(稱為靜態成員變量),意味著它為該類的所有實例所共享,也就是說當某個類的實例修改了該靜態成員變量,其修改值為該類的其它所有實例所見。 20. 由static修飾的屬性或方法,可以直接通過類.來調用。這是static的特性 //看我直接引用 public class Test { ??????????????????????? public static void main (String[] args) ??????????????????????? { ???????????????????????????????????????????????? int m = Test2.i ; ???????????????????????????????????????????????? System.out.println (m); ???????????????????????????????????????????????? Test2.method (); ??????????????????????? } } class Test2 { ??????????????????????? static int i = 23; ??????????????????????? public static void method () ??????????????????????? { ???????????????????????????????????????????????? System.out.println ("Test is true!"); ??????????????????????? } }?
總結
以上是生活随笔為你收集整理的Java学习笔记一和前言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中final和static对修饰
- 下一篇: Java学习笔记二