Java基礎總結

DBA_建瑾發表於2014-09-08

Java基礎總結


JVM
(Java Virtual Machine)Java虛擬機器;所謂Java虛擬機器,就是可以執行Java程式碼的假想計算機。我們只需要根據Java虛擬機器的規範,將其安裝到某臺特定的計算機上,就可以使編譯過的Java程式碼達到“編寫一次,到處執行”的目的。


JDK
的安裝,環境變數的配置

安裝JDK時只要按照安裝程式一直“下一步”即可,也可以選擇性的安裝J2SE Runtime Environment

配置JDKJava Development Kits)環境變數兩種方法:

第一種:直接修改path路徑;

第二種:在系統變數中新建JAVA-HOME環境變數;在環境變數路徑值為:“%JAVA-HOME%\bin;-

這兩種方法其中第一種較為常用,第二種主要用於切換版本和TOMCAT的軟體配置;


Classpath
的作用

它的主要作用是尋找.class檔案;

第一種:在系統變數中新建一個系統變數,命名為:classpath,並把變數值設為:.;D:\code;

第二種:在Dos環境下直接修改,但是隻對當前視窗有效,很少用;


JAVA
資料型別

首先java資料型別包括基本資料型別和引用型資料型別,其中,基本資料型別又包括三大類,分別為:數值型、字元型(char)和布林型(boolean),而其中的數值型又包括了兩種型別,分別為整數型(byte.short.int.long)和浮點型(float.double);其次,引用資料型別又包括了三大類分別是:類(class)、介面(interface)和陣列(queue.


JAVA
基本運算子號

首先,java基本運算子號分為:算術運算子、關係運算子、布林邏輯運算子、位運算子、賦值運算子、字串連線運算子六種;

下面對這六種運算子進行詳細的解釋:

算術運算子包括:+ * /   %  ++   --

關係運算子包括:>  =  <= ==  !=

布林邏輯運算子: &&   | |

位運算子:& | ^ ~ << >> >>>

賦值運算子:= 擴充套件賦值運算子:+=   =  *=  /=

字串連線運算子:+


JAVA
程式基本控制語句

java基本控制語句主要有分支語句和迴圈語句;

首先說一下分支語句,分支語句中主要說的是if語句和switch語句,在分支語句中主要有三種形式:(1ifboolean型別表示式)語句A;功能:當表示式為真時執行語句A,否則跳過。(2ifboolean型別表示式)語句A  else 語句B,功能是,先執行if中布林表示式的值,如果滿足便執行語句A否則執行else中的部分;(3ifboolean型別表示式1)語句1

else (boolean型別表示式2)語句2

else (boolean型別表示式3)語句3

else   語句n;

它的功能是先執行if中的boolean表示式值,滿足就執行語句1,不滿足就執行else,判斷else語句中的boolean表示式中的值,滿足便執行語句2;以此類推,若沒有滿足條件的,就執行語句n;

switch語句:switch(表示式)

{    case const1:

         statementl

             break;

..........

}

最後說一下迴圈語句,迴圈語句中主要包含三種迴圈,whilefordo-while迴圈,其中do-while不經常使用;

先介紹while迴圈:

1、 while迴圈是“當“型迴圈。

2、 形式:while(boolean表示式) 語句

3、 執行過程:先判斷表示式的值,若為true,則執行其後面的語句,然後再判斷條件並反覆執行,直到條件不成立為止。

4、 在不知道要迴圈多少次時使用while迴圈。

5、 While後面一般為語句塊,即加:{ }

語句中應有使表示式趨於false的語句,否則會出現死迴圈。

在介紹一下for迴圈

1、 形式

for(表示式1;表示式2;表示式3) 語句

2、 執行過程

首先計算表示式1,接著執行表示式2。若表示式2的值為true 則執行語句,接著執行表示式三,再判斷表示式2的值。依此重複下去,直到表示式2的值為false

3. 表示式2一般不可省略,否則為無限迴圈。表示式3亦可省略,但在迴圈體內必須有語句改變迴圈變數的值,以使表示式2在某一時刻值為false而正常結束迴圈。也可以同時省略表示式1和表示式3


陣列的概念及使用

1、陣列是多個相同型別資料的組合,實現對這些資料的統一管理。

2、陣列屬於引用型別,陣列型資料是物件(object),陣列中的每個元素相當於該物件的成員變數。

3、陣列中的元素可以是任意資料型別,包括基本資料型別和引用資料型別。

靜態初始化:即在宣告陣列時直接指定陣列元素。例如:Int [] a = {4,5,6,7,8,9};

動態初始化:即在宣告陣列時不指定陣列元素,而是在之後動態指定。例如:

int [] a=new int[10];for(int i=0;i<10;i++){ a[i]=i; }


方法的宣告及使用

定義方法:訪問許可權 返回值型別 方法名字(引數列表){方法體}

(1)     方法的返回值型別要和return返回值型別一致;

(2)     方法呼叫時,實參的型別,個數,順序要和形參型別方法中的保持一致;

(3)     在方法呼叫時,方法名字要和定義時的方法名字保持一致;


方法的過載

方法的過載是多型的實現手段之一,解決了名稱空間問題(在類中實現相同功能的方法)

滿足條件:1、方法名相同  2、方法的引數型別不同、引數個數不同或引數型別順序不同  3、返回值型別可以相同也可以不同。(與返回值型別無關)


物件導向的概念

物件導向有三大特徵:封裝、繼承和多型,這是物件導向的主要好處;


類的定義

定義:修飾符 class 類名{

        成員變數;

方法

}


物件的產生與使用

Java語言中使用關鍵字new呼叫構造方法來建立新物件。

類名 物件名 =  new 類名();

透過物件呼叫方法或修改屬性值。


匿名物件

不定義物件的引用名稱,而直接呼叫方法,我們叫這樣的物件是匿名物件。只能一次性使用。

使用匿名物件的好處是節省了記憶體空間(Java的垃圾回收機制)

如果對一個物件需要進行一次呼叫,可以使用匿名物件。

常用匿名物件作為一個實參傳給方法呼叫,用完之後拋棄


實現類的封裝性

物件導向的特徵之一(封裝、繼承、多型是物件導向的三大特徵)

封裝主要採用private關鍵字實現類的封裝性;,提供setXxx()和get Xxx()方法進行設定和返回屬性值,進而達到對私有變數的設定;


構造方法的定義與使用

構造方法可以和普通方法比較來記憶,他們主要有三方面的不同,分別是定義上、作用上以及呼叫方式上,針對這三個不同的方面,首先從定義上說:(1)構造方法必須與類具有相同的名字,而普通方法可以是任何名字,只要符合識別符號的命名規則即可;(2)構造方法不含有返回值的定義;而普通方法可以有返回值;(3)不能在構造方法中用return語句返回一個值,而普通方法在有返回值的情況下必須return一個值;其次是在作用上的不同:構造方法的主要作用是用來建立物件,同時給成員變數賦初值;而普通方法是對類的行為的描述;

最後在呼叫上來說,構造方法用new關鍵字來呼叫,而普通方法則是用物件名.方法名來呼叫;


物件的比較(“
==”、“equals()”)

equals()方法在Object類中比較的是記憶體地址,而String類中複寫了equals()方法,比較的是字串的內容;

== 在基本資料型別中,比較的基本資料型別的值;

   在引用書籍型別中,比較的是引用(記憶體地址);


在類內部呼叫本類方法

靜態方法中可以直接呼叫靜態方法,但不能直接呼叫非靜態方法,需要透過物件呼叫。

非靜態方法中可以直接呼叫,或使用this關鍵字呼叫。


this
關鍵字的使用

this關鍵字主要有三個主要的用途:首先,this關鍵字用來定義屬性,區分成員變數和區域性變數,給區域性變數賦值; this用來指代當前物件,可以用來呼叫方法;其次this關鍵字可以用來呼叫構造方法,用來呼叫構造方法時,this關鍵字必須放在構造方法的第一行;最後:

this不能與super關鍵字同時出現在構造方法中,this不能用在static修飾的方法或程式碼塊中。


構造方法的過載

構造方法過載規則與普通方法過載一樣;當採用new關鍵字建立物件時,會自動呼叫構造方法,主要用來為類中的屬性初始化。每個類中都有一個預設的無參構造器,當在類中新增有引數的構造方法,則預設的構造方法遺失。


構造方法的相互呼叫

在本類中呼叫本類的構造方法時,可以使用this關鍵字進行呼叫,但是必須將此語句放在構造中的第一行,當在有繼承關係的兩個類中,可以在子類中使用super關鍵字對父類中的構造方法進行呼叫,但也必須將此語句放在構造方法中的第一行;thissuper不能同時使用;


物件的引用傳遞

Java中,引數傳遞分為基本型別引數傳遞與物件型別(即引用型別)引數傳遞。

基本型別引數傳遞意味著當將一個實參值傳遞給一個方法時,如果方法修改了該引數,改變的形參,而原始的實參的值保持不變。

引用型別變數傳遞將一個引數傳遞給一個方法後,方法接收的是一個引用變數的值,這個值為某個物件的記憶體地址值。引用變數的引數傳遞仍然是值傳遞。


static
的使用(方法、屬性)

static可以在變數、方法和程式碼塊中使用;

首先,在變數前使用static是將成員變數宣告為全域性變數;所有物件均可訪問

其次,也可以在方法中使用static,此時這個方法被稱為靜態方法,可以使用類名進行直接呼叫使用此方法的好處是可以節省記憶體空間;在一個類中,如果用靜態方法去呼叫一個靜態方法,可以直接用方法名直接呼叫,當在靜態方法中,呼叫非靜態方法可以使用物件名直接呼叫,呼叫靜態方法是可以用類名呼叫也可以用方法名呼叫;

最後,static用於程式碼塊時,被稱為靜態程式碼塊,此程式碼塊的優點是可以給成員變數賦初值,並且它的優先順序要比main函式的優先順序要高;


理解
main方法

Public 表示此方法為公共的,可被外部所訪問;

static 表示此方法為static方法,可被類名直接呼叫;

void   表示此方法無返回值;

main   系統規定的方法名稱;

String【】args 表示接受執行時的引數;



物件陣列的使用(靜態初始化、動態初始化)

1、 宣告及靜態初始化:類名【】 物件名= { }

Person[] ps = Person{ p1,p2,p3 };   //p1,p2,p3分別為Person的物件

2、宣告及動態初始化  物件名【索引】=new 類名();

Person[] p;//物件陣列宣告

p=new 類名[3];//動態初始化

ps[0]=new Person();//分別對每個元素初始化

ps[0].name=zhangsan;

ps[0].age=13;

……

 

JDK5.0特性


類的繼承

類的繼承的好處是:透過繼承可以減少重複程式碼的使用,擴充套件類的功能。

關鍵字是extends

java只支援單繼承, 但是可以有多層繼承;

繼承是“is a”的關係。“是什麼”;

子類繼承父類中非private的屬性和方法。

子類物件例項化時預設呼叫父類無參構造方法(並且放在子類構造方法首行)。


子類物件的例項化過程

當採用new關鍵字例項化子類物件時,首先會預設呼叫父類無參構造方法,接著呼叫子類構造方法。

方法的覆寫

作用:擴充套件父類方法的功能。

1、 必須是在存在有繼承關係的兩個類中;

2、 子類方法和父類的方法名、引數、返回值型別都必須一致。

3、 要求子類方法的訪問許可權不能小於父類的訪問許可權。

4、 子類例項化父類物件,子類呼叫父類的方法時,會預設呼叫子類中覆寫父類的那個方法

5、 子類繼承父類的方法,訪問許可權只能擴大不能縮小,可用publicprotected,或default,其中protecteddefault的區別就是後者必須在同一個包裡。private的使用的好處,程式碼隱藏,安全;對賦值的限制。如果只是在本類中使用,不想外界得到,只要寫SET方法就可以,不寫GET方法(對賦值限制的體現)。


super
的使用

super呼叫父類的屬性:super.屬性名;

super呼叫父類的方法:super.方法名(實參列表);

呼叫父類中特定構造方法:super(實參列表);

呼叫父類中構造方法時,super()必須放在子類構造方法的首行。thissuper不能同時呼叫構造方法。

super呼叫父類中的方法時,會呼叫子類中被覆寫了的方法。如果子類中沒有覆寫父類中的方法,仍能用super呼叫父類中的方法


this
super的回顧對比

this用於呼叫本類的屬性和方法,或代表當前物件。

super用於呼叫父類的屬性和方法,必須存在於有繼承關係的兩個類中;

在呼叫構造方法時,因為兩個都必須放在構造方法中的第一行,因此兩個在呼叫構造方法時不能同時使用;


final
關鍵字

final可以用於標記類、方法和變數

final關鍵字在標記類時此類不能被在繼承;

final關鍵字在標記方法時不能被子類複寫;

final修飾的變數(成員變數和區域性變數)即成為常量,只能被賦值一次;

public static final 全域性常量


抽象類的使用

抽象類用abstract關鍵字修飾。抽象類可以有例項變數、常量,也可以同時有抽象方法和具體方法,它提供一個繼承的出發點,不能被例項化,但是可以透過多型性,可由其子類進行例項化。private static 不能宣告為抽象的,子類需要複寫父類所有的抽象方法;


介面的使用

介面是常量和抽象方法的集合。介面中不能有普通方法和變數。且常量必須被賦值。

介面可以實現多繼承(即介面可以繼承一個到多個介面,但不能繼承類)

一個類可以實現多個介面;介面不能有構造方法

extendsimplements同時出現,extends必須寫在implements前面

抽象類可以實現介面,並且不必實現介面中的所有抽象方法

抽象類和介面的區別

抽象類和介面是Java物件導向體系當中非常重要的兩個元素,在語法方面有很多的區別,介面和抽象類在語法上的區別主要體現在以下的四個方面:

a)   一個類可以實現多個介面,而除了Object之外,一個類只能繼承一個父類;

b)   介面當中所有的方法都是抽象方法,並且預設為public許可權,而抽象類當中可以有抽象方法,也可以沒有抽象方法

c)   介面當中的變數全部為全域性常量,而抽象類當中可以定義任何型別的變數

d)   抽象類當中有構造方法,而介面沒有;


用介面實現多繼承

介面不能繼承抽象類,但是它可以結局單繼承帶來的侷限性,就是多繼承:

例如:Class A implements B,C,D


物件的多型性

物件的多型性表現為轉型(即向上轉型和向下轉型)及方法的過載和複寫。

1、轉型:要求兩個轉型的物件有繼承或實現關係。。

向上轉型:子類物件轉換成父類物件,自動轉換。

           父類物件用子類例項化。

           轉型後的物件不能呼叫子類物件特有的方法。但呼叫的方法為子類自身的方法

向下轉型:父類物件轉換成子類物件,需要強制轉換。

          只有發生過向上轉型,才能發生向下轉型

2.方法的過載:方法的過載是多型的實現手段之一,解決了名稱空間問題(在類中實現相同功能的方法)滿足條件1、方法名相同  2、方法的引數型別不同或引數個數不同或引數型別順序不同  3、返回值型別可以相同也可以不同物件導向的概念

3.方法的複寫:

必須是在存在有繼承關係的兩個類中;子類方法和父類的方法名、引數、返回值型別都必須一致。要求子類方法的訪問許可權不能小於父類的訪問許可權。子類例項化父類物件,子類呼叫父類的方法時,會預設呼叫子類中覆寫父類的那個方法


物件多型性在抽象類及介面上的應用

面向介面程式設計的優點:1、呼叫者不用知道其使用物件的具體所屬類

                    2、一個物件可以很容易被另一個物件(同樣實現了介面)所替換

                    3、物件間的連線不必硬繫結到一個類的物件上,因此增加了靈活性

                    4、松耦合性

                    5、提高可擴充套件性


異常的概念

程式中的錯誤導致中斷了正常的指令流的一種事件;透過異常處理機制,可以用一種結構化的可控方式來處理執行時的錯誤。在Java中所有的異常都用類來表示,並且所有的異常類都是繼承自java.lang包中的Throwable類。

Throwable類有兩個直接子類:Error(用來表示編譯和執行錯誤,如程式進入死迴圈,記憶體溢位等,Error處理一般由系統承擔,java本身不提供相應的Error處理機制)和Exception(用來表示由程式活動所導致的錯誤,如運算時除數為零等。當程式執行出現Exception時,在程式中加入異常處理程式碼,仍可使程式繼續執行直至程式結束。由於Exception是可以檢測和處理的,因此產生了相應的異常處理機制)。


try…catch
語句

try程式碼塊中是一段可能產生異常的程式碼;catch語句的引數包括一個異常型別和一個異常物件。該異常型別指明瞭catch語句所處理的異常型別,異常物件則在try中產生。{}中為對異常的處理。

與一個try相關的catch語句可以有一個或多個,異常的型別決定了要執行那個catch語句。

執行順序:1、首先執行try程式碼塊中的所有語句

2、 如果try{}中無異常產生,不執行catch(){},直接執行catch之後的語句

3、 如果try{}中有異常產生,則發生異常之後的語句不會被執行,直接跳到catch(){}中執行。之後順序執行。

如果catch(){}中的異常型別與產生的不同,則執行順序與未捕獲異常一樣。


throws
關鍵字

throws用在方法的宣告處,表示此方法不處理該類異常,而是交給方法的呼叫處處理。


throw
關鍵字

throw用在方法的內部,用來手動的丟擲異常物件。要麼與trycatch一起使用,要麼與throws一起使用。


finally
關鍵字

finally必須用在異常中,不能孤立的使用,至少必須有try語句(但只有try,沒有catchfinally會報錯,即trycatchfinally都不能單獨使用;一個try可以有多個catchtry沒有catch也行,但必須要有finally不管之前是否丟擲異常,都會執行finally現在try中加一個return語句 ,但finally仍然會執行,且先執行finally再執行return


package
的定義與使用

package的主要作用是打包,包的定義要放到java檔案的最上面,打包的類檔案編譯是:

javac –d . 類名.java  執行的時候是:java 包名.類名 


import
語句的使用

import 語句的主要作用是往程式中匯入包

 


ArrayList
的使用

ArrayList類封裝了一個動態再分配的Object[]陣列。每個ArrayList物件有一個數值,這個數值用來表示儲存列表中元素的陣列的容量。當元素新增到ArrayList時,這個數值會在常量時間內自動增加。


 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29324876/viewspace-1265631/,如需轉載,請註明出處,否則將追究法律責任。

相關文章