程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> CoreJava學習筆記1-基本概念、對象和類,corejava學習筆記

CoreJava學習筆記1-基本概念、對象和類,corejava學習筆記

編輯:JAVA綜合教程

CoreJava學習筆記1-基本概念、對象和類,corejava學習筆記


一、    java的基本程序設計結構

(一)   java共有8種基本類型:4種整型,2種浮點類型,1種char,1種boolean。

1)       4種整型:byte(1)、short(2)、int(4)、long(8)。

2)       int最常用,byte和short常用在底層的文件處理或者需要控制占用存儲空間量的大數組。

3)       浮點類型:float(4)、double(8)。Float後綴F,不加後綴默認為double(D)。

4)       char類型表示單個字符,通常用來表示字符常量。

5)       boolean類型有兩個值:false、true。

(二)   聲明一個變量之後,必須用賦值語句對變量進行顯式初始化,千萬不要使用未初始化的變量。

(三)   關鍵詞final表示該變量只能被賦值一次。一旦賦值,不可更改。在Java中,經常用final來定義類常量,這樣,可以使該常量在一個類中的多個方法中使用。

(四)   正數被0除將會產生異常,浮點數被0除將會得到無窮大或NaN。

(五)   字符串的不可變性有一個優點:可以讓字符串共享。

(六)   檢測字符串是否相等使用equals而不用==。後者要求兩個字符串的存放地址必須也相同。

(七)   輸入輸出例子:

 

(八)   While循環語句首先檢測循環條件,因此循環體中的代碼可能不被執行。如果希望循環體至少執行一次,則應該將檢測條件放在最後,使用do..while.

(九)   case標簽可以是:類型為char、byte、short、int的常量表達式;枚舉常量;

1)       從Java7開始,case可以支持字符串字面量。

2)       如果case分支語句的末尾沒有break,那麼會接著執行下一個分支語句。

(十)   中斷控制流程語句:break、continue。

(十一)        數組

1)       創建一個數組時,所有元素初始化為0;

2)       boolean數組元素初始化為false。

3)       對象數組元素初始化為null(表示這些元素未存放任何對象)。

4)       Arrays.sort()可以對數組進行快速排序。

二、    對象與類

(一)   類之間最常見的關系:

1)       依賴(uses-a):A類的方法操縱B類的對象(B類的對象是A類的方法的入參),則A類依賴B類。

2)       聚合(has-a):A類的對象包含B類的對象(B對象是A的成員變量)。

3)       繼承(is-a):A繼承自B,A is a B。

(二)   要想使用對象,就必須首先構造對象,並制定其初始狀態。然後對對象應用方法。

1)       使用構造器構造新實例。

(三)   一個對象變量只是引用一個對象,而不是包含一個對象。

1)       如:Date deadline = new Date(); new Date()構造了一個Date類型的對象,該對象的值是一個引用該對象的地址,而這個地址存放在變量deadline中。

2)       如果一個對象為null,就等於沒有指向任何對象,就不能調用該對象的任何方法。比如:

Brithday birth = null;

birth.toString();

這樣會報錯。

(四)   在一個源文件中,只可以有一個公共類,可以有多個非公共類。

1)       比如,EmployeeTest.java除了一個公共類EmployeeTest(包含main方法)之外,還有一個非公共類Employee。

2)       當編譯這段源代碼時,編譯器會在目錄下創建兩個類文件:EmployeeTest.class和Employee.class。

3)       然後將程序中包含main方法的類名(EmployeeTest)提供給字節碼解釋器,以便啟動該程序:java EmployeeTest

(五)   關於構造器

1)       構造器與類同名。

2)       每個類可以有一個以上的構造器。

3)       構造器可以有多個參數。

4)       構造器沒有返回值。

5)       構造器總是伴隨著new操作一起調用。

(六)   在每一個方法中,關鍵詞this表示隱式參數,表示當前對象實例。比如:

public void raiseSalary(double percent){

       double raise = this.salary +percent;

         this.salary +=raise;

}

而percent就是顯式參數。

(七)   如果一個類有final實例變量,那麼初始化該類時必須初始化該變量。即:必須確保在每一個構造器執行之後,該變量的值被設置,並且在後續操作中不能夠對它再修改。

(八)   final修飾符大都應用於基本類型變量或者不可變類型的變量(如果類中的每一個方法都不會改變其對象,這種類就是不可變的類。例如String類。)

(九)   靜態變量屬於類,不屬於任何對象。比如:

 

每一個Test對象擁有自己的size變量,但是無論新建多少對象,它們共享age變量。

(十)   System.out就是一個使用靜態變量的例子。

(十一)        按值調用表示方法提供的是調用者提供的值。按引用調用表示方法接收的是調用者提供的變量地址。Java總是采用按值調用。

1)       很多人根據下面的例子得出結論:Java對對象的傳遞采用按地址調用,因為調用函數後,對象的屬性值發生了變化:

 

 

實際上,49行的方法的引用x只是harry的一個拷貝,此時,x和harry都是一個數值,該數值都等於Employee對象指向的地址。即:x和harry同時指向Employee對象的地址。你改變了對象的屬性,但x、harry各自代表的那個地址數值並沒有發生改變。

2)       通過下例來說明Java對對象采用的也是按值傳遞:

 

swap方法對x、y進行置換,導致x和y引用的地址發生了變化。但是a、b沒有發生任何變化。

(十二)        如果多個方法有相同的名字、不同的參數,便發生了重載。

1)       要完整的描述一個方法,需要指出方法名以及參數類型。這叫做方法的簽名。

2)       返回值類型不是方法簽名的一部分。也就是說,不能有兩個名字相同、參數類型也相同卻返回不同類型值得方法。下面的寫法錯誤:

 

(十三)        如果在編寫一個類時沒有編寫構造器,那麼系統就會提供一個無參構造器。這個構造器將所有的實例域(成員變量)設置為默認值。於是,實例域的數值數據設置為0、布爾型數據設置為false、所有對象變量設置為null。(僅當類沒有提供任何構造器的時候,系統才會提供一個默認的構造器。)

(十四)        關鍵詞this的雙重意義:

1)       首先,this引用方法的隱式參數(即,一個函數除了多個入參外,還有一個沒有寫出的this參數,該參數總是指向當前調用該方法的對象實例。)

2)       第二個,如果構造器的第一個語句形如:this(…),這個構造器將調用同一個類的另一個構造器。

 

 

 

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