程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java基礎知識總結(1),java基礎知識總結

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

編輯:JAVA綜合教程

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會給它一個默認值,基本數據類型的值為0,引用類型的值為null 2、局部變量:定義在方法中的變量,一般情況下,在使用前需要賦值,否則會編譯出錯 ********************************************************** 構造方法: 主要作用是進行一些數據的初始化 訪問修飾符 方法名(參數列表){方法體}   構造方法沒有返回值 默認構造方法沒有參數,因此參數列表可選(默認構造無參方法的快捷鍵: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)返回類型: 有:變量的定義 數據類型 變量名 沒有:void 3)方法名:和類名的規范類似 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() 比較兩個對象是否是同一個對象,若是,返回true clone() 生成當前對象的一個副本,並返回 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(); } }                                                                    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved