java基礎知識總結(1),java基礎知識總結

來源:互聯網
上載者:User

java基礎知識總結(1),java基礎知識總結
定義類:存取修飾詞 class 類名{ } 存取修飾詞如:public 、priate是可選的class是聲明類的關鍵字按照命名規範,類名首字母大寫 例:建立“人”類,關鍵代碼:public class Person{ }**********************************************************定義屬性:存取修飾詞 資料類型 屬性名稱; 存取修飾詞士可選的除了存取修飾詞之外,其他的文法和聲明變數是一致的 例:建立“人”類,名為“人”類添加相應屬性,關鍵代碼:public class Person{public String name;public String gender;public int age;} **********************************************************定義方法:存取修飾詞 傳回型別 方法名稱(參數類型 參數名1,參數類型 參數名2,……){ } 存取修飾詞是可選的傳回型別可以是void,在定義方法時,傳回型別為void時,表明沒有傳回值,方法體中不必使用“return”關鍵字返回具體資料,但是可以使用“return”關鍵字退出方法傳回型別不為“void”,那麼在方法體中一定要使用“return”關鍵字返回對應類型的結果,否則程式會有編譯錯誤小括弧中的“參數類型 參數名1,參數類型 參數名2,……”稱為參數列表當需要在方法執行的時候為方法傳遞參數時才需要參數列表,如果不需要傳遞參數時就可以省略,不過小括弧不可以省略,傳遞多個參數時,以半形的括弧進行分隔 例:在“人”類中定義方法,描述人工作的行為,關鍵代碼:public class Person{public String name;public String gender;public int age;public void work( ){System.out.println(this.name+"的工作理念:為夢想而努力奮鬥);}} **********************************************************建立和使用對象:1、建立對象類名 對象名 = new 類名(); new 是關鍵字左邊的類名為對象的資料類型右邊的類名()稱為類的構造方法 例:建立Person類的對象,關鍵代碼:Person lilei = new Person( );  2、使用對象對象名 . 屬性             //引用對象的屬性對象名 . 方法名         //引用對象的方法 例:對象屬性賦值並調用方法public static void main(String[] args){Person lilei = new Person( );lilei.name = "李雷";lilei.gender = "男";lilei.age = 22;lilei.work( );} **********************************************************成員方法:1、帶參數的方法 建立work()方法時定義的參數叫做形式參數,簡稱形參。調用方法時傳入的參數叫做實際參數,簡稱實參。 2、方法重載:方法名相同,參數列表不同,就形成了方法重載 特點:在同一個類中,方法名相同,參數的個數或類型不同**********************************************************成員變數:1、成員變數:類中的屬性,直接在類中定義的變數,定義在方法的外部。PS:成員變數可以在聲明時賦初始值,如果沒有賦值,java會給它一個預設值,基礎資料型別 (Elementary Data Type)的值為0,參考型別的值為null2、局部變數:定義在方法中的變數,一般情況下,在使用前需要賦值,否則會編譯出錯**********************************************************構造方法:主要作用是進行一些資料的初始化存取修飾詞 方法名(參數列表){方法體} 構造方法沒有傳回值預設構造方法沒有參數,因此參數列表可選(預設構造無參方法的快速鍵:Alt+/)構造方法的方法名與類名相同如果寫了帶參的構造方法,必須要產生一個無參的構造方法 例:為Person類定義一個構造方法,關鍵代碼:public class Person{public Person(){this.name = "李雷";}} 在一個類中可以定義多個重載的構造方法 this關鍵字是對一個對象的預設引用,每個執行個體方法內部,都有一個this引用變數,指向調用這個方法的對象因為this是在對象內部指代自身的引用,所以this只能調用執行個體變數、執行個體方法和構造方法。this不能調用類變數和類方法,this也不能調用局部變數。1)使用this調用成員變數,解決成員變數和局部變數的同名衝突。2)使用this調用成員方法3)使用this調用重載的構造方法,只能在構造方法中使用,且必須是構造方法第一條語句例:public Penguin(String name,String sex){this.name = name;this.sex = sex;}public Penguin(String name, int health, int love, String sex){this(name,sex);this.health = health;this.love = love;} **********************************************************封裝的步驟:封裝:用OOP方式完成變數的聲明、賦值、使用完成2次(聲明、賦值、使用):1、封裝的類 聲明 賦值 使用 2、封裝類裡面屬性的聲明 賦值 使用 1、修改屬性的可見度將Person類中的屬性由public修改為private即可。 例:請將Person類的屬性私人化,關鍵代碼:public class Person{private String name;private String gender;private int age;} 2、設定setter/getter()方法 例:請為Person類中的私人屬性添加setter/getter()方法,關鍵代碼:public class PrivatePerson{private String name;private String gender;private int age;public String getName(){return name;}public void setName(String name){this.name = name;}public String getGender(){return gender;}public void setGender(String gender){this.gender = gender;}public int getAge(){return age;}public void setAge(int age){this.age = age;}} 3、設定屬性的存取限制此時,屬性仍然沒有限制作用,需要進一步利用條件判斷語句進行限制例見myeclipse -->practise-->SetPerson **********************************************************定義包:package 包名 package是關鍵字報的聲明必須是java源檔案中的第一條非注釋性語句,而且一個源檔案只能有一個包聲明語句,設計的包需要與檔案系統結構相對應。因此,在命名包時,要遵守以下編碼規範:a、一個唯一的包名首碼通常是全部小寫ASCII字母,並且是一個頂級網域名稱com、edu、gov、net、及org,通常使用組織的網路網域名稱的逆序。例如,如果網域名稱為javagroup.net,可以聲明包名為“pacage net.javagroup.mypackage"b、包名的後續部分依不同機構各自內部的規範不同而不同。這類命名規範可能以特定目錄名的組成來區分部門、項目、機器或註冊名,如“package net.javagroup.research.powerproject" **********************************************************包的使用:包從大到小寫:網址倒過來1、聲明包的含義是聲明當前類所處的位置2、匯入包的含義是聲明在當前類中要使用到的其他類所處的位置 //講Person類放入pack1包中package cn.bdqn.pack1;public class Person{……省略代碼}//將PersonTest類放入pack2包中//使用Person類時,需要使用import將其匯入package cn.bdqn.pack2;import cn.bdqn.pack1.Person;public class PersonTest{public static void main(String[] atgs){……省略代碼}} **********************************************************類成員的存取修飾詞:範圍:   同一個類中   同一個包中   子類   任何地方private     可以     不可以    不可以   不可以預設修飾符     可以     可以    不可以   不可以protected    可以     可以     可以     不可以public        可以     可以     可以    可以**********************************************************static關鍵字的修飾屬性:static修飾的屬性稱為靜態變數或者類變數,沒有使用static修飾的屬性稱為執行個體變數。 例:將Person類的name、gender和age屬性保留,建立一個static修飾的屬性,並調用 ,關鍵代碼:public Person{public String name;public String gender;public static int age;public static int PERSON_LIVE;//……省略代碼}//以上為Person類代碼,以下為調用代碼//……省略代碼Person hanbing = new Person();hanbing.name = "韓冰";hanbing.gender = "女";hanbing.age = 22;Person.PERSON_LIVE = 1; 實際開發中,static關鍵字修飾屬性的最常用情境就是定義使用final關鍵字修飾的常量。使用final關鍵字修飾常量在整個程式運行時都不能被改變,和具體的對象沒有關係,因此使用static修飾,如“static final  int PERSON_LIVE=1" PS:  1、常量名一般由大寫字母組成2、聲明常量時一定要賦初值 **********************************************************static關鍵字的修飾方法:static修飾的方法稱為靜態方法或者類方法,不用static關鍵字修改的方法稱為執行個體方法。 例:將Person中的showDetails()方法使用static關鍵字修飾,並調用 ,關鍵代碼:public Person{public String name;public String gender;public static int age;public static void showDetails(String name,String gender,int age){System.out.println("姓名是:"+name+",性別為:"+gender+",年齡是:"+age);}}//以上為Person類代碼,以下為調用代碼public class PersonTest{public static void main(String[] args){Person liudun = new Person();Person.showDetails("劉頓","男",23);}} 1、在靜態方法中不能直接存取執行個體變數和執行個體方法。2、在執行個體方法中可以直接調用類中定義的靜態變數和靜態方法**********************************************************4種基本行為:1)存取修飾詞:公用的 私人的 受保護的 預設的2)傳回型別:有:變數的定義 資料類型 變數名沒有:void3)方法名:和類名的規範類似a、方法名首字母小寫b、方法名由多個單片語成,從第二個單詞開始,首字母大寫c、方法名要有意義4)參數:有:變數的聲明部分(boolean flag)沒有:()5)方法體:範圍{ }a、並列:多個方法可以並列b、嵌套:方法不能嵌套;可以嵌套流程式控制制 {if ( ) { }}第一種基本行為:存取修飾詞 沒有傳回型別 方法名(沒有){ }例:public void add( ){ }第二種基本行為:存取修飾詞 沒有傳回型別 方法名(有){ }例:public void add (int num1,int num2){ }1、變數聲明的過程:形參 形式上的參數2、變數賦值的過程:實參 實際上的參數第三種基本行為:存取修飾詞 有傳回型別 方法名(沒有){ }例:public int add( ){ }1、關鍵字:return 後面寫的是變數名,傳回型別位置寫的是變數的資料類型2、return後面不能再寫代碼了第四種基本行為:存取修飾詞 有傳回型別 方法名(有){ }把第二種和第三種合在一起例:public int add(int num1,int num2){ } **********************************************************繼承的文法:存取修飾詞 class <SubClass> extends <SuperClass>{ } 在java中,繼承通過extends關鍵字實現,其中SubClass稱為子類,SuperClass稱為父類或基類。存取修飾詞如果是public,那麼該類在整個項目可見。不寫存取修飾詞,則該類只在當前包可見。 在java中,子類可以從父類中繼承以下內容:可以繼承public和protected修飾的屬性和方法,不論子類和父類是否在同一個包裡可以繼承預設存取修飾詞修飾的屬性和方法,但是子類和父類必須在同一個包裡無法繼承父類的構造方法 **********************************************************super使用的文法:訪問父類構造方法:super(參數)訪問父類屬性/方法:super.<父類屬性/方法> super只能出現在子類(子類的方法和構造方法)中,而不是其他位置super用於訪問父類的成員,如父類的屬性、方法、構造方法。具有存取權限的限制,如無法通過super訪問private**********************************************************執行個體化子類對象:在java中,一個類的構造方法在如下兩種情況中總是會執行:1、建立該類的對象(執行個體化)2、建立該類的子類的對象(子類的執行個體化)因此,子類在執行個體化時,會首先執行其父類的構造方法,然後才執行子類的構造方法。 子類繼承父類時構造方法的調用規則如下:1、如果子類的構造方法中沒有通過super顯示調用父類的有參構造方法,也沒有通過this顯示調用自身的其他構造方法,則系統會預設先調用父類的無參構造方法。在這種情況下,是否寫super()語句,效果是一樣的。2、如果子類的構造方法中通過super顯示調用父類的有參構造方法,那麼將執行父類相應的構造方法,而不執行父類無參構造方法。3、如果子類的構造方法中通過this顯示調用自身的其他構造方法,在相應構造方法中應用以上兩條規則如果存在多級繼承關係,在建立一個子類對象時,以上規則會多次向更高一級父類應用,一直到執行頂級父類Object類的無參構造方法為止。**********************************************************Object類:Object類是所有類的父類。在java中,所有java類都直接或間接的繼承了java.lang.Object類 關鍵代碼:public class Person{}//兩種寫法等價public class Person extends Object{} **********************************************************                        Object類的部分方法方法 說明toString() 返回當前對象本身的有關資訊,按字串對象返回equals() 比較兩個對象是否是同一個對象,若是,返回trueclone() 產生當前對象的一個副本,並返回hashCode() 返回該對象的雜湊碼值getClass() 擷取當前對象所屬的類資訊,返回Class對象**********************************************************方法重寫和方法重載的區別: 比較項   位置   方法名   參數表     傳回值       存取修飾詞方法重寫  子類   相同     相同    相同或是其子類   不能比父類更嚴格方法重載  同類   相同    不相同      無關         無關**********************************************************多態:例:寵物類Pet,有幾個子類,寵物類定義了看病的方法toHospital(),子類分別重寫看病方法,關鍵代碼:class Pet{public void toHospital(){system.out.println(“寵物看病!”)}}class Dog extends Pet{public void toHostipal(){system.out.println(“小鳥看病”)}}public class Test{public static void main(String[] args){Pet pet;pet = new Dog();pet.toHospital();pet = new Bird();pet.toHospital();}} 樣本中,Pet類一般聲明為抽象方法,因為其本身執行個體化沒有任何意義,toHopital()方法聲明為抽象類別。 抽象類別不能被執行個體化子類如果不是抽象類別,則必須重寫抽象類別中的全部抽象方法abstract修飾符不能和final修飾符一起使用abstract修飾的抽象方法沒有方法體private關鍵字不能修飾抽象方法**********************************************************抽象方法:抽象方法沒有方法體抽象方法必須在抽象類別裡抽象方法必須在子類中被實現,除非子類是抽象類別**********************************************************向上轉型的文法:子類到父類的轉換稱為向上轉型<父類型><引用變數名> = new <子類型>(); 將一個父類的引用指向一個子類對象,稱為向上轉型,自動進行類型轉換此時通過父類引用變數調用的方法時子類覆蓋或繼承父類的方法,不是父類的方法此時通過父類引用變數無法調用子類特有的方法 **********************************************************向下轉型的文法:<子類型><引用變數名> = (<子類型>)<父類型的引用變數>**********************************************************instanceof運算子:用於判斷一個對象是否屬於一個類在向下轉型的過程中,如果沒有轉換為真實子類類型,會出現類型轉換異常 例:判斷寵物類型,關鍵代碼:public class Test{public static void main(String[] args){Pet pet = new Bird();pet.toHospital();if(pet instanceof Dog){Dog dog = (Dog) pet;dog.catchingFlyDisc();}else if(pet instanceof Bird){Bird biird = (Bird) pet;bird.fly();}}} 使用instanceof時,對象的類型必須和instanceof後面的參數所指定的類在繼承上有上下級關係,否則會出現編譯錯誤。**********************************************************多態的應用:1、使用父類作為方法的形參例:一個主人類,在該類中定義控制動物叫的方法。  關鍵代碼:class Host{public void letCry(Animal animal){animal.cry();}}public class Test{public static void main (String[] args){Host host = new Host;Animal animal;animal = new Dog();host.letCry(animal);animal = new Cat();host.letCry(animal);animal = new Duck();host.letCry(animal);}} 2、使用父類作為方法的傳回值使用父類作為方法的傳回值,也是Java中實現和使用多態的主要方式例:主人送出三種動物,送出的動物可以叫。  關鍵代碼:class Host{public Animal donateAnimal(String type){Animal animal;if(type=="dog"){animal = new Dog();}else if(type=="cat"){animal = new Cat();}else{animal = new Duck();}return animal;}}public class Test{public static void main(String[] args){Host host = new Host;Animal animal;animal = host.donateAnimal("dog");animal.cry();animal = host.donateAnimal("cat");animal.cry();}}                                  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.