Java基礎總結
Java基礎總結
JVM:(Java Virtual Machine)即Java虛擬機器;所謂Java虛擬機器,就是可以執行Java程式碼的假想計算機。我們只需要根據Java虛擬機器的規範,將其安裝到某臺特定的計算機上,就可以使編譯過的Java程式碼達到“編寫一次,到處執行”的目的。
JDK的安裝,環境變數的配置
安裝JDK時只要按照安裝程式一直“下一步”即可,也可以選擇性的安裝J2SE Runtime Environment。
配置JDK(Java 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語句,在分支語句中主要有三種形式:(1)if(boolean型別表示式)語句A;功能:當表示式為真時執行語句A,否則跳過。(2)if(boolean型別表示式)語句A else 語句B,功能是,先執行if中布林表示式的值,如果滿足便執行語句A否則執行else中的部分;(3)if(boolean型別表示式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;
..........
}
最後說一下迴圈語句,迴圈語句中主要包含三種迴圈,while、for和do-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關鍵字對父類中的構造方法進行呼叫,但也必須將此語句放在構造方法中的第一行;this和super不能同時使用;
物件的引用傳遞
在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、 子類繼承父類的方法,訪問許可權只能擴大不能縮小,可用public,protected,或default,其中protected和default的區別就是後者必須在同一個包裡。private的使用的好處,程式碼隱藏,安全;對賦值的限制。如果只是在本類中使用,不想外界得到,只要寫SET方法就可以,不寫GET方法(對賦值限制的體現)。
super的使用
super呼叫父類的屬性:super.屬性名;
super呼叫父類的方法:super.方法名(實參列表);
呼叫父類中特定構造方法:super(實參列表);
呼叫父類中構造方法時,super()必須放在子類構造方法的首行。this和super不能同時呼叫構造方法。
用super呼叫父類中的方法時,會呼叫子類中被覆寫了的方法。如果子類中沒有覆寫父類中的方法,仍能用super呼叫父類中的方法
this與super的回顧對比
this用於呼叫本類的屬性和方法,或代表當前物件。
super用於呼叫父類的屬性和方法,必須存在於有繼承關係的兩個類中;
在呼叫構造方法時,因為兩個都必須放在構造方法中的第一行,因此兩個在呼叫構造方法時不能同時使用;
final關鍵字
final可以用於標記類、方法和變數
final關鍵字在標記類時此類不能被在繼承;
final關鍵字在標記方法時不能被子類複寫;
final修飾的變數(成員變數和區域性變數)即成為常量,只能被賦值一次;
public static final 全域性常量
抽象類的使用
抽象類用abstract關鍵字修飾。抽象類可以有例項變數、常量,也可以同時有抽象方法和具體方法,它提供一個繼承的出發點,不能被例項化,但是可以透過多型性,可由其子類進行例項化。private 和static 不能宣告為抽象的,子類需要複寫父類所有的抽象方法;
介面的使用
介面是常量和抽象方法的集合。介面中不能有普通方法和變數。且常量必須被賦值。
介面可以實現多繼承(即介面可以繼承一個到多個介面,但不能繼承類)
一個類可以實現多個介面;介面不能有構造方法
若extends和implements同時出現,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用在方法的內部,用來手動的丟擲異常物件。要麼與try…catch一起使用,要麼與throws一起使用。
finally關鍵字
finally必須用在異常中,不能孤立的使用,至少必須有try語句(但只有try,沒有catch和finally會報錯,即try,catch和finally都不能單獨使用;一個try可以有多個catch;try沒有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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Java基礎]Java總結篇Java
- java基礎總結一Java
- 9Java基礎總結Java
- Java基礎知識總結Java
- java集合框架基礎總結Java框架
- java基礎註釋總結Java
- java基礎題目總結Java
- java基礎部分總結2Java
- Java 常用類總結(SE基礎)Java
- Java基礎知識點總結Java
- Java基礎知識總結-1Java
- Java基礎集合簡單總結Java
- Java面試題總結之Java基礎(三)Java面試題
- Java基礎面試知識點總結Java面試
- Java基礎之常見API總結JavaAPI
- Java基礎對反射知識總結Java反射
- java基礎使用的集合大總結Java
- JAVA基礎知識精華總結(一)Java
- JAVA基礎知識精華總結(二)Java
- Java程式設計基礎29——JavaSE總結Java程式設計
- Java個人知識點總結(基礎篇)Java
- Java基礎 | Stream流原理與用法總結Java
- 基礎篇:java GC 總結,建議收藏JavaGC
- 【Java基礎】--J2SE深度總結Java
- JavaScript基礎總結JavaScript
- 安全基礎總結
- VUE基礎總結Vue
- MongoDB基礎總結MongoDB
- 機器學習基礎總結機器學習
- 【HTML——基礎總結】HTML
- 【總結】Javascript基礎JavaScript
- jQuery基礎總結jQuery
- Java基礎知識學習筆記總結Java筆記
- JAVA基礎容易疏忽的知識點總結Java
- 連結串列基礎總結
- JavaScript基礎總結(三)——陣列總結JavaScript陣列
- 基於JAVA語言的selenium測試基礎總結Java
- 最全JavaScript基礎總結JavaScript