版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)教程主講:計(jì)算機(jī)科學(xué)與技術(shù)系
周華平E-mail:hpzhou@2005-5-1第一章軟件開(kāi)發(fā)基礎(chǔ)與Java語(yǔ)言概述1.1軟件開(kāi)發(fā)基礎(chǔ)1.1.1軟件運(yùn)行原理計(jì)算機(jī)系統(tǒng)是由硬件和軟件兩大部分組成。硬件:中央處理單元、數(shù)學(xué)邏輯單元、內(nèi)存單元、輸入單元、輸出單元和外存單元組成。軟件:由程序、運(yùn)行程序所需要的數(shù)據(jù)和文檔三部分組成。軟件運(yùn)行原理:軟件加載到內(nèi)存,CPU依次從內(nèi)存取出每一條指令順序執(zhí)行,從而完成程序員事先編寫(xiě)好的各種數(shù)據(jù)的處理、輸入、輸出等操作。1.1.2操作系統(tǒng)與計(jì)算結(jié)構(gòu)的發(fā)展(1)操作系統(tǒng)簡(jiǎn)介功能:為應(yīng)用程序提供處理機(jī)管理、內(nèi)存管理、輸入輸出、設(shè)備管理及文件管理等,是應(yīng)用程序與硬件之間的"接口"。
PC機(jī)上常用的操作系統(tǒng):DOS、Windows98、WindowsNT、UNIX、Linux等。直接運(yùn)行于裸機(jī)的應(yīng)用軟件:應(yīng)用邏輯→內(nèi)存管理→輸入輸出→設(shè)備管理→硬件(裸機(jī))操作系統(tǒng)管理的應(yīng)用軟件:應(yīng)用邏輯→操作系統(tǒng)→硬件(裸機(jī))
(2)計(jì)算結(jié)構(gòu)的發(fā)展(計(jì)算結(jié)構(gòu)是指應(yīng)用系統(tǒng)的系統(tǒng)體系結(jié)構(gòu),就是系統(tǒng)層次、模塊結(jié)構(gòu))
a.主機(jī)-終端模式:集中運(yùn)算和集中管理是主機(jī)-終端模式的特點(diǎn)。一臺(tái)主機(jī)帶多個(gè)終端。主機(jī)負(fù)擔(dān)太重。
b.單機(jī)模式:個(gè)人計(jì)算機(jī)(PC)迅速發(fā)展,軟件運(yùn)行以孤立的機(jī)器進(jìn)行。
c.客戶機(jī)/服務(wù)器模式:具有分布運(yùn)算和分布管理的特點(diǎn)。即服務(wù)器進(jìn)行匯總、綜合處理;客戶機(jī)實(shí)現(xiàn)與用戶的對(duì)話及客戶端的工作處理。
d.瀏覽器/N層服務(wù)器模式:具有分布運(yùn)算和集中管理的特點(diǎn)。由瀏覽器提供統(tǒng)一的用戶界面。1.1.3軟件開(kāi)發(fā)過(guò)程與程序設(shè)計(jì)語(yǔ)言(1)軟件開(kāi)發(fā)過(guò)程操作系統(tǒng)與系統(tǒng)軟件的開(kāi)發(fā)要求更加嚴(yán)謹(jǐn)、高效、安全和方便;開(kāi)發(fā)人員需要具有精深的專(zhuān)業(yè)知識(shí)與技能。應(yīng)用軟件的開(kāi)發(fā)是針對(duì)某個(gè)具體問(wèn)題或?qū)嶓w,專(zhuān)用性強(qiáng),軟件間的差異性大,需求量最多。應(yīng)用軟件開(kāi)發(fā)能力一般包括:
a.了解應(yīng)用軟件的背景知識(shí)
b.分析和了解應(yīng)用軟件的功能和要求
c.確定應(yīng)用軟件的計(jì)算結(jié)構(gòu)
d.熟悉應(yīng)用軟件的工作運(yùn)行環(huán)境
e.掌握開(kāi)發(fā)應(yīng)用軟件的工具
(2)程序設(shè)計(jì)語(yǔ)言及其發(fā)展
a.面向機(jī)器的語(yǔ)言
b.面向過(guò)程的語(yǔ)言
c.面向?qū)ο蟮恼Z(yǔ)言1.2Java語(yǔ)言概述1.2.1Java的發(fā)展歷史
1995年5月23日,Java這種定位于網(wǎng)絡(luò)應(yīng)用的程序設(shè)計(jì)語(yǔ)言正式推出。
Sun公司是這樣描述:Java是一種簡(jiǎn)單的、面向?qū)ο蟮摹?qiáng)壯的、安全的、可移植的、高性能的、體系結(jié)構(gòu)中立的、解釋型的、多線索的、動(dòng)態(tài)的語(yǔ)言。1.2.2Java程序的開(kāi)發(fā)過(guò)程與運(yùn)行環(huán)境
1、編寫(xiě)源程序例1.1第一個(gè)Java程序:MyFirstJavaProgram.javaimportjava.io.*; //引入以java.io
開(kāi)頭的模塊(統(tǒng)稱(chēng)為java.io
包)到程序中。publicclassMyFirstJavaProgram //類(lèi)頭,用關(guān)鍵字class來(lái)標(biāo)志一個(gè)類(lèi)定義的開(kāi)始。{ //類(lèi)體由大括號(hào)括起來(lái)。
publicstaticvoidmain(Stringargs[])//main方法是主類(lèi)標(biāo)志
{
System.out.println("ThisismyfirstJavaprogram!");//方法體
}}
幾個(gè)入門(mén)概念:(1)Java語(yǔ)言標(biāo)識(shí)符的字母區(qū)分大小寫(xiě);(2)不允許在一個(gè)類(lèi)的內(nèi)部再定義另一個(gè)類(lèi),各個(gè)類(lèi)之間必須是平行的,而不能嵌套;(3)一個(gè)程序可以由一個(gè)或多個(gè)類(lèi)組成,其中必須有也只能有一個(gè)主類(lèi)。(4)源文件名必須與程序的主類(lèi)名一致,并且以.java為其后綴。
2、編譯生成字節(jié)碼
Java引入編譯的主要原因:(1)保證程序的語(yǔ)法正確性;(2)通過(guò)編譯引入Java類(lèi)庫(kù)中已編寫(xiě)好的模塊。(3)編譯成功的結(jié)果將是一個(gè)或多個(gè)字節(jié)碼文件,每個(gè)字節(jié)碼文件對(duì)應(yīng)源程序中定義的一個(gè)類(lèi),該文件的名字就是它所對(duì)應(yīng)的類(lèi)的名字,并以.class為統(tǒng)一的后綴名。
3、運(yùn)行運(yùn)行一個(gè)編譯好的Java字節(jié)碼程序,需要調(diào)用Java的解釋器軟件java.exe。
解釋運(yùn)行的三個(gè)階段:(1)載入:Java解釋器中的類(lèi)載入器將字節(jié)碼文件加載到內(nèi)存(網(wǎng)上運(yùn)行程序則通過(guò)網(wǎng)絡(luò)下載到本地內(nèi)存);(2)代碼校驗(yàn):Java解釋器中的代碼檢驗(yàn)器檢查這些字節(jié)碼的合法性;(3)解釋執(zhí)行:合法的字節(jié)碼程序由Java解釋器逐句地解釋運(yùn)行。1.2.3Applet與ApplicationJavaApplication程序的主要特點(diǎn):(1)JavaApplication程序是獨(dú)立完整的程序。(2)在命令行調(diào)用獨(dú)立的解釋器軟件即可運(yùn)行JavaApplication程序。(3)JavaApplication程序的主類(lèi)必須有一個(gè)定義為:
publicstaticvoidmain(Stringargs[])的main方法,是JavaApplication程序執(zhí)行的入口點(diǎn)。如例1.1例1.2第一個(gè)JavaApplet程序:MyFirstJavaApplet.javaimportjava.applet.Applet; //引入類(lèi)庫(kù)中定義好的java.applet.Applet類(lèi);importjava.awt.Graphics; //引入java.awt.Graphics
類(lèi)(圖形類(lèi))publicclassMyFirstJavaAppletextendsApplet //主類(lèi)必須是Applet類(lèi)的子類(lèi){publicvoidpaint(Graphicsg){
g.drawString("ThisismyfirstJavaApplet!",15,20);}}
(1)JavaApplet程序是在WWW瀏覽器環(huán)境下運(yùn)行,即不是完整獨(dú)立運(yùn)行程序;(2)運(yùn)行JavaApplet程序的解釋器不是獨(dú)立的軟件,而是嵌在WWW瀏覽器中做為瀏覽器軟件的一部分。(3)JavaApplet程序中不需要有main方法,但是JavaApplet程序的主類(lèi)必須是類(lèi)庫(kù)中已定義好的類(lèi)java.applet.Applet的子類(lèi)。(4)JavaApplet程序可以直接利用瀏覽器或AppletViewer
提供的圖形用戶界面,而JavaApplication程序則必須另外書(shū)寫(xiě)專(zhuān)用代碼來(lái)營(yíng)建自己的圖形界面。(5)JavaApplet更多的具體體現(xiàn)狀態(tài)和狀態(tài)之間的切換,而不是固定的順序化的執(zhí)行過(guò)程。第二章Java語(yǔ)言基礎(chǔ)2.1Java程序的輸入輸出1.字符界面下的輸入輸出:JavaApplication例2.1字符界面下基本輸入輸出程序:SimpleCharInOut.javaimportjava.io.*; //引入java.io.*系統(tǒng)輸入輸出類(lèi)包publicclassSinpleCharInOut //類(lèi)頭{ publicstaticvoidmain(Stringargs[]) //main方法,說(shuō)明該為主類(lèi)
{ charc=''; //定義字符型變量,賦初值
System.out.print("Enteracharacterplease:");//顯示提示信息
try{c=(char)System.in.read();//接受用戶輸入的字符并保存在變量c中
}catch(IOExceptione){} System.out.println(“You’veenteredcharacter:”+c); //向屏幕輸出變量c中保存的字符} }說(shuō)明:
a."="是Java語(yǔ)言的賦值號(hào);
b.System.in是java.io
包中InputStream
類(lèi)的對(duì)象,代表系統(tǒng)的標(biāo)準(zhǔn)輸入,即鍵盤(pán);read()是讀數(shù)據(jù)方法。
c.System.out是java.io
包中OutputStream
類(lèi)的對(duì)象,代表系統(tǒng)的標(biāo)準(zhǔn)輸出,即顯示器;print()是輸出方法。
d.當(dāng)程序執(zhí)行到read()方法就暫停下來(lái),等待用戶從鍵盤(pán)輸入一個(gè)字符并按回車(chē)鍵。
e.read()方法讀入的字符是整型int
,采用強(qiáng)制類(lèi)型轉(zhuǎn)換(char)成為字符型char。
f.字符串連接運(yùn)算符+。2、圖形界面下的輸入輸出:JavaApplet例2.2圖形界面下的基本輸入輸出程序:SimpleGraphicsInOut.javaimportjava.applet.Applet;importjava.awt.*;publicclassSimpleGraphicsInOutextendsApplet{ Labelprompt; //定義顯示提示信息的標(biāo)簽對(duì)象
TextFieldinput; //定義接受用戶鍵盤(pán)輸入的文本區(qū)域?qū)ο?/p>
Labeloutput; //定義回顯用戶輸入字符的標(biāo)簽對(duì)象
publicvoidinit() //定義瀏覽器打開(kāi)Applet后的初始操作
{prompt=newLabel("Enteracharacterpleasea:"); //創(chuàng)建提示標(biāo)簽
input=newTextField(3); //創(chuàng)建輸入?yún)^(qū)域
input=newTextField(3); output=newLabel(""); //創(chuàng)建輸出標(biāo)簽
add(prompt); //將提示標(biāo)簽加入圖形界面
add(input); //將輸入?yún)^(qū)域加入圖形界面
add(output); //將輸出標(biāo)簽加入圖形界面
} publicbooleanaction(Evente,Objecto)//定義對(duì)用戶輸入的響應(yīng)
{
output.setText("You'veenteredcharacter:"+o.toString());
//在輸出標(biāo)簽回顯輸入內(nèi)容
returntrue; }}說(shuō)明:
a.Label:java.awt
包中的Label類(lèi),用于定義并創(chuàng)建圖形界面的顯示標(biāo)簽對(duì)象。
b.TextFeild:java.awt
包中的TextFeild類(lèi),用于定義并創(chuàng)建圖形界面的單行文本輸入?yún)^(qū)域?qū)ο?,用?lái)接受用戶輸入的字符。
c.add:將Label、TextFeild
等所創(chuàng)建的對(duì)象加入到圖形界面的方法。
d.init():負(fù)責(zé)對(duì)JavaApplet程序進(jìn)行初始化的方法。
e.action():負(fù)責(zé)對(duì)用戶的輸入作響應(yīng)的方法。例2.3對(duì)應(yīng)SimpleGraphicsInOut.java
程序的HTML文件:SimpleGraphicsInOut.html<HTML><HEAD><TITLE>SimpleGraphicsInOut</TITLE></HEAD><BODY><appletcode=SimpleGraphicsInOutwidth=300height=200VIEWASTEXT></applet></BODY></HTML>3、圖形界面下的輸入輸出:JavaApplication例2.4圖形界面下的Application程序:GraphicsApplicationInOut.javaimportjava.awt.*; //引入java.awt
包中的所有類(lèi)publicclassGraphicsApplctInOut
//定義主類(lèi)GraphicsApplicationInOut{ publicstaticvoidmain(Stringargs[])//定義主類(lèi)中的main方法
{
ApplctFrame
MyFrame=newApplctFrame();//創(chuàng)建對(duì)象myFrame,形成圖形界面
}}classApplctFrameextendsFrame //定義Frame類(lèi)的子類(lèi)applictFrame{ Labelprompt; //定義提示標(biāo)簽對(duì)象
TextFieldinput; //定義輸入單行文本區(qū)域?qū)ο?/p>
Labeloutput; //定義輸出標(biāo)簽對(duì)象
ApplctFrame() //對(duì)ApplctFrame對(duì)象初始化{super("ApplicationGraphicsFrame");//調(diào)用父類(lèi)方法,指定圖形界面窗口的標(biāo)題setLayout(new
FlowLayout()); //指定圖形界面窗口中各部件的排列方式prompt=newLabel("Enteracharacterplease:"); //創(chuàng)建提示標(biāo)簽對(duì)象input=newTextField(4); //創(chuàng)建輸入單行文本區(qū)域?qū)ο髈utput=newLabel(""); //創(chuàng)建輸出標(biāo)簽對(duì)象
add(prompt); //將提示標(biāo)簽加入窗口
add(input); //將輸入?yún)^(qū)域加入窗口
add(output); //將輸出標(biāo)簽加入窗口
pack(); //使上述三部件間緊密相連
show(); //顯示圖形窗口
} publicbooleanaction(Evente,Objecto) //定義對(duì)用戶輸入的響應(yīng)
{
output.setText("You'veenteredcharacter:"+o.toString()); //在輸出標(biāo)簽回顯輸入內(nèi)容
returntrue; }publicboolean
handleEvent(Evente)//響應(yīng)用戶關(guān)閉窗口的操作
{if(e.id==Event.WINDOW_DESTROY)//如果事件的id是關(guān)閉窗口,則執(zhí)行退出。
System.exit(0); returnsuper.handleEvent(e); }}解釋?zhuān)?/p>
1、JavaApplication應(yīng)用程序下如何創(chuàng)建圖形界面示例;
2、程序由兩個(gè)類(lèi)構(gòu)成:(1)主類(lèi)publicclassGraphicsApplication
(包含main方法:publicstaticvoidmain(Stringargs[]))
(2)用戶自定義類(lèi)classApplctFrameextendsFrame(繼承父類(lèi)Frame的屬性與方法)
3、Frame類(lèi):框架(frame)是一個(gè)具有附加屬性的空口,這些屬性包括標(biāo)題欄、菜單欄、邊界、光標(biāo)和圖標(biāo)映象。是類(lèi)庫(kù)java.awt
包中的類(lèi)。
4、自定義類(lèi)ApplctFrame
中的方法:(1)構(gòu)造方法ApplctFrame():在創(chuàng)建對(duì)象的同時(shí)完成對(duì)ApplctFrame
對(duì)象初始化;(2)action()方法:當(dāng)一個(gè)動(dòng)作事件發(fā)生時(shí)被調(diào)用,即定義為處理所有用戶產(chǎn)生的事件。(3)handleEvent()方法:當(dāng)組件接收到事件時(shí)被調(diào)用,被定義為可以處理所有類(lèi)型的事件。(4)action()方法和handleEvent()方法都是組件Component類(lèi)中的方法;
5、Event類(lèi):事件(event)在AWT組件中流動(dòng)的事件由Event類(lèi)的對(duì)象表示。是類(lèi)庫(kù)java.awt
包中的類(lèi);
6、Component類(lèi):組件(component)是一種用戶界面對(duì)象,它可以顯示在屏幕上,還可以和用戶交互。這樣的用戶界面對(duì)象包括按鈕、滾動(dòng)條和文本域。是類(lèi)庫(kù)java.awt
包中的類(lèi);
7、JavaApplication程序從主類(lèi)的main()方法開(kāi)始運(yùn)行。創(chuàng)建一個(gè)用戶自定義的ApplictFrame類(lèi)的對(duì)象,即創(chuàng)建一個(gè)用戶圖形界面窗口;2.2變量與數(shù)據(jù)類(lèi)型2.2.1變量Java中的變量定義: a.定義變量的名字
b.定義變量的數(shù)據(jù)類(lèi)型如: intx; charch1,ch2;
其中,x、ch1、ch2為變量名,即變量標(biāo)識(shí)符;int
、char數(shù)據(jù)類(lèi)型;標(biāo)識(shí)符命名規(guī)定:(1)標(biāo)識(shí)符可以由字母、數(shù)字、下劃線或$符號(hào)組成,對(duì)標(biāo)識(shí)符的長(zhǎng)度沒(méi)有特別限定。(2)標(biāo)識(shí)符必須以字母、下劃線或$符開(kāi)頭。(3)標(biāo)識(shí)符區(qū)分大小寫(xiě)。例2.5定義簡(jiǎn)單變量:VariableDefinition.javaimportjava.awt.*;importjava.applet.Applet;publicclassVariableDefinitionextendsApplet //定義主類(lèi)VariableDefinition,是Applet的子類(lèi){
intx=10; //定義整型變量x并賦初值
charchar_MyClass_Flag='R'; //定義子符型變量并賦初值
Labeloutput1; //定義用來(lái)顯示輸出結(jié)果的兩個(gè)標(biāo)簽
Labeloutput2;
publicvoidinit() //創(chuàng)建標(biāo)簽,指定其顯示內(nèi)容
{ //并加入主類(lèi)的Applet圖形界面顯示
output1=newLabel("定義int
類(lèi)型變量"+"x,初值為"+x); output2=newLabel("定義char類(lèi)型變量" +"char_MyClass_Flag,初值為"+char_MyClass_Flag); add(output1); add(output2); }}例2.6使用變量簡(jiǎn)化程序:VariableDefinition2.javaimportjava.awt.*;importjava.applet.Applet;publicclassVariableDefinition2extendsApplet{
intx=10; charchar_MyClass_Flag='F'; Stringprompt1="定義"; //定義三字符串變量
Stringprompt2="類(lèi)型變量"; //把固定的字符串常量賦給它們
Stringprompt3=",初值為"; //使編程更加方便
publicvoidpaint(Graphicsg) { g.drawString(prompt1+"int"+prompt2+"x"+prompt3+x,10,20); g.drawString(prompt1+"char"+prompt2+"char_MyClass_Flag" +prompt3+char_MyClass_Flag,10,50); }}注意:程序中的變量必須先定義后使用,變量的有效范圍在定義它的語(yǔ)句所在的大括號(hào)內(nèi)部(包括其中嵌套的大括號(hào)內(nèi)部),一旦出了這個(gè)范圍,變量就失效了。2.2.2數(shù)據(jù)類(lèi)型1、布爾型boolean
取值:true(真)false(假)例2.8布爾型變量的定義與初值設(shè)備:ShowBoolean.javaimportjava.awt.*;importjava.applet.Applet;publicclassShowBooleanextendsApplet{
booleanb1=true;
booleanb2; //默認(rèn)初值falseStringprompt1="boolean";Stringprompt2="類(lèi)型變量";Stringprompt3=",初值為";publicvoidpaint(Graphicsg){g.drawString(prompt1+prompt2+"b1"+prompt3+b1,10,20);g.drawString(prompt1+prompt2+"b2"+prompt3+b2,10,50);}}2、整型int
與字符型char
*短整型short 16bit
*整型int 32bit
*長(zhǎng)整型long 64bit
*字符型char 16bit
**整形變量的使用必須注意最大值和最小值,以免出現(xiàn)溢出。**字符型變量的取值可以使用字符常量(用單引號(hào)括起來(lái)的單個(gè)字符),也可以使用整型常數(shù)。例:charc_char='A';charc_int=65;
注意:整型變量必須強(qiáng)制類(lèi)型轉(zhuǎn)換才能向字符變量賦值。如下是錯(cuò)誤的:
inti=65; charc_char=i;//i是整型變量,c_char是字符型變量,無(wú)強(qiáng)制類(lèi)型轉(zhuǎn)換,錯(cuò)誤。正確語(yǔ)句如下:
inti=65; charc_char=(char)i; //強(qiáng)制類(lèi)型轉(zhuǎn)換3、浮點(diǎn)型float、double
*浮點(diǎn)型 float 32bit
*雙精度型 double 64bitfloat和double都是浮點(diǎn)數(shù)據(jù)類(lèi)型,程序中使用它們來(lái)代表小數(shù)??茖W(xué)計(jì)數(shù)法表示小數(shù):
3.14E3 表示 3140 3.14E-2 表示 0.0314float浮點(diǎn)數(shù)的表示方法如: 0.0314f 或 0.0314F 3.14E-2f 或 3.14E-2Fdouble浮點(diǎn)數(shù)的表示方法如: 0.0314d 或 0.0314D 3.14E-2d 或 3.14E-2D
如果一個(gè)數(shù)沒(méi)有帶f(F)或d(D)后綴時(shí),系統(tǒng)默認(rèn)為double浮點(diǎn)數(shù)。注意:將一個(gè)double類(lèi)型的數(shù)據(jù)賦給float類(lèi)型變量,將產(chǎn)生編譯錯(cuò)誤。如
floatf=3.14; //編譯錯(cuò)誤,因?yàn)?.14默認(rèn)為double數(shù)據(jù)類(lèi)型。
floatf=3.14F; //正確的寫(xiě)法4、類(lèi)型轉(zhuǎn)換(1)隱含類(lèi)型轉(zhuǎn)換:凡是把占用比特?cái)?shù)較少的數(shù)據(jù)轉(zhuǎn)換成占用比特?cái)?shù)較多的數(shù)據(jù)為隱含類(lèi)型輪換。(2)強(qiáng)制類(lèi)型轉(zhuǎn)換格式:(數(shù)據(jù)類(lèi)型)變量名 強(qiáng)制類(lèi)型轉(zhuǎn)換是將變量名的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成括號(hào)里指定的數(shù)據(jù)類(lèi)型。注意:強(qiáng)制類(lèi)型轉(zhuǎn)換應(yīng)防止數(shù)據(jù)溢出。如
longl=5000000000;
inti=(int)l;//因?yàn)閘=5000000000的值大于i的最大值2147483647溢出錯(cuò)誤。2.3表達(dá)式與運(yùn)算符2.3.1算術(shù)運(yùn)算雙目運(yùn)算符:+、-、×、/、%分別為:加、減、乘、除、取余算術(shù)運(yùn)算,用于整型與浮點(diǎn)型數(shù)據(jù)的運(yùn)算。單目運(yùn)算符:自加++;自減--。例2.9算術(shù)運(yùn)算:ArithmeticOperation.javaimportjava.applet.Applet;importjava.awt.*;publicclassArithmetcOperationextendsApplet{
inti_x=1;
inti_y=2; doubled_x=3.1415926; doubled_y=2.41; publicvoidpaint(Graphicsg)
{
g.drawString(i_x+"+"+i_y+"="+(i_x+i_y),10,20);
g.drawString(i_x+"-"+i_y+"="+(i_x-i_y),10,40);
g.drawString(i_x+"*"+i_y+"="+(i_x*i_y),10,60);
g.drawString(i_x+"/"+i_y+"="+(i_x/i_y),10,80);
g.drawString(i_x+"%"+i_y+"="+(i_x%i_y),10,100);
g.drawString(d_x+"+"+d_y+"="+(d_x+d_y),10,140);
g.drawString(d_x+"-"+d_y+"="+(d_x-d_y),10,160);
g.drawString(d_x+"*"+d_y+"="+(d_x*d_y),10,180);
g.drawString(d_x+"/"+d_y+"="+(d_x/d_y),10,200);
g.drawString(d_x+"%"+d_y+"="+(d_x%d_y),10,220); }}2.3.2邏輯運(yùn)算與關(guān)系運(yùn)算1、關(guān)系運(yùn)算關(guān)系運(yùn)算符:==、!=、>、<、>=、<=分別代表等于、不等于、大于、小于、大于等于、小于等于說(shuō)明:(1)判斷兩數(shù)相等的等于運(yùn)算符由兩個(gè)等號(hào)連綴而成。一個(gè)等號(hào)是賦值號(hào)。(2)參與比較大小的兩個(gè)操作數(shù)或表達(dá)式的值可以是整型,也可以是浮點(diǎn)型。但是浮點(diǎn)型數(shù)之間作等于比較是無(wú)意義的,因?yàn)檫\(yùn)算總有誤差,通常沒(méi)有絕對(duì)相等的浮點(diǎn)數(shù)。例2.10關(guān)系運(yùn)算:RelationOperation.javaimportjava.applet.Applet;importjava.awt.*;publicclassRelatinOperationextendsApplet{
inti_x=1;
inti_y=2; doubled_x=3.1415926; doubled_y=2.41; publicvoidpaint(Graphicsg) {
g.drawString(i_x+">"+i_y+"="+(i_x>i_y),10,20);
g.drawString(i_x+"<"+i_y+"="+(i_x<i_y),10,40);
g.drawString(i_x+"=="+i_y+"="+(i_x==i_y),10,60);
g.drawString(i_x+"!="+i_y+"="+(i_x!=i_y),10,80);
g.drawString(i_x+">="+i_y+"="+(i_x>=i_y),10,100);
g.drawString(i_x+"<="+i_y+"="+(i_x<=i_y),10,120);
g.drawString(d_x+">"+d_y+"="+(d_x>d_y),10,160);
g.drawString(d_x+"<"+d_y+"="+(d_x<d_y),10,180); }}2、邏輯運(yùn)算例2.11邏輯運(yùn)算:LogicalOperation.javaimportjava.applet.Applet;importjava.awt.*;publicclassLogicalOperationextendsApplet{
booleanb1=true;
booleanb2=false;
intx1=3,y1=5;
intx2=3,y2=5;
booleanb3=x1>y1&&x1++==y1--;
booleanb4=x2>y2&x2++==y2--;
publicvoidpaint(Graphicsg) {
g.drawString(b1+"&"+b2+"="+(b1&b2),10,20);
g.drawString(b1+"|"+b2+"="+(b1|b2),10,40);
g.drawString(b1+"^"+b2+"="+(b1^b2),10,60);
g.drawString("!"+b2+"="+(!b2),10,80);
g.drawString(b1+"&&"+b2+"="+(b1&&b2),10,100);
g.drawString(b1+"||"+b2+"="+(b1||b2),10,120);
g.drawString("x="+x1+",y="+y1,10,140);
g.drawString("(x>y&&x++==y--)="+b3+";x="+x1+",y="+y1,10,160);
g.drawString("(x>y&x++==y--)="+b4+";x="+x2+",y="+y2,10,180); }}2.3.3位運(yùn)算2.3.4其他運(yùn)算符
1、三目條件運(yùn)算符?:
使用格式:x?y:z
其規(guī)則是,先計(jì)算表達(dá)式x的值,若x為真,則整個(gè)三目運(yùn)算的結(jié)果為表達(dá)式y(tǒng)的值;若x為假,則整個(gè)運(yùn)算結(jié)果為表達(dá)式z的值。例:intx=5,y=8,z=2;
intk=x<3?y:z;//x<3為假,所以k取z的值,結(jié)果為2.
inty=x>0?x:-x;//y為x的絕對(duì)值。
2、復(fù)雜賦值運(yùn)算符(材料P.39表2.5復(fù)雜賦值運(yùn)算符)
3、括號(hào)與方括號(hào)括號(hào)運(yùn)算符()在某些情況下起到改變表達(dá)式運(yùn)算先后順序的作用;在另一些情況下代表方法或函數(shù)的調(diào)用。它的優(yōu)先級(jí)在所有的運(yùn)算符中是最高的。方括號(hào)運(yùn)算符[]是數(shù)組運(yùn)算符,它的優(yōu)先級(jí)也是很高,其具體使用方法將在后面介紹。
4、對(duì)象運(yùn)算符對(duì)象運(yùn)算符instanceof
用來(lái)測(cè)定一個(gè)對(duì)象是否屬于某一個(gè)指定類(lèi)或其子類(lèi)的實(shí)例,如果是則返回true,否則返回false。
例:booleanb=MyObject
instanceof
MyClass;2.3.5運(yùn)算符的優(yōu)先級(jí)與結(jié)合性運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中不同運(yùn)算執(zhí)行的先后順序。如關(guān)系運(yùn)算符的優(yōu)先級(jí)高于邏輯運(yùn)算符。運(yùn)算符的結(jié)合性決定了并列的相同運(yùn)算的先后執(zhí)行順序。如對(duì)于左結(jié)合的“+”,x+y+z等價(jià)于(x+y)+z,對(duì)于右結(jié)合的“!”,!!x等價(jià)于!(!x)。第三章Java語(yǔ)言的結(jié)構(gòu)化程序設(shè)計(jì)3.1算法與結(jié)構(gòu)化程序設(shè)計(jì)1、算法任何可計(jì)算性問(wèn)題的解決過(guò)程都可以轉(zhuǎn)化為按指定順序執(zhí)行的一系列操作過(guò)程。由"(1)可執(zhí)行的操作;(2)執(zhí)行操作的順序"組成解決問(wèn)題的過(guò)程稱(chēng)為算法。2、結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)順序結(jié)構(gòu):程序中的語(yǔ)句按它們書(shū)寫(xiě)的順序一句接一句地執(zhí)行。分支結(jié)構(gòu):程序根據(jù)條件,判斷執(zhí)行流程。循環(huán)結(jié)構(gòu):程序反復(fù)執(zhí)行某段程序塊,直到結(jié)束條件滿足。結(jié)構(gòu)化編程原則:自頂向下、逐步求精。3.2分支控制結(jié)構(gòu)
Java中的分支語(yǔ)句有兩個(gè),一個(gè)是負(fù)責(zé)實(shí)現(xiàn)雙分支的if語(yǔ)句,另一個(gè)是負(fù)責(zé)實(shí)現(xiàn)多分支的開(kāi)關(guān)語(yǔ)句switch。3.2.1if語(yǔ)句
if語(yǔ)句的一般形式是:
if(條件表達(dá)式)語(yǔ)句塊;//if分支
else
語(yǔ)句塊;//else分支其中條件表達(dá)式用來(lái)選擇判斷程序的流程走向,在程序的實(shí)際執(zhí)行過(guò)程中,如果條件表達(dá)式的取值為真,則執(zhí)行if分支的語(yǔ)句塊,否則執(zhí)行else分支的語(yǔ)句塊。在編寫(xiě)程序時(shí),也可以不書(shū)寫(xiě)else分支,此時(shí)若條件表達(dá)式的取值為假,則繞過(guò)if分支直接執(zhí)行if語(yǔ)句后面的其他語(yǔ)句。語(yǔ)法格式如下:
if(條件表達(dá)式)語(yǔ)句塊;//if分支其他語(yǔ)句;補(bǔ)充例子:FindMax.javaimportjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassFindMaxextendsAppletimplementsActionListener{Labelresult;
TextFieldin1,in2,in3;Buttonbtn;
inta=0,b=0,c=0,max;
publicvoidinit(){result=newLabel("請(qǐng)輸入三個(gè)待比較的整數(shù)");in1=newTextField(5);in2=newTextField(5);in3=newTextField(5);
btn=newButton("比較");
add(in1);add(in2);add(in3);
add(btn);add(result);
btn.addActionListener(this);}
publicvoidactionPerformed(ActionEvente){a=Integer.parseInt(in1.getText());b=Integer.parseInt(in2.getText());c=Integer.parseInt(in3.getText());if(a>b)if(a>c)max=a;elsemax=c;elseif(b>c)max=b;elsemax=c;
result.setText("三個(gè)數(shù)中最大值是:"+max);}}例3.1求某班的平均成績(jī)、及格人數(shù)和不及格人數(shù)。importjava.applet.*;importjava.awt.*;publicclassClassScoreextendsApplet //定義主類(lèi){ Labelprompt; //定義提示標(biāo)簽
TextFieldinput; //定義輸入?yún)^(qū)域
int
PassCount=0; //定義并初始化及格計(jì)數(shù)器
int
FailureCount=0; //定義并初始化不及格計(jì)數(shù)器
int
TotalNumber=0; //定義并初始化總?cè)藬?shù)計(jì)數(shù)器
int
TotalScore=0; //定義并初始化總分累計(jì)器
doubleAverageScore=0; //定義并初始化班平均分
publicvoidinit() { prompt=newLabel("Enternextstudentscore(-1forreset):"); input=newTextField(4); add(prompt); add(input); } publicvoidpaint(Graphicsg) //顯示更新后的各項(xiàng)統(tǒng)計(jì)數(shù)據(jù)
{
g.drawString("Totalstudentnumberis:"+TotalNumber,10,80);
g.drawString("Thepassnumberis:"+PassCount,10,100);
g.drawString("Thefailurenumberis:"+FailureCount,10,120);
g.drawString("Theaveragescoreofwholeclassis:"+AverageScore,10,140); }
publicbooleanaction(Evente,Objecto) {
intscore; if(e.target==input) { score=Integer.parseInt(input.getText()); if(score==-1) {
PassCount=0;
FailureCount=0;
TotalNumber=0;
TotalScore=0;
AverageScore=0; }
else { if(score>=60)
PassCount++; else
FailureCount++;
TotalNumber++;
TotalScore+=score;
AverageScore=TotalScore/TotalNumber; }
input.setText(""); repaint(); } returntrue; }}3.2.2switch語(yǔ)句
switch語(yǔ)句是多分支的開(kāi)關(guān)語(yǔ)句,它的一般格式如下:switch(表達(dá)式){case判斷值1:語(yǔ)句塊1//分支1case判斷值2:語(yǔ)句塊2//分支2......case判斷值3:語(yǔ)句塊n//分支ndefault:語(yǔ)句塊n+1//分支n+1}
switch語(yǔ)句在執(zhí)行時(shí),首先計(jì)算表達(dá)式的值,這個(gè)值必須是整型或字符型,同時(shí)應(yīng)與各個(gè)case分支的判斷值的類(lèi)型相一致。計(jì)算出表達(dá)式的值之后,將它先與第一個(gè)case分支的判斷值相比較,若相同,則程序的流程轉(zhuǎn)入第一個(gè)case分支的語(yǔ)句塊;否則,再將表達(dá)式的值與第二個(gè)case分支相比較......依此類(lèi)推。如果表達(dá)式的值與任何一個(gè)case分支都不相同,則轉(zhuǎn)而執(zhí)行最后的default分支;在default分支不存在的情況下,則跳出整個(gè)switch語(yǔ)句。
需要注意的是,switch語(yǔ)句的每一個(gè)case判斷,都只負(fù)責(zé)指明流程分支的入口點(diǎn),而不負(fù)責(zé)指定分支的出口點(diǎn),分支的出口點(diǎn)需要編程人員用相應(yīng)的跳轉(zhuǎn)語(yǔ)句來(lái)標(biāo)明。如下例子:switch(MyGrade){case'A':MyScore=5;break;case'B':MyScore=4;break;case'C':MyScore=3;break;default:MyScore=0;}break是流程跳轉(zhuǎn)語(yǔ)句,它定義了分支的出口,多分支開(kāi)關(guān)語(yǔ)句的結(jié)構(gòu)就完整了。3.3循環(huán)控制結(jié)構(gòu)循環(huán)結(jié)構(gòu)是在一定條件下,反復(fù)執(zhí)行某段程序的流程結(jié)構(gòu),被反復(fù)執(zhí)行的程序被稱(chēng)為循環(huán)體。1、while語(yǔ)句
while語(yǔ)句的一般語(yǔ)法格式如下:
while(條件表達(dá)式)循環(huán)體其中條件表達(dá)式的返回值為布爾型,循環(huán)體可以是單個(gè)語(yǔ)句,也可以是復(fù)合語(yǔ)句塊。
while語(yǔ)句的執(zhí)行過(guò)程是先判斷條件表達(dá)式的值,若為真,則執(zhí)行循環(huán),循環(huán)體執(zhí)行完之后再無(wú)條件轉(zhuǎn)向條件表達(dá)式再做計(jì)算與判斷;當(dāng)計(jì)算出條件表達(dá)式為假時(shí),跳過(guò)循環(huán)體執(zhí)行while語(yǔ)句后的語(yǔ)句。補(bǔ)充例題求一個(gè)水仙花數(shù)程序Narcissus.java。水仙花數(shù)是三位數(shù),它的各位數(shù)字的立方和等于這個(gè)三位數(shù)本身。importjava.io.*;publicclassNarcissus{publicstaticvoidmain(Stringargs[]){
inti,j,k,n=100,m=1;while(n<1000){ i=n/100; j=(n-i*100)/10; k=n%10; if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3)==n)
System.out.println("找到第"+m+"個(gè)水仙花數(shù):"+n); n++;}}}2、do-while語(yǔ)句
do-while語(yǔ)句的一般語(yǔ)法結(jié)構(gòu)如下:
do
循環(huán)體
while(條件表達(dá)式);
do-while語(yǔ)句的使用與while語(yǔ)句很類(lèi)似,不同的是不像while語(yǔ)句是先計(jì)算條件表達(dá)式的值,而是無(wú)條件地先執(zhí)行一遍循環(huán)體,再來(lái)判斷條件表達(dá)式。若表達(dá)式的值為真,則再運(yùn)行循環(huán)體,否則跳出do-while循環(huán),執(zhí)行下面語(yǔ)句??梢钥闯觯琩o-while語(yǔ)句的特點(diǎn)是它的循環(huán)體將至少被執(zhí)行一次。補(bǔ)充例題:從鍵盤(pán)接受用戶輸入的一個(gè)字符后輸出這個(gè)字符整型數(shù)值程序showCharValue.javaimportjava.io.*;publicclassshowCharValue{ publicstaticvoidmain(Stringargs[]) {charch;try{
System.out.println("請(qǐng)輸入一個(gè)字符,以'#'結(jié)束");
do {
ch=(char)System.in.read();
System.out.println("字符"+ch+"的整數(shù)值為"+(int)ch); System.in.skip(2); //跳過(guò)回車(chē)鍵
}while(ch!='#');}catch(IOExceptione) {
System.err.println(e.toString()); } }}3、for語(yǔ)句
for語(yǔ)句是Java語(yǔ)言三個(gè)循環(huán)語(yǔ)句中功能較強(qiáng),使用較廣泛的一個(gè)。for語(yǔ)句的一般語(yǔ)法如下:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體其中表達(dá)式2是返回布爾值的條件表達(dá)式,用來(lái)判斷循環(huán)是否繼續(xù);表達(dá)式1完成初始化循環(huán)變量和其他變量的工作;表達(dá)式3用來(lái)修整循環(huán)變量,改變循環(huán)條件,三個(gè)表達(dá)式之間用分號(hào)隔開(kāi)。
for語(yǔ)句的執(zhí)行過(guò)程是這樣的:首先計(jì)算表達(dá)式1,完成必要的初始化工作;再判斷表達(dá)式2的值,若為真,則執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體后再返回表達(dá)3,計(jì)算并修改循環(huán)條件,這樣一輪循環(huán)就結(jié)束了。第二輪循環(huán)從計(jì)算并判斷表達(dá)式2開(kāi)始,若表達(dá)式的值仍為真,則繼續(xù)循環(huán),否則跳出整個(gè)for語(yǔ)句執(zhí)行下面的句子。for語(yǔ)句的三個(gè)表達(dá)式都可以為空,但若表達(dá)式2也為空,則表示當(dāng)前循環(huán)是一個(gè)無(wú)限循環(huán),需要在循體中書(shū)寫(xiě)另外的跳轉(zhuǎn)語(yǔ)句終止循環(huán)。補(bǔ)充例題:輸出1000之內(nèi)的所有完全數(shù)程序PerfectNum.java
。完全數(shù)是指等于其所有因子和(包括1但不包括這個(gè)數(shù)本身)的數(shù)。importjava.io.*;publicclassPerfectNum{ publicstaticvoidmain(Stringargs[]) {
intcount=1; for(inti=1;i<1000;i++) {
inty=0; for(intj=1;j<i;j++) if(i%j==0) y+=j;
if(y==i) { System.out.print(i+String.valueOf('\t')); count++; if(count%3==0)
System.out.println(); } } try{ System.in.read(); }catch(IOExceptione){} }}4、循環(huán)中的跳轉(zhuǎn)語(yǔ)句(1)continue語(yǔ)句
continue語(yǔ)句必須用于循環(huán)結(jié)構(gòu)中。不帶標(biāo)號(hào)的continue語(yǔ)句終止當(dāng)前這一輪的循環(huán)。跳過(guò)本輪循環(huán)剩余語(yǔ)句,直接進(jìn)入當(dāng)前循環(huán)的下一輪。帶標(biāo)號(hào)的continue語(yǔ)句直接跳轉(zhuǎn)到標(biāo)號(hào)處繼續(xù)執(zhí)行。格式:continue標(biāo)號(hào)名;(2)break語(yǔ)句作用:程序的流程從一個(gè)語(yǔ)句塊內(nèi)部跳轉(zhuǎn)出來(lái)。格式:break標(biāo)號(hào)名;3.4定義和使用Java的方法1、定義方法方法是類(lèi)的動(dòng)態(tài)屬性,標(biāo)志了類(lèi)所具有的功能和操作,用來(lái)把類(lèi)和對(duì)象的數(shù)據(jù)封裝在一起。方法由方法頭與方法體組成,其一般格式如下:修飾符1修飾符2......返回值類(lèi)型方法名(形式參數(shù)列表)throw[異常列表]{
方法體各語(yǔ)句;
}
其中形式參數(shù)列表的格式為:形式參數(shù)類(lèi)型1形式參數(shù)名1,形式參數(shù)類(lèi)型2形式參數(shù)名3,......
小括號(hào)是方法的標(biāo)志,程序使用方法名來(lái)調(diào)用方法,形式參數(shù)是方法從調(diào)用它的環(huán)境輸入的數(shù)據(jù),返回值是方法在操作完成后返還給調(diào)用它的環(huán)境的數(shù)據(jù)。定義方法的目的是定義具有相對(duì)獨(dú)立和常用功能的模塊,使程序結(jié)構(gòu)清晰,也利于模塊在不同場(chǎng)合的重復(fù)利用。方法頭:由方法名、參數(shù)列表、方法返回值類(lèi)型、方法修飾符和方法拋出的例外組成。方法體:由局部變量聲明和語(yǔ)句序列組成。例3.3列出兩數(shù)M和N之間的所有素?cái)?shù)和N的所有素?cái)?shù)因子,而且將求出數(shù)N的所有素?cái)?shù)因子。importjava.applet.Applet;importjava.awt.*;publicclassUsePrimeextendsApplet{ Labelprompt;
TextFieldL_input,U_input;
int
LowerLimit,UpperLimit; publicvoidinit() { prompt=newLabel("Enterthelowerandupperlimit:"); L_input=newTextField(4); U_input=newTextField(4); add(prompt); add(L_input); add(U_input); }
publicvoidpaint(Graphicsg) {
inti,j,k=0;
intp=0;
booleanf_i; for(i=2;i<UpperLimit;i++) {
if(UpperLimit%i!=0) continue; f_i=false; if(i%2!=0) { j=3; f_i=true;
while(j<=Math.sqrt(i)) {if(i%j==0) { f_i=false; break; } j+=2; }} if(f_i) { g.drawString(Integer.toString(i),20+k*20,40+p*20); if(k>10) {p++; k=0; } else k++; }}
k=0; p=0; for(i=LowerLimit;i<=UpperLimit;i++) { f_i=false; if(i%2!=0) { j=3; f_i=true;
while(j<=Math.sqrt(i)) {if(i%j==0) { f_i=false; break; } j+=2; }} if(f_i) {g.drawString(Integer.toString(i),20+k*20,100+p*20); if(k>10) {p++; k=0; } else k++; } } }
publicbooleanaction(Evente,Objecto) {
inttemp; if(e.target==U_input) {
LowerLimit=Integer.parseInt(L_input.getText());
UpperLimit=Integer.parseInt(U_input.getText());
if(LowerLimit>UpperLimit)
{ temp=LowerLimit;
LowerLimit=UpperLimit;
UpperLimit=temp; } repaint(); } returntrue; }}例3.4定義判斷素?cái)?shù)的方法,改寫(xiě)例3.3.importjava.applet.Applet;importjava.awt.*;publicclassUsePrime_CextendsApplet{ Labelprompt;
TextFieldL_input,U_input;
int
LowerLimit,UpperLimit; publicvoidinit() { prompt=newLabel("Enterthelowerandupperlimit:"); L_input=newTextField(4); U_input=newTextField(4); add(prompt); add(L_input); add(U_input); }
publicvoidpaint(Graphicsg) {
inti,j,k=0;
intp=0;
booleanf_i; for(i=2;i<UpperLimit;i++) {
if(UpperLimit%i!=0) continue; f_i=isPrime(i);
if(f_i) {
g.drawString(Integer.toString(i),20+k*20,40+p*20); if(k>10) { p++; k=0; } else k++; } } k=0; p=0; for(i=LowerLimit;i<=UpperLimit;i++) { f_i=isPrime(i);
if(f_i) {
g.drawString(Integer.toString(i),20+k*20,100+p*20); if(k>10) { p++; k=0; } else k++; } } }
boolean
isPrime(inti) {
intj=0;
booleanf_i; f_i=false; if(i%2!=0) {j=3; f_i=true; while(j<=Math.sqrt(i)) {if(i%j==0) {f_i=false; break;} j+=2; } } returnf_i; }
publicbooleanaction(Evente,Objecto) {
inttemp; if(e.target==U_input) {
LowerLimit=Integer.parseInt(L_input.getText());
UpperLimit=Integer.parseInt(U_input.getText());
if(LowerLimit>UpperLimit) { temp=LowerLimit;
LowerLimit=UpperLimit;
UpperLimit=temp; } repaint(); } returntrue; }}2、方法的形式參數(shù)方法頭中參數(shù)列表規(guī)定了方法的輸入數(shù)據(jù),而方法的返回值是方法的輸出數(shù)據(jù)。如方法頭為: boolean
isPrime(intn)其中: intn形式參數(shù),規(guī)定方法的輸入數(shù)據(jù)是一個(gè)整型量。
boolean
isPrime() 調(diào)用方法名為isPrime()的方法,將返回一個(gè)布爾型量。方法調(diào)用如: f_i=isPrime(i);其中: i 實(shí)際參數(shù),調(diào)用方法時(shí)傳給方法的實(shí)際數(shù)據(jù)。
f_i 獲得調(diào)用方法的返回結(jié)果,為布爾型量。3、方法的返回值返回值語(yǔ)句的一般格式是:
return表達(dá)式;如果方法沒(méi)有返回值,方法頭返回值類(lèi)型應(yīng)該寫(xiě)關(guān)鍵字void,表明這個(gè)方法不輸出數(shù)據(jù)。如: publicvoidinit()4、方法的使用(1)程序調(diào)用方法如:f_i=isPrime();
(2)系統(tǒng)調(diào)用方法如: publicbooleanaction(Evente,Objecto)
*只有系統(tǒng)才知道何時(shí)應(yīng)該調(diào)用這個(gè)方法。第七章常用工具、算法與數(shù)據(jù)結(jié)構(gòu)7.1java的類(lèi)庫(kù)Java程序是由類(lèi)的定義組成的,編寫(xiě)java的過(guò)程就是設(shè)計(jì)各種類(lèi)和確定它們相互作用關(guān)系的過(guò)程。為了簡(jiǎn)化面向?qū)ο蟮木幊踢^(guò)程,java事先設(shè)計(jì)并實(shí)現(xiàn)了一些體現(xiàn)常用功能的標(biāo)準(zhǔn)類(lèi),這些系統(tǒng)標(biāo)準(zhǔn)類(lèi)根據(jù)實(shí)現(xiàn)的功能不同,可以劃分成不同的集合,每個(gè)集合是一個(gè)包,合稱(chēng)為類(lèi)庫(kù)。用戶可以自己編寫(xiě)具有某一功能的類(lèi),但沒(méi)有必要一切從頭開(kāi)始,完全可以繼承已有類(lèi),這樣使用戶的類(lèi)一開(kāi)始就具有了一些功能,大大提高了編程的效率??梢韵胂螅瑳](méi)有java的類(lèi)庫(kù),java程序寸步難行,所以我們必須對(duì)java的類(lèi)庫(kù)有足夠的了解。我們可以這樣說(shuō),開(kāi)發(fā)者編程能力的強(qiáng)弱相當(dāng)大程度上取決于他對(duì)java類(lèi)庫(kù)的掌握程度。7.1.1java的類(lèi)庫(kù)結(jié)構(gòu)Java的類(lèi)庫(kù)是系統(tǒng)已實(shí)現(xiàn)的標(biāo)準(zhǔn)類(lèi)的集合,是java編程的API,它可以幫助開(kāi)發(fā)者方便、快捷的開(kāi)發(fā)java程序。根據(jù)功能的不同,java的類(lèi)庫(kù)被劃分為若干個(gè)不同的包,每個(gè)包中都有若干個(gè)具有特定功能合相互關(guān)系的類(lèi)和接口。在java中使用類(lèi)庫(kù)的方法是在程序的開(kāi)頭用import語(yǔ)句引入。Java1.0類(lèi)庫(kù)(1)java.lang包是java的核心類(lèi)庫(kù),包含了運(yùn)行java程序必不可少的系統(tǒng)類(lèi),如基本數(shù)據(jù)類(lèi)型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理等。這個(gè)包的加載是缺省的,不需要用import引入,系統(tǒng)自動(dòng)加載。Java.io包Java.io包是java的標(biāo)準(zhǔn)輸入/輸出類(lèi)庫(kù),凡是完成與操作系統(tǒng)有關(guān)的較底層的輸入輸出操作的java程序,都應(yīng)在程序開(kāi)頭用import語(yǔ)句引入:importjava.io.*;Java.util包這個(gè)包包括了java語(yǔ)言中的一些低級(jí)的實(shí)用工具,如處理時(shí)間的Date類(lèi)、處理變長(zhǎng)數(shù)組的Vector類(lèi)、實(shí)現(xiàn)棧和雜湊表的Stack類(lèi)和HashTable類(lèi)等Java.awt包是java構(gòu)建用戶圖形界面的類(lèi)庫(kù)。凡是要構(gòu)建圖形界面的都要把這個(gè)包引入。Java.awt.image包是用來(lái)處理和操作來(lái)自于網(wǎng)上的圖片的java工具類(lèi)庫(kù)。Java.awt.peer包很少在程序中直接用到,它使java程序在不同的軟硬件平臺(tái)上運(yùn)行時(shí)具有相同的圖形界面,換句話說(shuō),是java語(yǔ)言實(shí)現(xiàn)跨平臺(tái)的主要手段之一。Java.applet包它僅包含一個(gè)有用的類(lèi),java.applet.Applet,實(shí)現(xiàn)運(yùn)行于Internet瀏覽器中的javaApplet的工具類(lèi)庫(kù)。J包是java語(yǔ)言用于實(shí)現(xiàn)網(wǎng)絡(luò)功能的類(lèi)庫(kù)。Java1.1類(lèi)庫(kù)這個(gè)類(lèi)庫(kù)是對(duì)1.0內(nèi)容的擴(kuò)充和修正。(1)java.corba包和java.corba.orb包(2)java.lang.reflect(3)java.rmi包、java.registry包和java.rmi.server包(4)java.security包、java.security.acl包和
erfaces包(5)java.util.zip包(6)java.awt.dataransfer包(7)java.awt.event包(8)java.sql
包是實(shí)現(xiàn)jdbc的類(lèi)庫(kù),使java程序可以連接不同類(lèi)型的數(shù)據(jù)庫(kù)如Oracle、Sysbase、SQLServer、Mysql、Postgre等。3。Java1.2簡(jiǎn)介Java1.2又稱(chēng)為java2,它可以細(xì)化為三個(gè)版本:(1)企業(yè)版主要用于服務(wù)器上運(yùn)行的jav
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電商直播主播跨行業(yè)合作合同
- 二零二五年度貨車(chē)司機(jī)貨運(yùn)業(yè)務(wù)代理合同
- 幼兒園飛機(jī)基礎(chǔ)知識(shí)培訓(xùn)
- 帶狀孢疹繼發(fā)面神經(jīng)炎的護(hù)理
- 新開(kāi)的網(wǎng)吧活動(dòng)方案
- 2025承包土地使用權(quán)合同
- 水產(chǎn)公司章程范本
- 2025新疆棉花買(mǎi)賣(mài)合同范本
- 廣州環(huán)保公司合同范本
- 2025公司股權(quán)轉(zhuǎn)讓合同書(shū)
- 2024光儲(chǔ)充一體化系統(tǒng)解決方案
- 建筑幕墻物理性能分級(jí)
- 河南省2024年道法中考熱點(diǎn)備考重難專(zhuān)題:發(fā)展航天事業(yè)建設(shè)航天強(qiáng)國(guó)(課件)
- 臨床診療規(guī)范與操作指南制度
- DLT 5285-2018 輸變電工程架空導(dǎo)線(800mm以下)及地線液壓壓接工藝規(guī)程
- 新員工入職培訓(xùn)測(cè)試題附有答案
- 勞動(dòng)合同續(xù)簽意見(jiàn)單
- 大學(xué)生國(guó)家安全教育意義
- 2024年保育員(初級(jí))培訓(xùn)計(jì)劃和教學(xué)大綱-(目錄版)
- 河北省石家莊市2023-2024學(xué)年高二上學(xué)期期末考試 語(yǔ)文 Word版含答案
- 企業(yè)正確認(rèn)識(shí)和運(yùn)用矩陣式管理
評(píng)論
0/150
提交評(píng)論