




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電子商務(wù)解決方案設(shè)計(jì)教案實(shí)驗(yàn)一:java基礎(chǔ)(一)一、java入門Java SE:java standard editionJava ME:java micro editionJava EE: java enterprise editionJava 是由sun公司推出(但2010年被oracle公司收購,收購價(jià)格:74億美元)從j2se、j2me、j2ee的演變,從jdk5.0開始稱為se、me、ee。1、jdk的下載與安裝Jdk:java development kit (java 開發(fā)包)Jre:java runtime environment(java執(zhí)行環(huán)境)Jdk包含了jre。下載過
2、程見課堂演示。安裝完成后運(yùn)行:java version如能顯示版本信息,即表明java安裝成功。Jdk1.4 jdk1.5(5.0) jdk1.6(6.0)設(shè)置環(huán)境變量:classpath path JAVA_HOME2、第一個(gè)java程序編寫程序時(shí)可以是記事本、ultraedit(高級(jí)文本編輯工具)、IDE(integrated development environment)。例1-1:Test類public class Test public static vod main(String args) System.out.println(“hello world!”);3、java程序的
3、編譯與執(zhí)行Java程序的執(zhí)行過程分為兩步:(1)編譯:javac 文件名.java(2)執(zhí)行: java 文件名(這是一個(gè)后綴為class的字節(jié)碼文件)注意:修改過的原文件,要重新執(zhí)行上述的(1)(2)步驟。JVM(java virtual machine java虛擬機(jī))來執(zhí)行字節(jié)碼文件。二、原生數(shù)據(jù)類型1、Java中的數(shù)據(jù)類型:1)原生數(shù)據(jù)類型(Primitive Data Type)2)引用類型(對(duì)象類型)(Reference Type)2. 變量與常量:所謂常量,就是值不會(huì)變化的量;所謂變量,就是值可以變化的量。3. 變量定義與賦值:(1)變量類型變量名;變量名= 變量值;int a;
4、a = 2;(2)變量類型變量名= 變量值; int a = 1;= 表示賦值,將等號(hào)右邊的值賦給了左邊的變量。4、變量名命名規(guī)則:在Java中,變量名以下劃線、字母、$符號(hào)開頭,并且后跟下劃線、字母、$符號(hào)以及數(shù)字??傊琂ava中的變量名不能以數(shù)字開頭。5、注釋:注釋是給人看的,不是給計(jì)算機(jī)看的。Java中共有3種類型的注釋:1)單行注釋:以/開頭,/后面的所有內(nèi)容均被當(dāng)作注釋處理。2)多行注釋:以/*開頭,以*/結(jié)束,中間的所有內(nèi)容均被當(dāng)作注釋處理。關(guān)于多行注釋,需要注意的是,多行注釋不能嵌套。3)另一種多行注釋。用于產(chǎn)生Java Doc幫助文檔。暫且不介紹。/* 注釋內(nèi)容*/6、Jav
5、a中的原生數(shù)據(jù)類型共有8種:1)整型:使用int表示。(32位)2)字節(jié)型:使用byte表示。(表示-128127之間的256個(gè)整數(shù))。3)短整型:使用short表示。(16位)4)長(zhǎng)整型:使用long表示。(64位)5)單精度浮點(diǎn)型:使用float表示。所謂浮點(diǎn)型,指的就是小數(shù),也叫做實(shí)數(shù),比如1.2。6)雙精度浮點(diǎn)型:使用double表示。雙精度浮點(diǎn)型表示的數(shù)據(jù)范圍要比單精度浮點(diǎn)型大。7)字符型:使用char表示(char是character的縮寫)。所謂字符,就是單個(gè)的字符表示,比如字母a,或者中文張,外面用單引號(hào)包圍上。比如char a = B; char b = 張; 8)布爾類型,
6、使用boolean表示。布爾類型只有兩種可能值,分別是true與false。7、變量使用過程中應(yīng)注意的問題:1)Java中的所有浮點(diǎn)類型默認(rèn)情況下都是double。不能將double類型的值賦給float類型的變量,即便該double類型的值處于float類型的范圍內(nèi)也是不可以的。總之,能否成功賦值取決于等號(hào)右邊的值類型與等號(hào)左邊的變量類型是否一致。2)如何將double類型的值賦給float類型的變量?答案就是(1)強(qiáng)制類型轉(zhuǎn)換,將double類型的值強(qiáng)制轉(zhuǎn)換為float類型。(2)使用java語言的支持。強(qiáng)制轉(zhuǎn)換的語法:類型變量名= (類型)變量值; 3)變量在使用前必須要賦值;變量必須要
7、聲明其類型方可使用;變量在使用前必須要定義,并且只能定義一次。4)如下代碼無法通過編譯:int a = 1; short b = a; a是int類型,b是short類型,int類型表示的數(shù)據(jù)范圍要比short類型大,不能將表示范圍大的值賦給表示范圍小的變量。5)如下代碼可以通過編譯:short a = 1; int b = a; a是short類型,b是int類型,int類型表示的數(shù)據(jù)范圍要比short類型大,可以將表示范圍小的值賦給表示范圍大的變量。總結(jié):可以將表示范圍小的值賦給表示范圍大的變量;但不能直接將表示范圍大的值賦給表示范圍小的變量,只能通過強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)。上述內(nèi)容驗(yàn)證見實(shí)例:
8、test、variable1、variable2三、運(yùn)算符1、算術(shù)運(yùn)算符:1)當(dāng)有若干個(gè)變量參與運(yùn)算時(shí),結(jié)果類型取決于這些變量中表示范圍最大的那個(gè)變量類型。比如,參與運(yùn)算的變量中,有整型int,有雙精度浮點(diǎn)型double,有短整型short,那么最后的結(jié)果類型就是double。2)int a = 1; int b = 2; double c = (double)a / b; 上面的代碼中,a與b都是整型,但是通過(double)a這種轉(zhuǎn)換將a轉(zhuǎn)換為一個(gè)匿名的變量,該變量的類型是double,但是要注意:a本身依舊是int類型,而不是double類型,這樣,(double)a / b就是doub
9、le類型除以int類型,結(jié)果自然是double類型。3)取模運(yùn)算符:使用%表示。int a = 5; int b = 3; int c = a % b; 上面代碼的運(yùn)行結(jié)果是2,因?yàn)?除以3結(jié)果是1余2。取模的規(guī)律:取模的結(jié)果符號(hào)永遠(yuǎn)與被除數(shù)的符號(hào)相同int a = 5; int b = -3; int c = a % b; 被除數(shù)是5,那么取模的結(jié)果是2 int a = -5; int b = 3; int c = a % b; 被除數(shù)是-5,那么取模的結(jié)果是-2。上述內(nèi)容驗(yàn)證見實(shí)例: variable32、關(guān)系運(yùn)算符:關(guān)系運(yùn)算符:大于(>)、小于(<)、等于(=)、不等于(!=
10、)、大于等于(>=)、小于等于(<=),關(guān)系運(yùn)算的結(jié)果是個(gè)boolean值。見實(shí)例:OperatorTest3、邏輯運(yùn)算符:重點(diǎn)講解兩個(gè),邏輯運(yùn)算符本身也返回一個(gè)boolean值。1)邏輯與:使用&&表示,邏輯與是個(gè)雙目運(yùn)算符(即有兩個(gè)操作數(shù)的運(yùn)算符),只有當(dāng)兩個(gè)操作數(shù)都為真的時(shí)候,結(jié)果才為真;其余情況結(jié)果均為假。邏輯與表示的并且的意思。2)邏輯或:使用|表示,邏輯或也是個(gè)雙目運(yùn)算符,只有當(dāng)兩個(gè)操作數(shù)都為假的時(shí)候,結(jié)果才為假;其余情況結(jié)果均為真。邏輯或表示或者的意思。見實(shí)例:LogicTest4、關(guān)于變量的自增與自減運(yùn)算。1)關(guān)于int b = a+,作用是將a的值
11、先賦給b,然后再讓a自增1。2)關(guān)于int b = +a,作用是將a的值先自增1,然后將自增后的結(jié)果賦給b。見實(shí)例:Variable45、條件運(yùn)算符(三元表達(dá)式),其形式為:type d = a ? b : c; 具體化形式為:int d = 2 < 1 ? 3 : 4; 注意:輕量級(jí)的文本編輯器:UltraEdit、Editplus、vi、vim、gvim 見實(shí)例:Test2四、流程控制語句1、if 語句第一種形式:if(布爾表達(dá)式) /待執(zhí)行的代碼 第二種形式:if(布爾表達(dá)式) /待執(zhí)行的代碼 else /待執(zhí)行的代碼 第三種形式:if(布爾表達(dá)式) /待執(zhí)行的代碼 else if
12、(布爾表達(dá)式) /待執(zhí)行的代碼 else if(布爾表達(dá)式) /待執(zhí)行的代碼 else /待執(zhí)行的代碼見實(shí)例:IfTest2、switch語句:switch(變量) /此處的變量類型就目前所學(xué)內(nèi)容來看,只能為4種類型:byte, short, int, char。 case 常量1: /待執(zhí)行的代碼break; case 常量2: /待執(zhí)行的代碼break; case 常量3: /待執(zhí)行的代碼break; default:/待執(zhí)行的代碼 雖然case語句中的break是可選的,但在絕大多數(shù)情況下,如果沒有break,程序的邏輯就會(huì)發(fā)生錯(cuò)誤,因此,通常情況下都需要加上break。見實(shí)例:Swit
13、chTest3、循環(huán)控制語句Java中的循環(huán)控制語句一共有3種,分別是while,do while以及for循環(huán)。1)while循環(huán),形式為:while(布爾表達(dá)式) /待執(zhí)行的代碼 2)dowhile循環(huán),新式為:do /待執(zhí)行的代碼 while(布爾表達(dá)式); while與dowhile之間的區(qū)別:如果布爾表達(dá)式的第一次判斷就為false,那么while循環(huán)一次也不執(zhí)行;dowhile循環(huán)則會(huì)執(zhí)行一次。如果布爾表達(dá)式第一次判斷為true,那么while循環(huán)與dowhile循環(huán)等價(jià)。3)for循環(huán)(使用最多的一種循環(huán)),形式為:for(變量初始化; 條件判斷; 步進(jìn)) /待執(zhí)行的代碼 for
14、循環(huán)的執(zhí)行過程:a)執(zhí)行變量初始化。b)執(zhí)行條件判斷。如果條件判斷結(jié)果為假,那么退出for循環(huán),開始執(zhí)行循環(huán)后面的代碼;如果條件判斷為真,執(zhí)行for循環(huán)里面的代碼。c)執(zhí)行步進(jìn)。d)重復(fù)步驟b。上述內(nèi)容見實(shí)例:WhileTest、DoWhileTest、ForTestbreak語句:經(jīng)常用在循環(huán)語句中,用于跳出整個(gè)循環(huán),執(zhí)行循環(huán)后面的代碼。2. continue語句:經(jīng)常用在循環(huán)語句中,用于跳出當(dāng)前的這個(gè)循環(huán)(或者是跳出本次循環(huán)),開始下一次循環(huán)的執(zhí)行。實(shí)驗(yàn)二:java基礎(chǔ)(二)一、面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming,OOP;Object Oriented
15、 Design, OOD)什么是面向?qū)ο??在面向?qū)ο蟪绦蛟O(shè)計(jì)中有兩個(gè)重要的概念:類(class)與對(duì)象(object)。1、類:類是一種抽象的概念,類中包含了數(shù)據(jù)(通常使用名詞來表示)與對(duì)數(shù)據(jù)的操縱(通常使用動(dòng)詞來表示)。比如說人就是一種抽象的概念,人具有姓名、年齡、身高等數(shù)據(jù),還有吃飯、跑步等操縱數(shù)據(jù)的動(dòng)作。2、對(duì)象:對(duì)象是一種具體的概念,是類的一種具體表示方式。比如說人是一個(gè)類,而張三、李四、王五等具體的人就是對(duì)象。3、類所包含的內(nèi)容,類一共包含兩部分內(nèi)容:a) 數(shù)據(jù),數(shù)據(jù)在類中稱作屬性(Property或者Attribute)或者叫成員變量(Member variable)。b) 對(duì)數(shù)據(jù)
16、的操縱,這種操縱在類中稱作方法(method)。二、類及方法的定義面向?qū)ο蟪绦蛟O(shè)計(jì)的三大基本特征:繼承、封裝、多態(tài)封裝:類包含了數(shù)據(jù)與方法,將數(shù)據(jù)與方法放在一個(gè)類中就構(gòu)成了封裝。1、類的定義:修飾符class 類的名字 /類的內(nèi)容(包含了屬性與方法)2、方法的定義:修飾符返回類型方法名稱(參數(shù)1,參數(shù)2,參數(shù)3) /方法體注意:1)main方法是整個(gè)Java程序的入口點(diǎn),如果類的定義中沒有main方法,則程序無法執(zhí)行。2)方法定義不能嵌套,也就說不能在一個(gè)方法中定義另外一個(gè)方法。方法只能定義在類中。3)關(guān)于方法的執(zhí)行:首先需要定義方法,接下來就可以使用方法(調(diào)用方法),當(dāng)方法調(diào)用完畢后,方法可
17、以返回值。方法到底是否返回值是由方法的定義決定的。4)如果一個(gè)java源文件中定義了多個(gè)類,那么這些類中最多只能有一個(gè)類是public的,換句話說,定義的多個(gè)類可以都不是public的。Main方法要放在public類中,如果沒有public類,那Main方法放在哪個(gè)類中都可以。3、生成對(duì)象:通過類來生成對(duì)象(通常使用new關(guān)鍵字來生成對(duì)象)。public class Person 類名變量名= new 類名(); Person person = new Person(); Person person2 = new Person(); Person person3 = new Person()
18、;4、方法的調(diào)用:方法調(diào)用需要通過對(duì)象來完成,方法調(diào)用的形式是:對(duì)象變量.方法名(參數(shù)值1,參數(shù)值2,參數(shù)值3.); 關(guān)于方法的注意事項(xiàng):1)在方法定義中,方法的返回類型與return后面的變量或常量類型保持一致。2)在方法調(diào)用時(shí),給方法傳遞的參數(shù)需要與方法定義時(shí)的參數(shù)保持一致(參數(shù)個(gè)數(shù)一致,參數(shù)類型一致)。3)方法定義時(shí)的返回類型與接收方法返回值的變量類型保持一致。public int add(int a, int b) return a + b; 方法定義時(shí)的參數(shù)叫做形式參數(shù)。int a = test.add(8, 3); 方法調(diào)用時(shí)所賦予的具體值叫做實(shí)際參數(shù)。4)關(guān)鍵字void表示方法不
19、返回值。如果方法不返回值,那么聲明方法的時(shí)候使用void關(guān)鍵字,在方法定義中可以有兩種情況實(shí)現(xiàn)不返回值:a) 不使用return語句。b) 使用return,但return后面沒有任何值或者變量,return后面只有一個(gè)分號(hào),表示退出方法,返回到方法的調(diào)用端。使用方式:return;上述內(nèi)容見實(shí)例:Test5、屬性的定義和使用:類中的屬性又叫做成員變量(member variable),屬性用英文表示為property或者attribute。對(duì)象(Object)又叫做實(shí)例(Instance)。生成一個(gè)對(duì)象的過程又叫做實(shí)例化。1)命名約定a) 類:首字母大寫,如果一個(gè)類名由多個(gè)單詞構(gòu)成,那么每個(gè)
20、單詞的首字母都大寫,中間不使用任何的連接符。比如Person類,MemberTest類。b) 方法:首字母小寫。如果一個(gè)方法由多個(gè)單詞構(gòu)成,那么第一個(gè)單詞的所有字母全都小寫,從第二個(gè)單詞開始,每個(gè)單詞的首字母大寫。比如add,addThreeInt。c) 屬性:命名約定與方法相同。比如age,ageOfPerson。2)屬性需要定義在類中,又叫做成員變量;而定義在方法中的變量叫做局部變量。3)定義屬性public class Person 修飾符類型屬性名稱; 4)使用屬性與方法一樣,使用.運(yùn)算符。首先需要生成類的實(shí)例,然后使用實(shí)例+”.”的方式來使用屬性。比如:Person person =
21、 new Person(); person.age 局部變量使用前必須要聲明并賦初值;成員變量使用前必須要聲明,但可以不賦初值。5)成員變量與局部變量的聯(lián)系與區(qū)別:a) 無論是成員變量還是局部變量,使用前都需要聲明(定義)。b) 對(duì)于局部變量來說,使用前必須要初始化;對(duì)于成員變量來說,使用前可以不初始化。如果沒有初始化成員變量就開始使用,那么每個(gè)類型的成員變量都有一個(gè)默認(rèn)的初始值i. byte、short、int、long類型的初始值為0 ii. float、double類型的初始值為0.0 iii. char類型的初始值u0000iv. boolean類型的初始值為false 上述內(nèi)容見實(shí)例
22、: Person6、引用類型(reference type):引用類型是用在對(duì)象上的。一個(gè)對(duì)象可以被多個(gè)引用所指向,但同一時(shí)刻,每個(gè)引用只能指向唯一的一個(gè)對(duì)象。如果一個(gè)對(duì)象被多個(gè)引用所指向,那么無論哪個(gè)引用對(duì)對(duì)象的屬性進(jìn)行了修改,都會(huì)反映到其他的引用當(dāng)中。上述內(nèi)容見實(shí)例:People在該實(shí)例中用畫圖表示。注意:1)如果一個(gè)類包含了屬性與方法,那么該類的每一個(gè)對(duì)象都具有自己的屬性,但無論一個(gè)類有多少個(gè)對(duì)象,這些對(duì)象共享同一個(gè)方法。2)關(guān)于方法參數(shù)傳遞的總結(jié):對(duì)于Java中的方法參數(shù)傳遞,無論傳遞的是原生數(shù)據(jù)類型還是引用類型,統(tǒng)一是傳值(pass by value)。3)什么類型的引用就能指向什么
23、類型的對(duì)象,比如People類型的引用就能指向People類型的對(duì)象,但不能指向Student類型的對(duì)象。比如:People people = new People(); / 正確People people = new Student(); /錯(cuò)誤上述內(nèi)容見實(shí)例:ParamTest三、構(gòu)造方法:構(gòu)造方法(Constructor):構(gòu)造方法用于完成對(duì)象屬性的初始化工作。1、構(gòu)造方法的特點(diǎn):a) 構(gòu)造方法的名字必須與類名完全一致(包含大小寫)b) 構(gòu)造方法沒有返回值,連void也不能出現(xiàn)。c) 如果在定義一個(gè)類的時(shí)候,沒有為類聲明構(gòu)造方法,那么Java編譯器會(huì)自動(dòng)為類添加一個(gè)沒有參數(shù)且方法體為空的
24、構(gòu)造方法(默認(rèn)的構(gòu)造方法)d) 如果在定義一個(gè)類的時(shí)候,為類聲明了構(gòu)造方法,那么Java編譯器就不會(huì)再為類添加構(gòu)造方法了。e)不能顯式調(diào)用類的構(gòu)造方法,構(gòu)造方法通常是通過new關(guān)鍵字隱式調(diào)用。2、new關(guān)鍵字在生成對(duì)象時(shí)完成了三件事情:a) 為對(duì)象開辟內(nèi)存空間。b) 調(diào)用類的構(gòu)造方法。c) 將生成的對(duì)象的地址返回。3、默認(rèn)的構(gòu)造方法:構(gòu)造方法沒有參數(shù)且方法體為空。使用new來生成對(duì)象的時(shí)候,后面的小括號(hào)()表示構(gòu)造方法的參數(shù)列表,如果構(gòu)造方法不接收參數(shù),那么小括號(hào)中的內(nèi)容為空;如果構(gòu)造方法接收參數(shù),那么小括號(hào)中的實(shí)際參數(shù)就需要與構(gòu)造方法定義中的形式參數(shù)保持一致(參數(shù)數(shù)量一致、參數(shù)類型一致、按照
25、順序逐一賦值)。上述內(nèi)容見實(shí)例:PersonTest四、方法的重構(gòu)和重載(overload)1、方法的重構(gòu):如果在子類中定義的方法與其直接超類(父類)的某個(gè)方法有相同的名稱和參數(shù),則稱該子類重構(gòu)了該超類(父類)的該方法。方法重構(gòu)(Override):子類與父類的方法返回類型一樣、方法名稱一樣,參數(shù)一樣,這樣我們說子類與父類的方法構(gòu)成了重寫關(guān)系。2、方法的重載:同一個(gè)類中,定義了兩個(gè)或多個(gè)方法名字相同,但方法參數(shù)不同,這就表明了方法間的重載關(guān)系。方法參數(shù)不同有兩層含義:1)參數(shù)個(gè)數(shù)不同。2)參數(shù)類型不同。注意:方法的返回值對(duì)重載沒有任何影響。上述內(nèi)容見實(shí)例:OverLoadTest、OverLo
26、adTest2注意:方法重構(gòu)與方法重載之間的關(guān)系:重載發(fā)生在同一個(gè)類內(nèi)部的兩個(gè)或多個(gè)方法。重構(gòu)發(fā)生在父類與子類之間。五、繼承(Inheritence):1、定義及格式:Java是單繼承的,意味著一個(gè)類只能從另一個(gè)類繼承(被繼承的類叫做父類【基類,base class】,繼承的類叫做子類),Java中的繼承使用extends關(guān)鍵字。格式: class 類名 extends 類名2、注意:1)父類有的,子類也有2)父類沒有的,子類可以增加3)父類有的,子類可以改變4)構(gòu)造方法不能被繼承5)方法和屬性可以被繼承6)在定義一個(gè)類的時(shí)候,如果沒有顯式指定該類的父類,那么該類就會(huì)繼承于類(JDK提供的一個(gè)
27、類,Object類是Java中所有類的直接或間接父類)。上述內(nèi)容見實(shí)例:Child、InheritenceTest六、多態(tài):多態(tài)(Polymorphism):我們說子類就是父類(玫瑰是花,男人是人),因此多態(tài)的意思就是:父類型的引用可以指向子類的對(duì)象。但要注意的是:這個(gè)父類型的引用在執(zhí)行所指向子類的方法時(shí),該方法一定是父類中存在的方法。上述內(nèi)容見實(shí)例:PolyTest七、接口(interface):1、接口的地位等同于class,接口中的所有方法都是抽象方法。在聲明接口中的方法時(shí),可以使用abstract關(guān)鍵字,也可以不使用。通常情況下,都會(huì)省略掉abstract關(guān)鍵字。2、類可以實(shí)現(xiàn)接口。實(shí)
28、現(xiàn)使用關(guān)鍵字implements表示,代表了某個(gè)類實(shí)現(xiàn)了某個(gè)接口。一個(gè)類實(shí)現(xiàn)了某個(gè)接口,那么該類必須要實(shí)現(xiàn)接口中聲明的所有方法。Java是單繼承的,也就是說某個(gè)類只能有唯一一個(gè)父類;一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,多個(gè)接口之間使用逗號(hào)分隔。上述內(nèi)容見實(shí)例: Test3八、一些關(guān)鍵字:1、static關(guān)鍵字:可以用于修飾屬性,也可以用于修飾方法,還可以用于修飾類(后面的課程講)1)static修飾屬性:無論一個(gè)類生成了多少個(gè)對(duì)象,所有這些對(duì)象共同使用唯一一份靜態(tài)的成員變量;一個(gè)對(duì)象對(duì)該靜態(tài)成員變量進(jìn)行了修改,其他對(duì)象的該靜態(tài)成員變量的值也會(huì)隨之發(fā)生變化。如果一個(gè)成員變量是static的,那么我們可以通過
29、類名.成員變量名的方式來使用它(推薦使用這種方式)。上述內(nèi)容見實(shí)例: StaticTest2)static修飾方法:static修飾的方法叫做靜態(tài)方法。對(duì)于靜態(tài)方法來說,可以使用類名.方法名的方式來訪問。注意:不能在靜態(tài)方法中訪問非靜態(tài)成員變量;可以在靜態(tài)方法中訪問靜態(tài)的成員變量??梢栽诜庆o態(tài)方法中訪問靜態(tài)的成員變量。總結(jié):靜態(tài)的只能訪問靜態(tài)的;非靜態(tài)的可以訪問一切。見實(shí)例: StaticTest52、final關(guān)鍵字:final可以修飾屬性、方法、類。1) final修飾類:當(dāng)一個(gè)類被final所修飾時(shí),表示該類是一個(gè)終態(tài)類,即不能被繼承。2)final修飾方法:當(dāng)一個(gè)方法被final所修飾
30、時(shí),表示該方法是一個(gè)終態(tài)方法,即不能被重寫(Override)。3)final修飾屬性:當(dāng)一個(gè)屬性被final所修飾時(shí),表示該屬性不能被改寫。上述內(nèi)容見實(shí)例: FinalTest、FinalTest2、FinalTest33、包(package)。用于將完成不同功能的類分門別類,放在不同的目錄(包)下。包的命名規(guī)則:將公司域名反轉(zhuǎn)作為包名。,com.myjjx(包名),對(duì)于包名:每個(gè)字母都需要小寫。如果定義類的時(shí)候沒有使用package,那么Java就認(rèn)為我們所定義的類位于默認(rèn)包里面(default package)。1)編譯帶有package聲明的Java源文件有兩種方式:a) 直接編譯,然
31、后根據(jù)類中所定義的包名,逐一手工建立目錄結(jié)構(gòu),最后將生成的class文件放到該目錄結(jié)構(gòu)中(很少使用,比較麻煩)。b) 使用編譯參數(shù)d,方式為javac d . 源文件.java,這樣在編譯后,編譯器會(huì)自動(dòng)幫助我們建立好包所對(duì)應(yīng)的目錄結(jié)構(gòu)。2)有兩個(gè)包名,分別是與,那么我們稱后者為前者的子包。見實(shí)例: PackageTest4、導(dǎo)入(import),將使用package分離的各個(gè)類導(dǎo)入回來,讓編譯器能夠找到所需要的類。1)import的語法:import com.myjjx.PackageTest1;2)import com.myjjx.*,表示導(dǎo)入com.myjjx包下面的所有類。3)impo
32、rt aa.bb.*并不會(huì)導(dǎo)入包下面的類。這時(shí)需要這樣寫:import aa.bb.*;import aa.bb.cc.*;4)關(guān)于package、import、class的順序問題:a) 首先需要定義包(package),可選b) 接下來使用import進(jìn)行導(dǎo)入,可選c) 然后才是class或interface的定義。5)如果兩個(gè)類在同一個(gè)包下面,那么則不需要導(dǎo)入,直接使用即可。見實(shí)例: PackageTest1、ImprotTest5、 instanceof:判斷某個(gè)對(duì)象是否是某個(gè)類的實(shí)例。語法形式:引用名instanceof 類名(接口名),返回一個(gè)boolean值。見實(shí)例: Insta
33、nceofTest九、訪問修飾符(access modifier)。1、public(公共的):被public所修飾的屬性和方法可以被所有類訪問。2、protected(受保護(hù)的):被protected所修飾的屬性和方法可以在類內(nèi)部、相同包以及該類的子類所訪問。3、private(私有的):被private所修飾的屬性和方法只能在該類內(nèi)部使用4、默認(rèn)的(不加任何訪問修飾符):在類內(nèi)部以及相同包下面的類所使用。見實(shí)例:A、B、C、D十、類。java.lang包在使用的時(shí)候無需顯式導(dǎo)入,編譯時(shí)由編譯器自動(dòng)幫助我們導(dǎo)入。API (Application Programming Interface),
34、應(yīng)用編程接口。十一、String類1、對(duì)于String對(duì)象的相等性判斷來說,請(qǐng)使用equals()方法,而不要使用=。2、當(dāng)使用+拼接字符串時(shí),會(huì)生成新的String對(duì)象,而不是向原有的String對(duì)象追加內(nèi)容。3、String I = new String(“aaa”);和 String I = “aaa”返回的地址不同,因?yàn)樗鼈兇鎯?chǔ)在不同的空間。見實(shí)例: StringTest、StringTest2十二、數(shù)組:(Array):相同類型數(shù)據(jù)的集合就叫做數(shù)組。1、如何定義一維數(shù)組。type 變量名= new type數(shù)組中元素的個(gè)數(shù);可以按照下列方式定義長(zhǎng)度為10的數(shù)組:int a = new
35、 int10;或者int a = new int10;2、數(shù)組中的元素索引是從0開始的。對(duì)于數(shù)組來說,最大的索引=數(shù)組的長(zhǎng)度1。見實(shí)例: ArrayTest3、定義數(shù)組的第3種方式:type 變量名= new type逗號(hào)分隔的初始化值列表;4、Java中的每個(gè)數(shù)組都有一個(gè)名為length的屬性,表示數(shù)組的長(zhǎng)度。length屬性是public,final,int的。數(shù)組長(zhǎng)度一旦確定,就不能改變大小。見實(shí)例: ArrayTest5、int a = new int10,其中a是一個(gè)引用,它指向了生成的數(shù)組對(duì)象的首地址,數(shù)組中每個(gè)元素都是int類型,其中僅存放數(shù)據(jù)值本身。用畫圖表示! 見實(shí)例: Ar
36、rayTest2注意:一維數(shù)組中存放原生數(shù)據(jù)類型和引用類型時(shí)的不同。練習(xí):1、ArrayTest36、二維數(shù)組。二維數(shù)組是一種平面的二維結(jié)構(gòu),本質(zhì)上是數(shù)組的數(shù)組。1)二維數(shù)組的定義方式:type a = new type23;2) 二維數(shù)組的初始化:逗號(hào)分隔的初始化值列表,逗號(hào)分隔的初始化值列表;見實(shí)例: ArrayTest4、ArrayTest5練習(xí):ArrayTest5、BubbleSortTest附:一、包裝類(Wrapper Class)。針對(duì)于原生數(shù)據(jù)類型的包裝。所有的包裝類(8個(gè))都位于java.lang包下。Java中的8個(gè)包裝類分別是:Byte, Short, Integer,
37、 Long, Float, Double, Character, Boolean。他們的使用方式都是一樣的,可以實(shí)現(xiàn)原生數(shù)據(jù)類型與包裝類型的雙向轉(zhuǎn)換。見實(shí)例: IntegerTest實(shí)驗(yàn)三:java web 開發(fā)基礎(chǔ)一、IDE(Integrated Development Environment),集成開發(fā)環(huán)境。1、NetBeans。/ 2、JBuilder。3、MyEclipse(日蝕、月蝕)1)例:在myeclipse中編寫一個(gè)能打印“hello world”字符串的程序,大家注意和以前文本編輯器的比較。2)保存即編譯、錯(cuò)誤提示、運(yùn)行、顯示行號(hào)、基本屬性
38、修改、class文件的存放路徑(不再關(guān)心)、compiler編譯器的修改。二、集合框架:1、定義:存儲(chǔ)數(shù)據(jù)對(duì)象的集合。集合中存放的依然是對(duì)象的引用而不是對(duì)象本身。 圖:集合的接口2、集合的實(shí)現(xiàn)類:ArrayList1)集合當(dāng)中只能放置對(duì)象的引用,無法放置原生數(shù)據(jù)類型,我們需要使用原生數(shù)據(jù)類型的包裝類才能加入到集合當(dāng)中。2)集合當(dāng)中放置的都是Object類型,因此取出來的也是Object類型,那么必須要使用強(qiáng)制類型轉(zhuǎn)換將其轉(zhuǎn)換為真正的類型(放置進(jìn)去的類型)。實(shí)例見:ArrayListTest1、ArrayListTest2、ArrayListTest3三、Tomcat服務(wù)器1、下載、安裝Tomc
39、at網(wǎng)站:2、配置環(huán)境變量:JAVA_HOME:java的安裝目錄。CATALINA_HOME:Tomcat的安裝目錄。3、啟動(dòng)、關(guān)閉Tomcat(1)執(zhí)行startup.bat(啟動(dòng))(2)http:/localhost:8080(3)執(zhí)行shutdown.bat(關(guān)閉)四、初識(shí)Servlet和JSP1、建立web項(xiàng)目(1)修改編碼方式:為了能正常使用中文,修改pageEncoding=utf-8。(2)在MyEclipse中加載服務(wù)器(Tomcat)。見講課時(shí)演示。(3)在MyEclipse中部署項(xiàng)目。見講課時(shí)演示。(4)執(zhí)行第一個(gè)JSP文件。見講課時(shí)演示。如:http:/localhos
40、t:8080/test2/index.jsp2、第一個(gè)Servlet(1)什么是Servlet:Servlet是JAVA服務(wù)器端編程,不同于我們之前寫的一般的JAVA應(yīng)用程序, Servlet程序是運(yùn)行在服務(wù)器上的。注:該類需要繼承HttpServlet類(一般來說,Servlet都需要繼承此類)。這個(gè)類沒有main方法。(2)在網(wǎng)頁上顯示“HelloWorld”字符串的Servlet。見實(shí)例HelloWorldServlet.java(3)Web.xml文件配置內(nèi)容:<servlet><servlet-name>HelloWorld</servlet-name&
41、gt;<servlet-class>com.myjjx.HelloWorldServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloWorld</servlet-name><url-pattern>/HelloWorld</url-pattern></servlet-mapping>(4)JSP和Servlet的比較例:<h1>helloWorld:<%= new java.util.Da
42、te().toLocaleString() %></h1>注:JSP修改后,服務(wù)器不需重啟。Servlet和配置文件重啟后,服務(wù)器需重啟。我們可以將Servlet看作是嵌套了HTML代碼的Java類;可以將JSP看作是嵌套了Java代碼的HTML頁面。3、應(yīng)用實(shí)例:一個(gè)簡(jiǎn)單的登陸處理例見LoginServlet.java、login.jsp(1)先建立一個(gè)login.jsp。編寫一個(gè)有客戶端輸入內(nèi)容的username和password的表單。(2)編寫LoginServlet.java程序。重寫doGet方法,獲取客戶端的輸入信息,并返回給客戶端。(3)設(shè)置web.xml文件
43、。設(shè)置Servlet映射關(guān)系。(4)在login.jsp文件中設(shè)置客戶端提交的信息交給服務(wù)器端的哪個(gè)文件處理。(設(shè)置action屬性)。4、doGet和doPost的差別(1)瀏覽器地址欄呈現(xiàn)的結(jié)果不同(表象)(2)真正的原因在于向服務(wù)器端發(fā)送請(qǐng)求時(shí)的形式是不同的。參數(shù)內(nèi)容前者是作為url的一部分發(fā)送給服務(wù)器端;而后者是作為請(qǐng)求體的一部分。(3)通過瀏覽器地址欄輸入網(wǎng)址的方式來訪問服務(wù)器端資源,全部使用的是get方法請(qǐng)求的。要使用doPost方式必須通過form表單進(jìn)行設(shè)置。(4)因此doPost在使用上較doGet安全。5、客戶端、服務(wù)器與Servlet/JSP之間的關(guān)系五、練習(xí):1、JSP
44、:注冊(cè) username password repassword age2、Servlet (1)password=repassword;(2)age>183、結(jié)果(1)success:congratulation(2)failure:password!=repassword或age<=18見register.jsp RegisterServlet.java(課堂講解)六、JSP(java server pages)1、什么是JSP:在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)簽,就構(gòu)成了JSP網(wǎng)頁。注:所有程序操作都在
45、服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,這樣大大降低了對(duì)客戶瀏覽器的要求,即使客戶瀏覽器端不支持Java,也可以訪問JSP網(wǎng)頁。上面的圖示見test1.jsp2、JSP的執(zhí)行流程:注:Servlet 首先被編譯為class文件,然后由服務(wù)器調(diào)用;JSP首先被轉(zhuǎn)化為Servlet(Java文件),然后再被編譯為class文件,最后由服務(wù)器調(diào)用。因此:JSP 最終都會(huì)轉(zhuǎn)換為Servlet 去執(zhí)行。3、JSP語法概述JSP原始代碼中包含了JSP元素和Template(模板) data兩類Template data指的是JSP引擎不處理的部分,即標(biāo)記<%>以外的部分,例如代碼中的
46、HTML的內(nèi)容等,這些數(shù)據(jù)會(huì)直接傳送到客戶端的瀏覽器;JSP元素則是指將由JSP引擎直接處理的部分,這一部分必須符合JAVA語法,否則會(huì)導(dǎo)致編譯錯(cuò)誤。4、JSP元素(1)指令元素:提供整個(gè)JSP頁面的相關(guān)信息。Page、include、taglib三種。格式:包含在“<% %>”卷標(biāo)里例1:<% page language="java"pageEncoding="UTF-8"%>注1:import="package.class | package.* ,." 需要導(dǎo)入的Java包的列表,這些包作用于程序段,表達(dá)
47、式,以及聲明。注2:可以在一個(gè)頁面中用上多個(gè)“<% page %>”指令,但是其中的屬性只能用一次,不過也有例外,那就是import屬性。因?yàn)閕mport屬性和Java中的import語句類似(參照J(rèn)ava Language,import語句引入的是Java語言中的類),所以此屬性就能用多次。注3:無論把“<% page %>”指令放在JSP的文件的哪個(gè)地方,它的作用范圍都是整個(gè)JSP頁面。不過,為了JSP程序的可讀性,以及好的編程習(xí)慣,最好還是把它放在JSP文件的頂部。例2:<% include file="相對(duì)位置" %> 向當(dāng)前頁中
48、插入一個(gè)靜態(tài)文件的內(nèi)容例見test5.jsp和test5_1.jsp(2)腳本元素腳本段:<% java代碼 %>表達(dá)式:<%= java表達(dá)式 %>例見test3.jsp(3)動(dòng)作元素為請(qǐng)求處理階段提供信息。語法格式如下:<jsp:forward>A:<jsp:forward page="relativeURL" | "<%= expression %>" /> B:<jsp:forward page="relativeURL" | "<%= expr
49、ession %>" > <jsp:param name="parameterName" value="parameterValue | <%= expression %>" /> <jsp:param /> </jsp:forward> (“<jsp:param />”指可以有多個(gè)“<jsp:param/>”標(biāo)記。)實(shí)例見forward.jsp forwardTo.jsp<jsp:include>格式:A:<jsp:include page=
50、"relativeURL | <%=expression%>" flush="true" /> B:<jsp:include page="relativeURL | <%=expression %>" flush="true" > <jsp:param name="parameterName" value="parameterValue | <%= expression %>" /> <jsp:param
51、 /> </jsp:include> (“<jsp:param />”指可以有多個(gè)“<jsp:param/>”標(biāo)記。)實(shí)例見include.jsp included.jsp練習(xí):兩個(gè)JSP頁面,第一個(gè)要求客戶端輸入行和列的指定數(shù),第二個(gè)要求根據(jù)第一個(gè)頁面?zhèn)鬟^來的數(shù),動(dòng)態(tài)形成一個(gè)表格。見input.jsp和output.jsp 課堂講解。七、JSP的內(nèi)置對(duì)象JSP 有以下九種內(nèi)置對(duì)象,包括:request,請(qǐng)求對(duì)象response,響應(yīng)對(duì)象pageContext,頁面上下文對(duì)象session,會(huì)話對(duì)象application,應(yīng)用程序?qū)ο髈ut,輸出對(duì)象c
52、onfig,配置對(duì)象page,頁面對(duì)象exception,異常對(duì)象1、request(1)request對(duì)象代表的是來自客戶端的請(qǐng)求,例如我們?cè)贔ORM表單中填寫的信息等,是最常用的對(duì)象。關(guān)于它的方法使用較多的是getParameter、getParameterNames和getParameterValues,通過調(diào)用這幾個(gè)方法來獲取請(qǐng)求對(duì)象中所包含的參數(shù)的值。request的getParameter方法的作用是獲取到客戶端通過表單或url請(qǐng)求參數(shù)所發(fā)送過來的參數(shù)值,是客戶端與服務(wù)器端之間的交互,服務(wù)器端要想獲取到客戶端發(fā)送過來的數(shù)據(jù),就需要使用getParameter方法來獲取。沒有與get
53、Parameter方法對(duì)應(yīng)的setParameter方法。實(shí)例見login.jsp和result.jsp(對(duì)前面login.jsp的action屬性進(jìn)行修改,改變指定的處理對(duì)象。不再用LoginServlet.java來處理,而改由resutl.jsp來處理,并使用out和request內(nèi)置對(duì)象來操作)。(2)實(shí)例演示:圖1圖2:圖3:2、session對(duì)象(1)session對(duì)象代表服務(wù)器與客戶端所建立的會(huì)話,當(dāng)需要在不同的JSP頁面中保留客戶信息的情況下使用,比如在線購物、客戶軌跡跟蹤等。HTTP是無狀態(tài)(stateless)協(xié)議;Web Server 對(duì)每一個(gè)客戶端請(qǐng)求都沒有歷史記憶;S
54、ession用來保存客戶端狀態(tài)信息;(2)基本應(yīng)用:見實(shí)例:session1 session2 session33、out對(duì)象out對(duì)象代表了向客戶端發(fā)送數(shù)據(jù)的對(duì)象,通過“out” 對(duì)象發(fā)送的內(nèi)容將是瀏覽器需要顯示的內(nèi)容,是文本一級(jí)的,可以通過“out” 對(duì)象直接向客戶端寫一個(gè)由程序動(dòng)態(tài)生成HTML文件。常用的方法除了print和println之外,還包括clear、clearBuffer、flush等方法。4、application(應(yīng)用對(duì)象):存活范圍最大的對(duì)象,只要服務(wù)器沒有關(guān)閉,application對(duì)象中的數(shù)據(jù)就會(huì)一直存在。在整個(gè)服務(wù)器運(yùn)行過程當(dāng)中,application對(duì)象只有一個(gè)
55、。實(shí)例見application.jsp注1:request、session以及application這3個(gè)對(duì)象的范圍是逐個(gè)增加的:request只在一個(gè)請(qǐng)求的范圍內(nèi);?session是在瀏覽器窗口的范圍內(nèi)?;application則是在整個(gè)服務(wù)器的運(yùn)行過程中。注2:需要導(dǎo)入的Java包的列表,這些包作用于程序段,表達(dá)式,以及聲明。下面的包在JSP編譯時(shí)已經(jīng)導(dǎo)入了,所以就不需要再指明了:java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.*練習(xí):建立3個(gè)JSP頁面,第1個(gè)需要有一個(gè)表單,輸入姓名;第2個(gè)需要顯示第1個(gè)表單輸入的姓名,而且再需一個(gè)表單,要求輸入“你的興趣愛好是:”,第3個(gè)不僅需要顯示姓名,而且還需顯示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年、月、日(教學(xué)設(shè)計(jì))-2023-2024學(xué)年三年級(jí)下冊(cè)數(shù)學(xué)人教版
- 延邊職業(yè)技術(shù)學(xué)院《數(shù)據(jù)庫原理與應(yīng)用課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西警官職業(yè)學(xué)院《寬帶接入技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西能源職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)控制系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢工程大學(xué)郵電與信息工程學(xué)院《多變量分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 西南政法大學(xué)《乳品工藝學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 全國(guó)粵教清華版初中信息技術(shù)七年級(jí)下冊(cè)第2單元第3節(jié)《信息的處理》教學(xué)設(shè)計(jì)
- 西安外事學(xué)院《電子商務(wù)組織與運(yùn)營(yíng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 福建華南女子職業(yè)學(xué)院《專業(yè)外語(自動(dòng)化)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東工貿(mào)職業(yè)技術(shù)學(xué)院《電氣控制與PLC技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 美國(guó)藥典-USP-561-植物源性物質(zhì)
- 施工安全管理培訓(xùn)資料
- 0-3歲嬰幼兒基礎(chǔ)護(hù)理知到智慧樹章節(jié)測(cè)試課后答案2024年秋杭州師范大學(xué)
- 掛靠免責(zé)協(xié)議書范本
- 2024-2030年中國(guó)新媒體市場(chǎng)前景規(guī)模及發(fā)展趨勢(shì)分析報(bào)告
- Python金融數(shù)據(jù)分析與挖掘(微課版) 教案全套 黃恒秋
- 中建10t龍門吊安拆安全專項(xiàng)施工方案
- 國(guó)內(nèi)外測(cè)井技術(shù)現(xiàn)狀與展望文檔
- 《銷售人員的培訓(xùn)》課件
- 國(guó)防動(dòng)員課件教學(xué)課件
- 特殊作業(yè)安全管理監(jiān)護(hù)人專項(xiàng)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論