Java程式有哪幾種型別?
前端(Applet)、本機(Application)及後端(Servlets)程式
Java語言的程序既要被編譯又要被解釋執行。
同一java來源檔案中最多只能定義一個帶有public修飾的類,且要求原始程式的檔案名稱必須與public修飾的類別名稱一致。 Main方法通常也放在該類別中。
編譯一個java原始程式時應該使用什麼指令?
javac表示利用編譯器將一個原始程式編譯為字節碼程式;java表示利用解釋器來解釋執行字節碼程式;appletviewer用來執行一個Applet小程式。
Java 原始程式與位元組碼檔案的副檔名分別是什麼?
.java .class
已掌握 Application程式的撰寫
掌握 Applet 程式的撰寫import java.applet.Applet; //import語句用來引入
java
系統提供的類別#import java.awt.*;
public class j1_3 extends Applet //繼承2##11t類別{
publicvoid paint(Graphics g) //此方法為Applet 中實作圖形繪製的方法
{ //Applet程式將自動呼叫該方法進行繪圖,paint()方法的參數
g是一個代表「畫筆」的
Graphics物件。
g.setColor(Color.
red
); //設定畫筆顏色
g.drawString ("大家好
", 40, 80); //在指定位置繪製字串,後面兩個參數為座標位置
#g.drawLine(30, 40 , 130, 40); //繪製直線,始點和末點座標
g.drawOval(30, 40, 80, 60); / /
繪製橢圓,四個參數為橢圓外切矩形左上角的座標、寬度及高度
Java平台的版本:J2SE、J2ME、J2EE
#
print 與println 的差異。Print實作不換行的資料輸出。
Println實現資料輸出後換行。
第二章陣列的定義與使用。
陣列的定義格式: int c[ ]=new int[5]; float f[ ][ ]=new float [5][6];
在建立多維數組時,最後一維的大小可以不給定。int c[ ][ ]=new int [5][ ];
#陣列的初始化。有兩種方式:
(1)
直接賦值,例如int a[ ][ ] = {{1,2,3,4}, {5,6, 7,8}, {9,10,11,12}};(2)
先創建好之後,再一個元素一個元素的賦值。例如### int c[ ]=new int[5]; c[0]=1; c[1]=2; ......###### #########基本資料型態。 #########int、char、boolean 、float等,每一種類型在記憶體中所佔據的長度和預設值(預設值)。 ######int 4位元組0######char 2位元組0######boolean 1位元組false######float 4位元組0.0F####### #########什麼是自動資料型別轉換?什麼是強制資料型別轉換? ### ###Java規定,資料表示範圍小的“短資料型別”轉換為資料表示範圍大的“長資料型別”,系統將自動進行轉換;反之必須使用強制型別轉換。
基本資料型態自動轉換的遞增順序為:byte->short->char->int->long->float->double。
強制型別轉換格式為:變數=(資料型別)表達式。
double i=15; short b=(short) i;
#【注意】布林類型不能與其他類型學轉換。
Java語言識別碼的命名規則。
四條規則:
(1) 標識符由英文字母 (a~z, A~Z)、數字、底線_ 和美元符號$組成;
(2) 首字母不能使用數字;
(3) 標識符不能是保留字,例如 class;
(4) 大小寫字母表示不同的意義,即代表不同的識別符。 (大小寫敏感)
Java 常用的保留字(關鍵字)有哪些?分別用來做什麼?
abstract、static、public、final、super 、const 、void 、int 、 float…
注意:保留字都是小寫字母,且保留字不能當作識別字來使用。
變數的作用域。局部變數與全域變數的差異。
全域變量,也有叫成員變數的,就是類別的成員,宣告在類別裡,整個類別都能用,還可以透過存取修飾符控制其他類別是夠可以使用。
局部變量,在方法中,程式碼區塊中,方法的參數等地方聲明,作用域只有從他聲明的地方向下到最近的一個右大括號結束,出了這個範圍就無法使用了。
全域變數的隱藏。如果全域變數與局部變數同名,那麼在局部變數的作用域內,全域變數就被隱藏了,即不發揮作用。
main()方法。
main方法是程式的入口與出口;main方法的格式是固定的, 一般不能改動。 public static void main(String args[ ])
# 常用的運算子。
(1)條件運算子: c<10 ? 1: c<25 ? 2 : 3 。
(2)邏輯運算子 && ||&!
(3)算術運算子: x+=y; x=x+y; 5%3 int s; s=s+3;
注意:算術的加法與字串的加法之間的不同:String s; s=s+3;
掌握Java流程控制語句的使用,包括分支語句、循環語句和跳躍語句。
例如if…then… else…語句以及 switch…case… 語句的使用。
int c=1; switch (c) { case 1: … ;# break; &default: …&break; }#while 迴圈與 do…while 迴圈的差異
#while 迴圈與 do…while 迴圈的差異
While是先判斷後執行。 do…while是先執行後判斷,至少執行一次。
break 和continue的差異 。
break:跳出所在迴圈體。結束循環。
continue:終止目前一輪循環,繼續下一輪循環。
三種註解語句的使用。
// :單行註解
/*&*/:多行註解
/**&*/:文件註解
怎麼建立一個類別的對象,應該使用什麼保留字?
定義java類別後,就可以使用「new+建構方法」來建立類別的物件。
如何回收一個不再使用的物件?使用什麼保留字?
finalize保留字
Java的記憶體回收機制。一般由系統的內存回收程序負責釋放無用的內存,程式設計師可以不用負責回收內存。
Java利用package語句來建立一個套件。
使用者可以定義自己的包,也就是自訂包,也可以使用Java系統所提供的包,也就是係統包。
靜態變數與方法。
static是靜態修飾符,用來表示一個變數或方法是靜態的。一個靜態變數或方法屬於類,不屬於任何對象,可以透過「類名.變數名」和「對象名.變數名」來存取。非靜態變數和方法則屬於特定的對象,只能透過「對象名.變數名」來存取。靜態變數也稱為類別變量,是一個公共的記憶體單元。
靜態:static
用法:是修飾符,用於修飾成員(成員變數、成員函數)
當成員被靜態修飾後,就多了一個呼叫方式,除了可以被物件呼叫外
還可以直接被類別名稱呼叫。類別名稱.靜態成員。
static特點:
1、隨著類別的載入而載入。
也就是說:靜態會隨著類別的消失而消失,說明他的生命週期最長。
2、優先於物件存在
明確一點:靜態是先存在,物件是後存在的。
3、被所有物件所共用。
4、可以直接被類別名稱所呼叫。
實例變數與類別變數的差異:
1、存放位置。
類別變數隨著類別的載入而存在於方法區中。
實例變數隨著物件的建立而存在於堆記憶體中。
2、生命週期。
類別變數生命週期最長,隨著類別的消失而消失。
實例變數生命週期隨著物件的消失而消失。
靜態使用注意事項:
1、靜態方法只能是存取靜態成員。
非靜態方法既可以存取靜態也可以存取非靜態。
2、靜態方法中不可以定義this,super關鍵字。
因為靜態優先於物件存在,所以靜態方法中不可以出現this。
3、主函數是靜態的。
靜態有利有弊
利:對物件的共享資料進行單獨空間的存儲,節省空間,沒有必要每一個物件中都儲存一份。
可以直接被類別名稱呼叫。
弊:生命週期過長。
訪問出現限制(靜態雖好,只能存取靜態)。
類別的成員變數進行初始化的主要途徑。主要有5種途徑。
(1)、自動初始化,如果是基本成員變數就賦值0,其他賦值null, boolean賦值false。
(2)、直接賦值,就是在定義類別成員變數的地方為其賦值。
(3)、透過呼叫方法來提供初始值。 如果方法帶參數的話,參數必須是先前被初始化了的。
(4)、建構器初始化。 透過帶有參數的建構子來建構Java 物件,透過輸入不同的參數使得Java對象具有不同初始值。但要明確一點:無法阻止自動初始化的進行,它將在構造器被呼叫之前發生。
(5)、靜態資料的初始化。 靜態資料屬於類,只佔用一份儲存區域。靜態初始化只有在必要時才會進行。當創建物件或第一次存取靜態資料時,它們才會被初始化,此後,靜態物件不會再被初始化。
物件導向技術的三大特性。
封裝、繼承、多型。
子類別物件與父類別物件的關係。
子類別的物件可以直接賦值給父類別的對象,但是父類別的物件不能直接賦值給子類別的對象,必須進行類型轉換。
Father f=new Father(); Son s=new Son();
f=s; s=(Son)f;
繼承的概念。單重繼承與多重繼承的差別。
繼承指的是一個類別從另一個類別從獲得屬性和方法的過程。繼承使用extends關鍵字。 Java不支援多重繼承。為了實現多重繼承的功能,Java採用介面技術,介面可以支援多重繼承。介面中的變數和方法都是public 的。
什麼是Object類別?
Object是所有類別的父類,它有很多類別物件會用到的方法,例如比較常用的toString 、equals,當你新建xx類別時,可以重寫Object已經定義的方法,也可以直接呼叫Object#中的方法,如果你寫一個封裝的方法,不確定傳進來的是什麼類型的值,就可以使用Object作為一個籠統類別。
Java語言的建構方法。什麼是構造方法?構造方法有哪些特色?什麼是缺省的建構方法?
建構方法就是與類別同名的那個方法,它的作用是可以用來初始化,
1.建構器必須與類別同名(如果一個來源檔案中有多個類,那麼建構器必須與公共類別同名)
2.每個類別可以有一個以上的建構器
#3.建構器可以有0個、1#或#1 個以上的參數
4.建構器沒有回傳值
5.建構子總是伴隨著new操作一起呼叫
如果你沒有定議任何建構方法的形式,程式會為你取一個不帶任何參數的構造函數,那麼你產生類別的物件時只能用不帶參數的方法#。
函數呼叫時參數的傳遞問題(也就是到底是值傳遞還是地址傳遞)。
如果參數的類型為基本類型,那麼通常是值傳遞,即實參的值被傳遞給形參;如果參數是一個類別的對象,那麼通常是位址傳遞,即實參的地址傳遞給形參。
覆寫與重載。
重載是同一個類別中有多個方法同名,但方法的參數個數或型別不同 。
覆寫是父類別與子類別之間有多個方法同名,且參數個數和型別都相同。只是方法體不同。
一個java程式中可以有多個類,但只能有一個主類別(即public 類別)。
主類別中一般有一個主方法,main()方法。
注意main()方法的格式。
修飾符:
#(1) 存取權修飾符。
(2) abstract修飾符。
abstract修飾的類別稱為抽象類別, abstract修飾的方法稱為抽象方法,抽象方法只能位於抽象類別中,但抽象類別中也可以有非抽象的方法。
(3) final修飾符。 final修飾的類別稱為最終類,最終類別不能被繼承。 final修飾的方法稱為最終方法,最終方法不能被重寫。
介面的定義(interface)與實作(implements)。
介面是由常數和抽象方法所組成的特殊類別。介面中的變數和方法都是public的。
注意 public、protected、default(不加修飾符)、private之間所存在的差異。
public protected default private:
在同一個類別中: ok ok ok ok
#同一個套件中: ok ok ok no
子類別: ok ok no no
#
不同套件中: ok no no no
String類別與StringBuffer類別。
注意一下String類別的常用方法的使用:length(), charAt(), toUpperCase(), toLowerCase(), valueOf()方法;
String類別適用於描述字串事物。
那麼他就提供了多個方法對字串進行操作。
常見運算有哪些?
1、取得
1.1 字串中的字元數,也就是字串的長度。
int length():取得長度
1.2 根據位置取得位置上某個字元。
char charAt(int index)
1.3 根據字元取得該字元在字串中的位置。
int indexOf(int ch):傳回的是ch在字串中第一次出現的位置。
int indexOf(int ch,int fromIndex):從fromIndex指定位置開始,取得ch第一次出現的位置。
1.4 根據字串取得字串在字串中的位置。
int indexOf(String str):傳回的是str在字串中第一次出現的位置。
int indexOf(String str,int fromIndex):從fromIndex指定位置開始,取得str第一次出現的位置。
2、判斷
2.1 字串中是否包含某一個子字串。
boolean contains(str):
特別之處:indexOf(str):可以索引str第一次出現的位置,如果傳回-1,則表示該str不在字串中存在。所以,也可以用來對指定判斷是否包含。
2.2 字串中是否有內容。
boolean isEmpty():原理就是判斷長度是否為0.
2.3 字串是否以指定位置開頭。
boolean startsWith(str):
2.4 字串是否以指定位置結尾。
boolean endsWith(str):
2.5 判斷字串內容是否相同。 複寫了Object類別中的equals方法。
boolean equals(str):
2.6 判斷內容是否相同並忽略大小寫。
boolean equalsIgnoreCase():
3、轉換
3.1 將字元陣列轉成字串
建構子:
String(char[])
String(char[],offset,count):將字元陣列中由offset位置開始之後的count個字元轉換成字串。
靜態方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count )
static String valueOf(char[]);
3.2 將字串轉換成字元陣列
char[] toCharArray();
3.3 將位元組陣列轉換成字串
#String(byte[]);
String(byte[],offset,count):將位元組數組中的一部分轉換成字串。
3.4 將字串轉換成位元組數組
byte[] getBytes();
3.5 將基本資料型別轉換成字串
#String valueOf(int)
String valueOf(double)
特殊:字串和字元陣列走在轉換過程中是可以指定編碼表的;
4、取代
##String replace(oldchar,newchar) ; 5、切割String split(regex);##6、子字串
## String substring(begin);String substring(begin,end); 7、轉換、移除空格、比較u#7.1 將字符串轉換成大些或小寫。 String toUpperCase():轉換成大寫String toLowerCase(): 轉換成小寫7.2 將字串兩端的多個空格去掉。String trim();7.3 對兩個字串進行自然順序的比較。
int comparaTo(String);#StringBuffer
#:
字串緩衝區,是一個容器。 特點:1、長度是可變化的。 2、可以直接操作多種資料型態。 3、最終會透過toString()方法變成字串。 StringBuffer可以將字串內容增刪。 CURD C create U update R read D delete #1、儲存StringBuffer append():將指定資料作為參數添加到已有資料結尾處。 StringBuffer insert(index,資料):可以將資料插入指定index位置。 2、刪除StringBuffer delete(start,end):刪除緩衝區中指定位置的數據,包含start,不包含end。 StringBuffer deleteCahrAt(index):刪除指定位置的字元。 3、取得char charAt(int index)int indexOf(String str)int lastIndexOf(String str )int length()String substring(int start,int end) 4、修改#StringBuffer replace( int start,int end,String str):用字串取代某段位置的字串。 void setCharAt(int index,char ch):用字元取代某個位置的字元。 5、反轉StringBuffer reverse(): 6、將緩衝區指定資料儲存到指定字元數組。 void getChars(int srcbegin,int srcend,char[] dst,int dstBegin)srcbegin:字串中開始截取的位置srcend:字串中結束位置dst:陣列dstBegin:陣列開始存放資料的位置
#用雙引號括起來的字串稱為字串常數,它是一個匿名的String物件。
同一個字串常數在記憶體中只有一個,例如,常數 “a” 在記憶體中只有一個。 字串的連接運算子:
+ ,例如: 2+“,”+3字串的比較運算:
equals() 方法:用來比較兩個字串物件所包含的值是否相等。==
運算子
:用來比較兩個字串物件在記憶體的位址是否相等。equals() 方法與 equalsIgnoreCase() 方法的差異。
equals() 方法:用來比較兩個字串物件所包含的值是否相等。 equalsIgnoreCase() 方法:不區分大小寫的比較兩個字串物件所包含的值是否相等。
Math類別中的方法
: random( ),sin(x) cos(x)ceil(x) :求不小於給定實數的最小整數。
Math類別中的常數#:
PI、E##
###################################################包裝類別######:### Integer類別: parseInt(), toString()######Double類別: parseDouble() Float類別….###### ##### ####第七章############Java異常處理機制。 ######
Throwable 類別是 Java 語言中所有錯誤或例外的超類別(這就是一切皆可拋的東西)。它有兩個子類別:Error和Exception。
Error:用於指示合理的應用程式不應該試圖捕獲的嚴重問題。這種情況是很大的問題,大到你不能處理了,所以聽之任之就行了,你不用管它。
Exception:它指出了合理的應用程式想要捕獲的條件。 Exception又分為兩類:一種是CheckedException,一種是UncheckedException。這兩種Exception的差異主要是CheckedException需要用try...catch...顯示的捕獲,而UncheckedException不需要捕獲。通常UncheckedException又叫做RuntimeException。
對於可恢復的條件使用被檢查的異常(CheckedException),對於程式錯誤(言外之意不可恢復,大錯已經釀成)使用運行時異常(RuntimeException)。
我們常見的RuntimeExcepiton有IllegalArgumentException、IllegalStateException、NullPointerException、IndexOutOfBoundsException等等。對於那些CheckedException就不勝枚舉了,我們在寫程式過程中try...catch...捕捉的異常都是CheckedException。 io套件中的IOException及其子類,這些都是CheckedException。
異常是如何被拋出的、被捕獲和處理的?
throws/throw 關鍵字:
#如果一個方法沒有捕獲一個檢查性異常,那麼該方法必須使用 throws 關鍵字來聲明。 throws 關鍵字放在方法簽署的尾端。
也可以使用 throw 關鍵字拋出一個例外,無論它是新實例化的還是剛捕獲到的。
一個方法可以宣告拋出多個異常,多個異常之間用逗號隔開。
捕獲異常
#使用 try 和 catch 關鍵字可以捕獲異常。 try/catch 程式碼區塊放在異常可能發生的地方。
try/catch程式碼區塊中的程式碼稱為保護程式碼,使用try/catch 的語法如下:
try
{
// 程式程式碼
}catch(ExceptionName e1)
{
//Catch 區塊
}
#Catch 語句包含要擷取例外類型的聲明。當保護程式碼區塊中發生一個異常時,try 後面的 catch 區塊就會被檢查。
如果發生的例外狀況包含在 catch 區塊中,則異常會被傳遞到該 catch 區塊,這和傳遞一個參數到方法是一樣。
finally關鍵字
finally 關鍵字用來建立在 try 程式碼區塊後面執行的程式碼區塊。
無論是否發生異常,finally 程式碼區塊中的程式碼總是會被執行。
在 finally 程式碼區塊中,可以執行清理類型等收尾善後性質的語句。
finally 程式碼區塊出現在 catch 程式碼區塊最後
catch 不能獨立於 try 存在。
在 try/catch 後面加入 finally 區塊並非強制性要求的。
try 程式碼後不能既沒 catch 區塊也沒 finally 區塊。
try, catch, finally 區塊之間不能新增任何程式碼。
Java異常處理模組可以同時捕獲多個異常,如果這些異常之間具有繼承關係,則必須先捕獲子類別的異常,再捕獲父類別的異常。
Java 例外處理所涉及的關鍵字:
try、throw、catch 、throws、 finally
#Applet小程式的設計與開發。
import java.applet.*
#注意 Applet 小程式和Application程式的差異。
Applet的生命週期以及生命週期中每個方法的功能。
在Java Applet的生命週期中,共有四種狀態(初始狀態、運行狀態、停止態和消亡態)和四個方法:init()、start ()、stop()和destroy()。
1. init()
當建立Java Applet且第一次使用支援Java的瀏覽器載入時,就會執行init()方法。在Java Applet生命週期中,此方法只會執行一次,因此可以利用這一點在init()方法中進行一些只需執行一次的初始化操作,例如對變數的初始化等。
2. start()
調用完init()方法後,系統會自動呼叫start()方法。當使用者離開包含Applet的首頁後再返回時,或是當瀏覽器從圖示狀態還原為視窗時,系統會自動再執行一遍start()方法。
和init()方法不同,start()方法在Applet的生命週期中被多次調用,該方法是Applet的主體。在start()方法中,可以執行一些任務,或是啟動相關的執行緒來執行任務,如循環播放歌曲等。
3. stop()
和star()方法相對應,當使用者離開Applet所在頁面或是瀏覽器變成圖示時,系統都會呼叫stop ()方法,因此此方法也是可以被多次呼叫的。
stop()方法起到這樣的作用:當使用者在當下時刻並不十分關注Applet時,停止一些耗用資源的工作,這樣就可以提高系統的運行速度,而且系統會自動調用該方法,並不需要人為介入。倘若編寫的Applet不涉及動畫等多媒體,一般不必重寫該方法。
4. destroy()
當使用者關閉瀏覽器時,系統就會呼叫destroy()方法,應該注意stop()方法和destroy()方法的區別。
Applet中圖形的繪製方法:
drawString、drawChars、drawBytes、drawLine、drawRect、fillRect、drawRoundRect、drawOval、drawArc、drawPolygon等。
圖形繪製的相關方法:drawRect(100,100,150,150); setColor(Color.black); drawLine(10,10,10, 50);
#Java圖形使用者介面開發。
常用的容器有哪些?
Frame、Panel、Applet、Dialog、Window。
常用的佈局類型有哪些?
BorderLayout(邊界佈局)、FlowLayout(串流佈局)、GridLayout(網格佈局)、CardLayout(卡片佈局)、GridBagLayout(網格套件佈局),其中Frame的缺失省佈局類型是BorderLayout;Panel和Applet的預設佈局類型是FlowLayout。
各種元件的使用
#例如文字輸入的元件(TextField和TextArea)、標籤(Label) 、按鈕(Button)、清單(List )、下拉清單(Choice)等。
設定Frame、Panel等容器的大小和背景色。
setBounds、setSize和setBackground。
Frame 帶有標題和縮放功能;
#Panel 不含標題和縮放功能。
Frame 物件預設是看不見的,需要透過setVisible方法來設定其可見性為true。
另外,Frame物件預設大小為0×0像素。
Java圖形使用者介面開發需要匯入套件:java.awt,而圖形使用者介面中的事件處理,則需要導入套件:java.awt.event
Java事件處理的實作步驟(三個步驟)。
在Java的圖形介面開發中,要讓圖形介面接收到使用者的操作,就要為各個元件加入事件處理機制。在事件處理過程中,涉及3個類別物件。第一是Event事件,實作使用者對圖形介面元件的操作,以類別的形式出現,例如視窗操作對應類別為WindowEvent,鍵盤操作對應類別為KeyEvent;第二是事件來源,即事件發生的場所,例如一個按鈕、單選框或複選框、文字方塊等;第三是事件處理者,接收發生的事件並進行處理,也稱為監聽器。
1、建立接受回應的元件(控制項)
#2、實作相關事件監聽介面
3、註冊事件來源的動作監聽器
4、事件觸發時的事件處理
題型:填空題、選擇題、簡答題、程式閱讀題、程式填空題、程式設計題。
複習方法:多看上課的ppt課件和教材。
另外,把實驗課做過的實驗題重新做一遍,程式設計題可能是以前實驗做過的。
finally:最終,作為一個修飾符。
1、可以修飾類,函數,變數。
2、被finally修飾的類別不可以被繼承。為了避免被繼承後,被子類別複寫功能。
3、被finally修飾的功能不能被複寫。
4、被finally修飾的變數是常數,只能賦值一次。既可以修飾成員變量,也可以修飾局部變數。
當在描述事物時,一些資料出現的值是固定的。那麼這時為了增強閱讀性,都給這些數值取個名字,方便閱讀。而這個值不需要改變,所以加上finally修飾。
包名:所有字母全部小寫。
類別名稱介面名稱:多單字組成時,所有單字首字母全大寫。
變數名和函數名:多字組成時,第一個單字首字母小寫,其他單字首字母大寫。
常數名:所有字母都大寫,多單字組成時,單字間底線連接。
Java中常數的分類:
1、整形常數,所有整數。
2、小數常數,所有小數。
3、布林型常數,true,false。
4、字元常數,將一個數字字元或符號以‘’標識。
5、字串常數,將一個或多個字元以「」標識。
6、null常數,只有null
#轉義字元:透過\來改變後面字母或符號的意思。
\n:換行
\b:退格,相當於backspace鍵
#\r:按下回車鍵,Windows系統,回車鍵由兩個字元來表示\r\n
\t:製表符,相當於tab鍵
以後開發其實就是找物件使用,沒有物件就創建一個對象。
類別:現實生活中事物的描述。
物件:就是這類事物實實在存在的個體。
套件與套件之間進行訪問,被訪問的套件及類別中的成員,需要public修飾。
不同套件中的子類別也可以直接存取父類別中被protected修飾的成員。
套件與套件之間可以使用的權限有兩種:public protected
為了簡化類別名稱的書寫,使用一個關鍵字:import
import 導入的是套件中的類別。
建議:不要寫通配符*,需要用到套件中的哪個類別就導入哪個類別。
建議定包名不要重複。
可以用url來定義,url是唯一的。
以上是java常用知識點彙總的詳細內容。更多資訊請關注PHP中文網其他相關文章!