Java基礎知識學習筆記總結__Java

來源:互聯網
上載者:User

Java學習筆記總結

java基礎複習

1、 抽象類別可以有構造器,可以有一個非抽象的父類

2、 記憶體回收機制回收的是堆裡面的記憶體,棧裡面的資料自動入棧自動出棧

3、 參考型別的資料在堆當中,記憶體中操作的只有棧,new關鍵字在堆裡面分配一塊記憶體

4、 java中是值傳遞

5、 String是不可變字元,即一旦分配了記憶體,此記憶體的值將不會改變,又將String賦值是,會重新分配一塊記憶體,字串池: StringBuffer

6、 在堆中的東西叫對象

Ø  運行時異常:

n  ArithmeticException  當出現異常的運算條件時,拋出此異常。例如,一個整數“除以零”時,拋出此類的一個執行個體。

n  ArrayIndexOutOfBoundsException用非法索引訪問數組時拋出的異常。如果索引為負或大於等於數組大小,則該索引為非法索引。

n  ArrayStoreException試圖將錯誤類型的Object Storage Service到一個對象數組時拋出的異常。如:

u  Objectx[] = new String[3];

u  x[0]= new Integer(0);

n  ClassCastException視圖將對象轉換為不是執行個體的子類時,拋出該異常。如:

u  Objectx = new Integer(0);

u  System.out.println((String)x);

n  illegalArgumentException表明向方法傳遞了一個不合法或不正確的參數

n  NegativeArraySizeException如果應用程式視圖建立大小為負的數組,則拋出該異常

Ø  編譯時間異常:

n  NoSuchMethodException無法找到某一特定方法時,拋出該異常

7、 unicode碼範圍

漢字:[\u4e00,\u9fa5]

數字:[0x30,0x39]

小寫字母:[0x61,0x7a]

大寫字母:[0x41,0x5a]

8、 final類

l  final類能夠修飾非抽象類別、非抽象類別成員方法和變數(靜態變數、執行個體變數、局部變數)

l  final類不能被繼承,沒有子類

l  final方法可以被繼承,但不能被子類的方法覆蓋

l  final成員變數表示常量,聲明成員變數時,必須賦值(要麼在聲明的時候賦值,要麼在構造器中賦值),賦值後不能被改變

u  publicfinalint E; //final空白,必須在初始化對象的時候賦初值
        public Test3(int x) {
                E= x;
        }

l  final不能用於修飾構造方法2.5

9、 static只能修飾成員變數,表示所有對象共用這個資料

l  static能夠修飾成員變數和方法,內部類,也可以形成靜態static代碼塊,不能修飾局部變數

l  被static修飾的成員變數可以直接用類名來調用,文法如下:

u  類名.靜態放大名();

u  類名.靜態變數名;

l  靜態方法中不能用this和super關鍵字,不能直接存取不帶static的成員變數和成員方法

l  因為static方法獨立於任何執行個體,因此static方法必須被實現,而不能是抽象的abstract

l  先運行靜態代碼塊,再運行構造器

 

10、static和final一塊表示什麼

l  staticfinal用來修飾成員變數和成員方法,可理解為全域變數(java中沒有全域變數的概念)

l  staticfinal修飾變數,表示一旦給值就不可修改,並且通過類名就可以訪問

l  staticfinal修飾方法,表示不可覆蓋,並可通過類名直接存取

l  staticfinal修飾一些容器類型(ArrayList、HashMap)的變數,不可以改變容器變數本省,但可以修改容器中存放的對象

 

11、類成員變數分類

    被static修飾的變數叫靜態變數或者類變數;

    沒有被static修飾的變數叫執行個體變數。

 

12、命令列參數

    java主類參數(即命令列參數)

    eclipse中java輸入命令列參數,在選定的類中,點擊右鍵run as—Runconfigurations—Arguments-Program arguments-Variables-選擇string_prompt

 

13、Integer.valueOf(String)將字串轉換成Integer封裝類

 

14、一個.java檔案中可以有很多類。不過注意以下幾點:  

a、public 許可權的類只能有一個(也可以一個都沒有,但最多隻有1個)

b、這個.java檔案的檔案名稱必須是public類的類名(一般的情況下,這裡放置main方法是程式的入口。)

c、若這個檔案中沒有public的類,則檔案名稱隨便是一個類的名字即可

d、用javac 編譯這個.java檔案的時候,它會給每一個類產生一個.class檔案

 

15、物件導向、面向過程

    物件導向的三大特性:封裝、繼承、多態

    面向過程:C語言的底層語言的特性

 

16、類和對象:

    一個類中可以有多個對象,類是對對象的描述

    一個類中的成員:

        欄位:封裝private

        方法:類的行為

構造器:與類同名,沒有傳回值。作用:初始化成員變數。預設構造器:無參且同名沒有傳回值,當一個類顯示的表明構

造器,則類不自己建立預設構造器

        內部類

 

17、類之間的關係:繼承耦合度最高

    A.繼承(is-a): 單繼承多實現 extends 優點:減少了代碼的冗餘、缺點:耦合度太高

B.實現:

    C.組合(has-a):

        合成:個體和整體的關係,個體與整體生命週期相同,公司和部門的關係

        彙總:個體和整體的關係,生命週期不同,學生和學校的關係

        關聯:雙向關聯

            Class Person{

                Petpet;}

            ClassPet{

                Personowner;

            }

    D.依賴(use-a):一個類作為另一個類方法的參數或者是傳回值,稱為依賴

 

18、java設計原則

低耦合高內聚

可擴充性和可維護性

 

19、繼承:

  子類中的成員:

     1)從父類中繼承的可視化(非私人的)的成員(欄位、方法),不能繼承父類的構造器

     2)子類所特有的成員(欄位、方法、構造器)

     3)重載父類的成員(方法)  多態

         重載的條件:

            a)發生在同一個類或者父子類之間

           b)方法名稱相同,參數列表(參數的個數,參數的資料類型、參數的順序)不同

           c)傳回值無所謂

           d)存取權限無所謂

         歧義重載:

            ma(12,34)//歧義重載,編譯錯誤

            publicvoid ma(int i,double j){//列印1}

            publicvoid ma(double i,int j){//列印2}

         構造器重載:

           this:

                 this.成員(欄位、方法):調用本類的欄位、方法

                 this(參數列表):調用本類的其他構造方法,必須在構造方法的第一句

                  public Person(int age){

                        this(age,””);//調用下面那個構造器

                    }

                  publicPerson(int age,String name){

                        this.age= age;//調用本類的欄位

                        this.name= name;

                    }

 

          super:父類的對象

               super.成員:調用父類的成員(方法、欄位)

               super(參數列表):調用父類的構造方法,必須位於子類構造方法的第一句

               如果父類中沒有無參的構造器,在子類中必須顯式的調用父類帶參數的構造方法(super(參數類表或者this(參數列表)));  如果父類有無參的構造器,則子類中可以不用顯式調用父類的構造器,因為系統預設調用super();

     4)重寫父類的成員(方法)  多態

          重寫的條件 :

            a)發生在父子類之間

            b)方法名稱相同,參數列表(參數的個數,參數的資料類型、參數的順序)相同

            c)傳回值必須相同

            d)子類覆蓋方法的存取權限大於等於父類被覆蓋方法的存取權限

            e)子類不能拋出比父類異常更大的異常(RuntimeException例外)

     5)隱藏父類的成員(欄位)   

多態對象:調用隱藏成員,調用的是父類的

                      調用覆蓋成員,調用的是子類的        

 

         

20、static:類成員

欄位:所有對象共用

    方法:靜態方法不能直接存取非靜態成員,如果需要訪問,產生執行個體訪問;

          非靜態方法能夠直接存取靜態成員和非靜態成員

          靜態方法中不能有this、super關鍵字

    塊:記憶體中只執行一次,通常用來初始化靜態成員

    內部類

21、final:終態的

    變數:不能第二次賦值,而且必須有初始值

    方法:不能被重寫

類:不能被繼承

22、abstract:

   抽象方法必須在抽象類別中,抽象類別中不一定要有抽象方法

   抽象類別沒有執行個體

   抽象類別可以有父類,父類可以是抽象類別也可以是非抽象類別

   抽象類別有構造器,不能用來產生本類執行個體,構造器用來間接產生子類執行個體時使用

  abstract不能與static、final、private一起使用

23、異常處理:

   1)try{}catch()finally{}

   2)throws   方法聲明後 throws 異常類

   3)throw    句子(通常是if)後throw 異常類的執行個體

   4)自訂異常類  extends  Exception或者RuntimeException 

24、方法重寫(override)和 重載(overlord)的區別

重寫override:子類中出現與父類中籤名相同的方法、存取修飾詞要等於高於父類、傳回值類型,參數列表都相同

重載overlord:一個類內部出現兩個及兩個以上方法名相同、參數列表不同(參數類型,參數個數,參數類型的順序)的方法

 

25、動態多態和靜態多態

    動態多態(運行時多態):運行過程中才知道調用那個方法,指的是方法重寫

    靜態多態(編譯時間多態):編譯時間就知道所調用的方法,指的是方法重載

 

26、如果父類中沒有空參構造

那麼子類必須同super()的方式顯示的調用父類構造

建議:如果父類中出現帶參構造,那麼必須手動添加空參構造

例:下列代碼的運行結果是( B)

classA{

     public  A(int a){System.out.println(“A”);}

}

class B extends A{

    publicB(){

        super(5);//必須加上這一塊,用super()顯示的調用父類中的方法

    }

    public voidma(){System.out.println(“ma”);}

}

public class test{

    public static void main(String[]args){

B b=new B();

b.ma();

    }

}

A.  列印輸出ma

B.  編譯錯誤

C.  列印輸出A

D.  列印輸出A  ma

 

27、 static:

表示靜態,修飾的內容屬於類成員;被該類的所有對象共用,建議使用類名.的方式訪問;修飾的內容在類載入的時候,執行;只能訪問被static修飾的內容;修飾的內容只在類載入的時候執行一次。

可以修飾的內容:修飾屬性、修飾方法、作為代碼塊使用 jdbc 載入驅動的時候

    static{

        Class.forName("");//作為代碼塊使用

    }

  特點:

    1.修飾的內容屬於類成員

    2.修飾的方法,不能被重寫,可以被重載

    3.修飾的內容,執行一次

例:public class HelloWorld{

public staticvoid main(String args[]){

method();

}

public voidmethod(){

try{

System.out.println("hello我執行");

}

finally{

System.out.println("我就不執行");

}

  }

}

編譯運行後,輸出結果是什麼。(D )

A."hello 我執行"

B."我就不執行"

C."hello 我執行"

"我就不執行"

  D.代碼不能編譯

因為main方法是用static修飾的靜態方法,調用的方法也必須用static修飾,而method();方法沒有被static修飾

 

28、hashcode()返回的是對象的記憶體位址對應的int類型資料,但是我們可以重寫hashCode()方法,返回的就不再是記憶體位址。

hashcode()相同的對象,這兩個對象不一定相同;如果兩個對象相同,則hashcode()一定相同。

 

29、java中的存取修飾詞

public: 所有

protected: 自己、同一包中、子類可以訪問

default: 預設什麼都不加,就是default,自己、同一包中可以訪問,但是比protected層級要低即限制更多

friendly: 自己、同一包中可以訪問

private: 自己

以下代碼的運行結果是:( C  )

1. abstract class abstrctIt {

2.   abstractfloat getFloat ();

3. }

4. public class AbstractTest extends AbstractIt {

5.   privatefloat f1 = 1.0f;

6.   privatefloat getFloat () {return f1;}

7. }

A. 編譯成功

B. 第6行產生錯誤,導致運行失敗

C. 第6行產生錯誤,導致編譯失敗

D. 第5行產生錯誤,導致編譯失敗

預設什麼不加的存取修飾詞是default,default比private限制少(即更進階),比protected限制多,所有第六行重寫方法用的private存取修飾詞比父類低級,所有會出現編譯失敗

 

30、Math.random()擷取[0,1)的值,取不到1;

用法:(int)Math.random()*n+1;取到1到n之間的整數

 

31、數組、集合、字串之間的轉換

a. Arrays.asList() //將數群組轉換成集合

例:List list = Arrays.asList(names);//將數群組轉換成集合。

b.String.valueOf() //將數群組轉換成字串、也可將整數轉換成字串

例:char []ch1 = {'a','c','a','b','a'};

     String str2 = String.valueOf(ch1);

例:int num = 123456;

     String str =String.valueOf(num);

c.toCharArray()將字串轉換成數組

例:String str = "gdfgdfgd";

char[] ch = str.toCharArray();

   d.Arrays.toString()將字元數組變成字串特定格式輸出,如[1,2,3]

  例:String str1 = Arrays.toString(ch);

        System.out.println(str1);

   e.str.re

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.