




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、情境3 產(chǎn)品庫存管理系統(tǒng)面向?qū)ο笤O(shè)計(jì),學(xué)習(xí)情境描述,要求根據(jù)第一個(gè)情境的需求分析結(jié)果,學(xué)生成立項(xiàng)目開發(fā)小組,劃分角色,推選項(xiàng)目經(jīng)理和CTO(首席技術(shù)師),程序員。經(jīng)過討論給出產(chǎn)品庫存管理系統(tǒng)中的實(shí)體類:入庫單、出庫單、庫存和用戶類和控制類接口的詳細(xì)設(shè)計(jì);利用情境2搭建好的環(huán)境,對(duì)每個(gè)類予以編程實(shí)現(xiàn)。,所需知識(shí),類的定義與對(duì)象的創(chuàng)建 構(gòu)造方法的作用及應(yīng)用 面向?qū)ο笕筇卣鳎悍庋b性、繼承性和多態(tài)性的Java語言實(shí)現(xiàn) 抽象類與接口的應(yīng)用 包的創(chuàng)建與使用 訪問控制符的應(yīng)用 異常處理,重點(diǎn)及難點(diǎn),構(gòu)造方法的作用及應(yīng)用 面向?qū)ο笕筇卣鳎悍庋b性、繼承性和多態(tài)性的Java語言實(shí)現(xiàn) 抽象類與接口的應(yīng)用 異常處
2、理,能力目標(biāo),培養(yǎng)學(xué)生面向?qū)ο蟮木幊棠芰?培養(yǎng)學(xué)生良好的團(tuán)隊(duì)合作意識(shí)及溝通協(xié)調(diào)能力、接收新知識(shí)的能力 培養(yǎng)學(xué)生分析問題、解決問題的能力、創(chuàng)新能力以及邏輯思維能力,任務(wù)一,用Java語言描述現(xiàn)實(shí)世界中的Person。,學(xué)生討論確定Person的特征 譬如:name-姓名,age-表示年齡,sex-表示性別等。 確定Person相關(guān)的行為 譬如:吃飯、睡覺等。,用Java語言實(shí)現(xiàn)Person類,復(fù)習(xí)引入,面向?qū)ο笈c面向過程的區(qū)別?,面向?qū)ο缶幊?面向?qū)ο缶幊淌擒浖O(shè)計(jì)與實(shí)現(xiàn)的有效方法,它將客觀世界中存在的事物看作對(duì)象,每個(gè)客觀事物都有自己的特征和行為。,對(duì)象的基本概念,變量,方法,客觀世界的實(shí)體,
3、程序中對(duì)象,對(duì)象具有兩方面的含義(考慮從哪些方面描述對(duì)象),面向?qū)ο蟮幕靖拍?類是抽象的,對(duì)象是具體的,具有相同特征和行為的對(duì)象被抽象為類。 類是對(duì)象的模板,包括一個(gè)對(duì)象的所有數(shù)據(jù)和代碼。,類的示例,形狀類,動(dòng)物類,汽車類,對(duì)象,“對(duì)象是存在的具體實(shí)體,具有明確定義的狀態(tài)和行為?!?對(duì)象的示例,收銀員對(duì)象,顧客對(duì)象,顧客 姓名:朱麗葉 年齡:28 體重:52千克 操作: 購買商品,狀態(tài),姓名:布蘭尼 職銜:收銀員 年齡:35 體重:60千克 操作: 收款 打印帳單,行為,消息傳遞,“消息指一個(gè)對(duì)象為執(zhí)行某項(xiàng)特定操作而向另一個(gè) 對(duì)象發(fā)送的請(qǐng)求”,類和對(duì)象的示例,雇員,收銀員,系統(tǒng)管理員,倉庫管
4、理員,面向?qū)ο蠹夹g(shù)的實(shí)現(xiàn),對(duì)象、類和實(shí)體的關(guān)系,類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例,類的基本概念,現(xiàn)實(shí)生活中的對(duì)象,class Car int color; int name; int speed; void brake() void speedUp() void slowDown() ,抽象數(shù)據(jù)類型,程序中的對(duì)象,映 射,描述,實(shí) 現(xiàn),類定義,類定義中必須要寫類名,應(yīng)該使用Java語言合法的標(biāo)識(shí)符來命名 類名不能與java中已定義好的類名相同,格式: 修飾符class 類名 extends 父類名 implements 接口名表 成員變量聲明 方法成員聲明 ,其中class、extends和
5、implements都是Java的關(guān)鍵字。,類中的方法 6-1,方法的名稱,參數(shù)列表,方法的主體,方法返回的對(duì)象類 型或原始類型,方法體,若局部變量與類的成員變量同名, 則類的成員變量被隱藏。,方法體是對(duì)方法的實(shí)現(xiàn),它包括局部變量的聲明以及所有合法的Java指令。方法體中聲明的局部變量的作用域在該方法內(nèi)部。,類的定義舉例,class Car int color; int name; int speed; void brake() void speedUp() void slowDown() ,類的實(shí)現(xiàn),任務(wù)一實(shí)現(xiàn),class Person String name; int age; Strin
6、g sex; public void eat() System.out.println(Its delicious!); ,【實(shí)戰(zhàn)】:定義一個(gè)名為Rectangle表示長(zhǎng)方形的類,它包含double類型的長(zhǎng)length和寬width兩個(gè)數(shù)據(jù)成員和設(shè)置長(zhǎng)方形長(zhǎng)寬值的方法setDim()、計(jì)算長(zhǎng)方形面積的方法area()。,類的實(shí)現(xiàn),對(duì)象的創(chuàng)建,聲明,類名 對(duì)象名;,聲明并不為對(duì)象分配內(nèi)存空間,而 只是分配一個(gè)引用空間,實(shí)例化,類名 對(duì)象名 = new 類名(),例:Person p=new Person();,運(yùn)算符new為對(duì)象分配內(nèi)存空間,它調(diào)用對(duì)象的構(gòu)造方法,返回引用,初始化,另外執(zhí)行構(gòu)造方
7、法,可進(jìn)行初始化,當(dāng)一個(gè)變量被創(chuàng)建時(shí),會(huì)對(duì)其中各種類型的成員變量自動(dòng)按下表進(jìn)行初始化賦值。,對(duì)象的使用,訪問對(duì)象成員的一般形式為: 對(duì)象名.成員變量名 對(duì)象名.成員方法名(),運(yùn)算符”.”在這里稱為成員運(yùn)算符,創(chuàng)建對(duì)象舉例,class TestPerson public static void main(String args) Person p1=new Person(); =Tom; p1.age=12; p1.sex=male; p1.eat(); ,按照前面設(shè)計(jì)Person類來充當(dāng)生產(chǎn)車間,創(chuàng)建Person對(duì)象,任務(wù)二,通過構(gòu)造方法,初始化Person類的實(shí)例,為其成員變
8、量賦初值。,構(gòu)造方法,在Java中,任何變量在被使用前都必須先設(shè)置初值。Java提供了為類的成員變量賦初值的專門功能:構(gòu)造方法。,構(gòu)造方法的特點(diǎn),構(gòu)造方法名與類名相同。 構(gòu)造方法不返回任何值,也沒有返回類型。 每一個(gè)類可以有零個(gè)或多個(gè)重載的構(gòu)造方法。若沒有為一個(gè)類顯式的定義構(gòu)造方法,則當(dāng)創(chuàng)建類對(duì)象時(shí),編譯器將自動(dòng)為它創(chuàng)建一個(gè)沒有參數(shù)的默認(rèn)構(gòu)造方法. 構(gòu)造方法只能在創(chuàng)建對(duì)象時(shí)通過new關(guān)鍵字來自動(dòng)調(diào)用。,注意:一旦我們自己定義了構(gòu)造方法,系統(tǒng)將不再為我們提供默認(rèn)的不帶參數(shù)的構(gòu)造方法 。,class Person String name; int age; String sex; public P
9、erson(String s1) name = s1; public Person(String s1,int x) name = s1; age = x; ,任務(wù)二實(shí)現(xiàn),public Person(String s1,int x,String s2) name= s1; age = x; sex = s2; public void eat() System.out.println(Its delicious!); ,class TestPerson public static void main(String args) Person p1=new Person(Tom); Person p
10、2=new Person(John,20); Person p3=new Person(Bob,22,male); System.out.println(+p1.age+p1.sex); System.out.println(+p2.age+p2.sex); System.out.println(+p3.age+p3.sex); ,通過構(gòu)造方法賦初值,This引用句柄,構(gòu)造方法的形式參數(shù)與類的成員變量名相同 在構(gòu)造方法中調(diào)用其他重載的構(gòu)造方法,用this(參數(shù)列表)的形式,自主學(xué)習(xí)內(nèi)部類的定義和使用。,面向?qū)ο蟮幕咎卣?封裝性、繼承性、多態(tài)性是面向?qū)?/p>
11、象的三個(gè)主要特性。,封裝性的引入,class Person String name; int age; String sex; public void eat() System.out.println(Its delicious!); ,class TestPerson public static void main(String args) Person p1=new Person(); =Tom; p1.age=-12;/非法的值 p1.sex=male;System.out.println(“p1的年齡是:”+p1.age); ,通過實(shí)例啟發(fā)學(xué)生思考為什么引入封裝性?,封裝
12、性的實(shí)現(xiàn),外部世界,所謂封裝,就是信息隱藏,隱藏對(duì)象的實(shí)現(xiàn)細(xì)節(jié), 不讓用戶看到,封裝的示例 3-1,接口,采購經(jīng)理,羅杰斯先生,法拉力公司,.,迪斯尼汽車公司,.,市場(chǎng)經(jīng)理,雪莉女士,要求,封裝的示例 3-2,有選擇地提供數(shù)據(jù),法拉力公司,迪斯尼汽車公司,封裝的示例 3-3,實(shí)體法拉力公司,實(shí)體迪斯尼汽車公司,Auti Ltd,.,Buto Ltd,.,設(shè)置器和訪問器方法,封裝舉例,class Person private int age; public void setAge(int i) if(i130) return; age = i; public int getAge() retur
13、n age; ,將其設(shè)為私有的,方法設(shè)為公有,封裝的好處,任務(wù)三,定義Person類的子類Student類,繼承性,類繼承是指一個(gè)類可以繼承其他類的非私有成員,實(shí)現(xiàn)代碼復(fù)用。 被繼承的類稱為父類,繼承父類后產(chǎn)生的類稱為子類。,繼承,父 類,子類,繼承的實(shí)現(xiàn),class SubClass extends SuperClass ,Java中的繼承是通過extends關(guān)鍵字來實(shí)現(xiàn)的。,關(guān)鍵字,任務(wù)三實(shí)現(xiàn),class Student extends Person String school; public void study() System.out.println(Studding); publi
14、c static void main(String args) Person p=new Person(); =Tom; p.age=30; p.getInfo(); Student s=new Student(); =John; s.age=16; s.school=“清華大學(xué)”; s.getInfo(); s.study(); ,繼承的特點(diǎn),注意:在Java語言中,只允許單繼承。,繼承的優(yōu)點(diǎn),構(gòu)造方法的繼承,構(gòu)造方法不能繼承,但子類在創(chuàng)建對(duì)象時(shí)要對(duì)繼承來自父類的成員進(jìn)行初始化,因此,在創(chuàng)建子類時(shí)除了執(zhí)行子類的構(gòu)造方法外,還需要調(diào)用父類的構(gòu)造方法,具體遵循原則如下:,
15、當(dāng)子類未定義構(gòu)造方法時(shí),創(chuàng)建對(duì)象時(shí)將無條件地調(diào)用父類的無參構(gòu)造方法; 對(duì)于父類的含參數(shù)構(gòu)造方法,子類可以在自己構(gòu)造方法中使用super調(diào)用它,但super調(diào)用語句必須是子類構(gòu)造方法中的第一個(gè)可執(zhí)行語句; 子類在自己的構(gòu)造方法中如果沒有用super明確調(diào)用父類的構(gòu)造方法,則在創(chuàng)建對(duì)象時(shí),將自動(dòng)先執(zhí)行父類的無參構(gòu)造方法,然后再執(zhí)行自己定義的構(gòu)造方法。,任務(wù)四,對(duì)上例中Student 類繼承了父類的所有非私有方法進(jìn)行重寫,多態(tài)性,方法重寫實(shí)現(xiàn)的 動(dòng)態(tài)多態(tài)性 (運(yùn)行時(shí)多態(tài)),方法重載實(shí)現(xiàn) 的靜態(tài)多態(tài)性 (編譯時(shí)多態(tài)),多態(tài)性,方法重寫,class Rectangle int length; int w
16、idth; Rectangle(int len , int wid) length = len; width = wid; /* 計(jì)算矩形的周長(zhǎng).*/ void getPerimeter() System.out.println(“矩形的周長(zhǎng)為 + (2 * (length + width); ,方法重寫,class Square extends Rectangle Square(int len) length = len; /* 計(jì)算周長(zhǎng).*/ void getPerimeter() System.out.println(“正方形的周長(zhǎng)為 + (4 * length); ,public st
17、atic void main(String arg) Rectangle rectObj = new Rectangle(10, 15); rectObj.getPerimeter(); Rectangle sqObj= new Square(15); sqObj.getPerimeter(); ,調(diào)用父類方法,調(diào)用子類方法,任務(wù)四實(shí)現(xiàn),class Person public String name; public int age; public void getInfo() System.out.println(name); System.out.println(age); public v
18、oid eat() System.out.println(Its delicious!); class Student extends Person String school; public void study() ,System.out.println(Studding); public void getInfo() System.out.println(name); System.out.println(age); System.out.println(school); public static void main(String args) Person p=new Person()
19、; =Tom; p.age=30; p.getInfo(); Student s=new Student(); =John; s.age=16; s.school=塔山小學(xué); s.getInfo(); s.study(); ,多態(tài)性,【實(shí)戰(zhàn)】:通過分析,編程實(shí)現(xiàn)上圖,成員方法覆蓋應(yīng)注意的問題,覆蓋方法的方法名、返回類型和參數(shù)列表必須與它所覆蓋的方法相同 覆蓋方法不能比它所覆蓋的方法訪問性更低 覆蓋方法不能比它所覆蓋的方法拋出更多的異常,成員變量的覆蓋,若子類聲明了與父類同名的變量,則父類的變量被隱藏起來,直接使用的是子類的變量,但父類的變量仍占據(jù)空間,可通過super或
20、父類名來訪問。,程序運(yùn)行結(jié)果: Subclass : 200 Superclass : 100,成員變量的覆蓋,class A int x = 100; class B extends A int x = 200; void print() System.out.println(Subclass:+ x); System.out.println(Superclass:+ super.x); public static void main(String args) (new B().print(); ,成員變量的覆蓋,類對(duì)象之間的類型轉(zhuǎn)換,父類對(duì)象和子類對(duì)象的轉(zhuǎn)換需要注意以下原則:,子類對(duì)象可以
21、被視為是其父類的一個(gè)對(duì)象,反之則不可。 若一個(gè)方法的形式參數(shù)定義的是父類的對(duì)象,則調(diào)用該方法的實(shí)際參數(shù)可以使用子類對(duì)象。 若父類對(duì)象引用指向的實(shí)際是一個(gè)子類對(duì)象,則這個(gè)父類對(duì)象的引用可以用強(qiáng)制類型轉(zhuǎn)換轉(zhuǎn)化成子類對(duì)象的引用。,類變量 static 修飾符,我們?cè)赑erson類中增加一個(gè)成員變量國籍, 并假設(shè)所有的人都來自中國,該如何實(shí)現(xiàn)?,思考?,類變量,country=China,static,靜態(tài)變量或類變量,靜態(tài)變量的訪問:類名.變量名,類變量的應(yīng)用,class Count public static void main(String args) User u1=new User(); u
22、1.login(); User u2=new User(); u2.login(); ,class User static int count=0; void login() count+;System.out.println(你是第+count+位訪問者); ,類方法 static修飾符,static修飾符修飾的方法叫靜態(tài)方法,目的:使方法獨(dú)立于類的實(shí)例,使用類去訪問,類方法,調(diào)用靜態(tài)方法的語法為: classname.methodname( );,類方法的應(yīng)用,public class IsPrime public static boolean prime(int x) for(int k
23、=2;k=Math.sqrt(x);k+) if(x%k=0) return false; return true; ,Class TestIsPrime public static void main(String args) for(int m=10;m=100;m+) if(IsPrime.prime(m) System.out.println(m+“是素 數(shù)。); ,類方法的應(yīng)用,為什么main()方法要用static來修飾?,思考?,final 修飾符,任務(wù)五,思考:怎樣用一個(gè)方法實(shí)現(xiàn)兩種體積的計(jì)算,編程實(shí)現(xiàn)計(jì)算圓柱體和長(zhǎng)方體的體積,抽象類,由abstract修飾的方法叫抽象方法,抽
24、象方法沒有方法體;包含抽象方法的類叫抽象類,由abstract修飾。 抽象方法必須聲明在抽象類中。 抽象方法語法: abstract type method_name(parameter_list); 聲明抽象類語法: abstract class 使用:父類中的某些抽象不包含任何邏輯,并需要在子類中重寫,子類提供這種抽象方法的實(shí)現(xiàn)細(xì)節(jié),任務(wù)五實(shí)現(xiàn),abstract class Shape . . . . . . . . . . . double length; double width; double height; double radius; . . . . . . . . . . .
25、abstract double vol(); ,class Circle extends Shape * 計(jì)算圓柱體的體積. . . . . . . . . . . . double vol() return Math.PI*radius*radius*height; ,class Rectangle extends Shape * 計(jì)算長(zhǎng)方體的體積. . . . . . . . . . . . double vol() return length * width*height; ,抽象類,抽象類可以具有指向子類對(duì)象的對(duì)象引用,任務(wù)六,通過接口計(jì)算邊長(zhǎng)分別為3和4的長(zhǎng)方形面積,接口,接口的定義
26、,public interface Myinterface int compute(int x, int y); ,使用interface關(guān)鍵字定義一個(gè)接口:,接口的實(shí)現(xiàn),public calss Myclass implements Myinterface public int compute(int x, int y) return x+y; ,public calss Yourclass implements Myinterface public int compute(int x, int y) return x*y; ,注意:若實(shí)現(xiàn)接口的類不是抽象類,則在該類的定義部分必須實(shí)現(xiàn)指定接
27、口的所有抽象方法。,接口的繼承,接口可以通過關(guān)鍵字extends繼承其他接口 例如:Interface B Interface A extends B ,interface A String a = 在接口A中; void showA(); interface B extends A String b = 在接口B中; void showB(); class InterfaceABC implements C public void showA() System.out.println(a); public void showB() System.out.println(b); ,接口的繼承舉
28、例,程序運(yùn)行結(jié)果: 在接口A中 在接口B中,public class UseInterface1 public static void main(String args) int x = 5,y=10; Myinterface o; Myclass my = new Myclass(); o = my; System.out.println(xy的和=“ + pute(x,y); Yourclass you = new YourClass(); o = you; System.out.println(“xy的積= + pute(x,y); ,接口類型的使用,接口可以作為一種引用類型來使用,接口
29、的優(yōu)點(diǎn),接口的使用使得方法的描述說明和方法功能的分開,有助于降低程序的復(fù)雜性,使程序設(shè)計(jì)靈活,便于擴(kuò)充修改。這也是Java面向?qū)ο蟪绦蛟O(shè)計(jì)方法中多態(tài)特性的體現(xiàn)。,任務(wù)六實(shí)現(xiàn),interface Irect double w=3,l=4; void compute(); ,定義接口,class Crect implements Irectpublic void compute() System.out.println(邊長(zhǎng)分別為3和4的長(zhǎng)方形面積為:+w*l); ,定義實(shí)現(xiàn)接口的類,class InterfaceDemo public static void main(String args)
30、Crect r = new Crect(); pute(); ,定義主類 創(chuàng)建接口對(duì)象,綜合實(shí)戰(zhàn),(1)根據(jù)要求實(shí)現(xiàn)Circle類: 成員變量:radius半徑 成員方法:Circle()構(gòu)造方法,將半徑置0 Circle(double r )構(gòu)造方法,將半徑初始化為r double getRadius()獲取圓的半徑 double getPerimeter()獲取圓的周長(zhǎng) double getArea()獲取圓的面積 void disp()將圓的半徑、周長(zhǎng)和面積輸出到屏幕 (2)通過繼承Circle類,派生圓柱體類Cylinder: 成員變量:height高 成員方法:Cylinder(do
31、uble r,double h) 構(gòu)造方法,初始化半徑和高 double getHeight()獲取圓柱體的高 double getVol()獲取圓柱體體積 void dispVol()將圓柱體體積輸出到屏幕,包,包將類和接口有機(jī)地組織成層次結(jié)構(gòu),與具體的文件系統(tǒng)的目錄樹結(jié)構(gòu)層次一致。 包允許將類組合成較小的單元,使其易于找到和使用相應(yīng)的類文件。 有助于避免命名沖突。 包允許在更廣的范圍內(nèi)保護(hù)類、數(shù)據(jù)和方法。,創(chuàng)建包,package 包名1.包名2.,語法格式如下:,注意:在Java程序中,package語句必須是程序的第一條非空格、非注釋語句。,創(chuàng)建包舉例,package mypackage
32、; public class Person public String name; public int age; public void getInfo() System.out.println(name); System.out.println(age); public void eat() System.out.println(Its delicious!); ,導(dǎo)入包,1、使用import語句 import 包名.標(biāo)識(shí)符; import 包名.*;,2、直接使用包 java.applet.Applet ap = new java.applet.Applet();,導(dǎo)入包舉例,packa
33、ge yourpackage; import mypackage.Person; class Student extends Person String school; public void study() System.out.println(Studding); public static void main(String args) Student s=new Student(); =John; s.age=16; s.school=清華大學(xué); s.getInfo(); s.study(); ,訪問修飾符,訪問修飾符,訪問修飾符,訪問修飾符,訪問修飾符的使用,【實(shí)戰(zhàn)】通過對(duì)
34、任務(wù)六的Person類和Student類設(shè)置包和訪問修飾符,掌握訪問修飾符的使用,包裝類,Java語言中專門提供了包裝類,將基本類型包裝成類。與基本類型對(duì)應(yīng)的包裝類有Byte 、Short 、Integer 、Long 、Character 、Float 、Double 、Boolean 和Void ,可以完成一些數(shù)據(jù)的轉(zhuǎn)換。,通過通過查看JDK幫助文檔自主學(xué)習(xí),任務(wù)七,從一個(gè)代表帶有路徑的文件名中分離出文件名和路徑,類String字符串定義,可以用字符串常量直接初始化一個(gè)String對(duì)象 String s = Hello World ; 通過構(gòu)造方法,String構(gòu)造方法的使用舉例,Stri
35、ng s,s1,s2,s3,s4,s5,s6,s7; byte byteArray =(byte)J,(byte)a,(byte)v,(byte)a; Char charArray = 程,序,設(shè),計(jì); StringBuffer sb = new StringBuffer(歡迎); s = new String(Hello!); s1 = new String(); s2 = new String(s); s3 = new String(sb); s4 = new String(charArray,2,2); s5 = new String(byteArray,0); s6 = new Str
36、ing(charArray); s7 = new String(byteArray,0,0,1);,字符串,長(zhǎng)度,由 length() 方法確定,語法,public int length();,返回字符串中的字符數(shù),String的常用方法字符串長(zhǎng)度,String name = John Smith; System.out.println (name.length();,String的常用方法字符串比較,字符串 1,字符串 2,字符串 1,字符串 2,由 equals() 方法確定,檢查組成字符串內(nèi)容的字符,同一個(gè)對(duì)象,用 = 運(yùn)算符檢查,檢查字符串是否指向同一個(gè)或不同的對(duì)象,public cl
37、ass StringCompare public static void main(String args) String s1=abc; String s2=abc; String t1=new String(abc); String t2=new String(abc); System.out.println(s1=s2); System.out.println(s1.equals(s2); System.out.println(t1=t2); System.out.println(t1.equals(t2); ,字符串比較舉例,程序運(yùn)行結(jié)果如下: true true false true
38、,思考:為什么?,Java在編譯時(shí)對(duì)字符串常量的存儲(chǔ)有一個(gè)優(yōu)化處理策略,相同字符串常量只存儲(chǔ)一份,字符串比較方法,搜索字符串,搜索字符串舉例,public class SearchString public static void main(String args) String name = JohnS; System.out.println(“Email ID 是: + name); System.out.println(“ 的索引是: + name.indexOf(); System.out.println(“. 的索引是: + name.indexOf(.); if (name.ind
39、exOf(.) name.indexOf() System.out.println(“該電子郵件地址有效); else System.out.println(“該電子郵件地址無效); ,提取字符串方法,提取字符串,. char ch; ch = orange.charAt(3); .,它將從 index(3) 中提取單個(gè)字符串 “n”并將其存儲(chǔ)在變量 ch 中,提取字符串舉例,public class StringMethods public static void main(String args) String s = Java is a + platform independent la
40、nguage; String s1 = Hello world ; String s2 = Hello; System.out.println(s); System.out.println(index of t = + s.indexOf(t); System.out.println(last index of t = +s.lastIndexOf(t); System.out.println(index of(t, 10) = +s.indexOf(t, 10); System.out.println(s1.substring(3, 8); System.out.println(s2.con
41、cat(World); System.out.println(s2.replace(l, w); System.out.println(s1.trim(); ,任務(wù)七實(shí)現(xiàn),public class GetFilename private String fullPath; private final char pathSepatator=; public GetFilename(String fname) fullPath=fname; public String getName() int pos=fullPath.lastIndexOf(pathSepatator); if(pos=-1)
42、return fullPath; else return fullPath.substring(pos+1); ,public String getPath() int pos=fullPath.lastIndexOf(pathSepatator); if(pos=-1) return fullPath; else return fullPath.substring(0,pos); public static void main(String args) GetFilename fn=new GetFilename(F:avamyexamplea.java); System.out.print
43、ln(fn.getName(); System.out.println(fn.getPath(); ,更改字符大小寫方法,Hello,使用 toUpperCase( ) 方法,HELLO,HELLO,使用 toLowerCase( ) 方法,hello,語法,public String toUpperCase();,語法,Public String toLowerCase();,更改字符大小寫方法舉例,public class StringTest public static void main(String args) String name = new String(George); Sy
44、stem.out.println(“姓名是 + name); int length = name.length(); System.out.println(“姓名的長(zhǎng)度為 ” + length + “ 個(gè)字符); System.out.println(“姓名用大寫形式表示為: ); String nameUppercase = name.toUpperCase(); System.out.println(nameUppercase); ,任務(wù)八,判斷一個(gè)字符串是否為回文,即將一個(gè)字符串進(jìn)行反轉(zhuǎn),得到的字符串與源串相同:例如原始字符串為“aba”, 逆轉(zhuǎn)后的字符串也為“aba”。,StringB
45、uffer 類,StringBuffer 用于表示可以修改的字符串 使用連接運(yùn)算符 (+) 的字符串會(huì)自動(dòng)創(chuàng)建字符串緩沖對(duì)象,StringBuffer 類的方法,不變性,String類,創(chuàng)建后,直接修改,不變性的概念,解決方法,StringBuffer 類,String 的對(duì)等類,表示可增加和可編 寫字符的可變序列,將字符插入到字符串中間 或附加到字符串末尾,不變性舉例,public class StringBuf public static void main(String args) StringBuffer buf = new StringBuffer(Java); buf.append
46、(“ Guide Ver1/”); buf.append(3); int index = 5; buf.insert(index, Student ); index = 23; buf.setCharAt(index, .); int start = 24; int end = 25; buf.replace(start, end, 4); String s = buf.toString(); /轉(zhuǎn)換為字符串 System.out.println(s); ,任務(wù)八實(shí)現(xiàn),public class StringReverse public static void main(String args)
47、 String s=I am a Chinese; int len=s.length(); StringBuffer dest=new StringBuffer(len); for(int i=len-1;i=0;i-) dest.append(s.charAt(i); System.out.println(dest.toString(); ,main方法的參數(shù),main方法的形參為String類的數(shù)組參數(shù)args,args可以用來接收J(rèn)ava命令行傳送給Java應(yīng)用程序的數(shù)據(jù)。例如: java HelloEcho How are you? 123,若要將包含多個(gè)空格的單詞作為一個(gè)字符串,可用
48、引號(hào)括起來。例如: java HelloEcho How are you? 123,main方法的參數(shù)舉例,class CommandLine public static void main(String args) for(int i=0; iargs.length; i+) System.out.println(args + i + : + argsi); ,顯示所有命令行參數(shù),Java異常處理,任務(wù)九,public class ExceptionRaised public ExceptionRaised() public int calculate( int operand1, int
49、operand2) int result = operand1 / operand2; return result; public static void main(String args) ExceptionRaised obj = new ExceptionRaised(); int result = obj.calculate(9, 0); System.out.println(result); ,異常情況,異 常,程序突然終止并將控制交給操作系統(tǒng),在運(yùn)行時(shí)發(fā)生的錯(cuò)誤,什么是異常,在程序運(yùn)行過程中發(fā)生的、會(huì)打斷程序正常執(zhí)行的事件稱為異常(Exception),也稱為例外。,例如,零用作除
50、數(shù)(產(chǎn)生算術(shù)異常ArithmeticException)、 在指定的磁盤上沒有要打開的文件(產(chǎn)生文件未找到異常 FileNotFoundException) 數(shù)組下標(biāo)越界(產(chǎn)生數(shù)組下標(biāo)越界異常 ArrayIndexOutOfBoundsException)等,常見 異常,異常類的層次,為內(nèi)部錯(cuò)誤,因此在正常情況下不期望用戶的程序捕獲它們,Java虛擬機(jī)在運(yùn)行時(shí)生成的例 外,由系統(tǒng)檢測(cè), 用戶可不做處 理,系統(tǒng)將它們交給缺省的異常 處理程序,程序中可預(yù)知的問題,可能會(huì)帶來意想不到的結(jié)果,Java程序必須捕獲或聲明所有的非運(yùn)行時(shí)異常,異常處理機(jī)制,捕獲異常,聲明拋出異常,throws,Try-ca
51、tch,消極的處理方式,積極的處理方式,捕獲異常,捕獲異常是通過try-catch-finally語句實(shí)現(xiàn)的。,try,finally,catch,try 和 catch 塊,try,catch,異常,單 元,任務(wù)九的解決方案一,public class ExceptionRaised public ExceptionRaised() public int calculate( int operand1, int operand2) int result=0; try result = operand1 / operand2; catch (Exception e) System.err.pr
52、intln(發(fā)生異常: + e.toString(); e.printStackTrace(); return result; ,指明catch可以捕獲并處理的異常類型,調(diào)用異常類的方法,異常類的常用方法,實(shí)戰(zhàn),閱讀下列程序代碼,分析程序可能產(chǎn)生的異常情況,捕獲并處理異常。,public class ExceptionDemo int array=1,2,3,4,5,6,7,8,9,0; public void exceptest(int j) for (int i=0;ij;i+) System.out.println(array+i+=+arrayi); public static voi
53、d main(String args) ExceptionDemo ex=new ExceptionDemo(); ex.exceptest(11); ,多重 catch 塊2-1,一段代碼可能會(huì)生成多個(gè)異常 當(dāng)引發(fā)異常時(shí),按順序查看每個(gè) catch 語句,并執(zhí)行第一個(gè)類型與異常類型匹配的語句 執(zhí)行其中的一條 catch 語句之后,其他的 catch 語句將被忽略,try . catch(ArrayIndexOutOfBoundsException e) catch(Exception e) ,多重 catch 塊2-2,try . catch(Exception e) catch(Array
54、IndexOutOfBoundsException e) ,使用多重 catch 語句時(shí),異常子類一定要位于異常父類之前。,多重 catch 塊示例,class ExceptionCode public void calculate() try int num = 0; int num1 = 42 / num; int c = 1,2,3,4 ; c4 = 99; catch (Exception e) System.out.println(父類異常 catch 子句); catch (ArithmeticException ae) / 錯(cuò)誤 不能到達(dá)的代碼 System.out.printl
55、n(這個(gè)子類的父類是exception 類,且不能到達(dá)); ,class UnreachableCode public static void main(String args) ExceptionCode obj = new ExceptionCode(); obj.calculate(); ,finally 塊,try、catch 和 finally 塊的執(zhí)行流程,finally子句可以保證,無論try塊中是否拋出異常,finally塊中的語句都會(huì)被執(zhí)行到,這樣可以對(duì)程序的狀態(tài)作統(tǒng)一的管理。 finally語句對(duì)增強(qiáng)程序的魯棒性非常重要。,try 塊,finally 塊,catch 塊,無
56、異常,異常,異常處理塊的一般形式,try / 要監(jiān)控錯(cuò)誤的代碼塊 catch (Exception e) / Exception e 的異常處理程序 finally / 在 try 結(jié)束前要執(zhí)行的代碼塊 ,finally塊示例,public class SystemException public static void main(String args) int a = 68; int b = 0; try System.out.println(a / b); / 0用作了除數(shù) catch(ArithmeticException e) System.out.println (“0用作了除數(shù)”); return; fi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 泰州環(huán)保球場(chǎng)施工方案
- 繩索操作考試題及答案
- 陜師大歷史復(fù)試題及答案
- 2025年cdfi醫(yī)師上崗考試試題及答案
- 5年級(jí)上冊(cè)手抄報(bào)全部總結(jié)
- 登鸛雀樓吟誦符號(hào)
- arp報(bào)文發(fā)送的描述
- 【無印良品】大眾推廣策劃案 - 副本 - 副本
- 2025年臨汾職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫完美版
- 2025年關(guān)于黨史知識(shí)競(jìng)賽培訓(xùn)題庫及答案
- 2025河南中煙漯河卷煙廠招聘7人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 糧食儲(chǔ)運(yùn)與質(zhì)量安全基礎(chǔ)知識(shí)單選題100道及答案
- 第一篇 專題一 第2講 勻變速直線運(yùn)動(dòng) 牛頓運(yùn)動(dòng)定律
- 廣東廣州歷年中考語文現(xiàn)代文閱讀之非連續(xù)性文本閱讀7篇(截至2024年)
- 做自己的英雄主題班會(huì)
- 《蘋果SWOT分析》課件
- 2024至2030年中國ICU/CCU病房數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年安徽淮海實(shí)業(yè)集團(tuán)招聘筆試參考題庫含答案解析
- 頸椎病招商課件
- 中醫(yī)治療疼痛性疾病
- 電影《白日夢(mèng)想家》課件
評(píng)論
0/150
提交評(píng)論