課件04 java語言基礎(chǔ)_第1頁
課件04 java語言基礎(chǔ)_第2頁
課件04 java語言基礎(chǔ)_第3頁
課件04 java語言基礎(chǔ)_第4頁
課件04 java語言基礎(chǔ)_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第2章Java語言基礎(chǔ)2.1Java程序結(jié)構(gòu)2.2基本語法2.3程序控制語句2.4數(shù)組2.5面向?qū)ο蠹夹g(shù)2.6包2.1Java程序結(jié)構(gòu)Java語言特點(diǎn)Java程序示例Java工作原理Java語言特點(diǎn)簡單和健壯:不用進(jìn)行指針運(yùn)算和存儲器管理,簡化設(shè)計減少出錯.面向?qū)ο螅壕哂辛己玫拇a重用性.分布式:Java擁有一個網(wǎng)絡(luò)協(xié)議對象庫(TCP/IP,HTTP,FTP等),可以象訪問當(dāng)?shù)匚募粯釉L問Internet上的對象.解釋性和高性能:源程序生成字節(jié)碼.平臺無關(guān):JVM實(shí)現(xiàn)跨平臺和可移植-WriteOnce,RunAnywhere.多線程:允許一個應(yīng)用程序同時做多個任務(wù).安全:拒絕執(zhí)行非法的內(nèi)存訪問(如自動檢查數(shù)組邊界)或超越權(quán)限的訪問等。Java程序示例packageexample;//創(chuàng)建包(程序存放目錄)publicclassHello{ publicstaticvoidmain(String[]args){ System.out.println("HelloJava!"); }}源程序名為:Hello.java說明Java程序都是以類class來組織,一個文件中可以有多個類.一個類能被解釋器直接啟動運(yùn)行,這個類就必須有main函數(shù),一個程序只能有一個main函數(shù).類名前可以加public關(guān)鍵字,也可以不加,加了以后保存的文件名必須要跟這個類的名字相同,否則編譯會出錯.如果源文件中沒有public類,則源文件用什么名字都可以.一個源文件中只能含有一個標(biāo)記為public的類.一個文件中可以有多個類定義,當(dāng)編譯完成這樣的源文件后會生成多個跟這些類名相對應(yīng)的字節(jié)流文件(.class)。

含多個類的Java程序publicclassHello{publicstaticvoidmain(Stringargs[]){testt=newtest();t.f1();

}}classtest{ voidf1(){System.out.println("f1called");}}程序?qū)⑸蓛蓚€class文件:Hello.classtest.classJava工作原理【Return】JVM2.2基本語法數(shù)據(jù)類型常量與變量運(yùn)算符和表達(dá)式【Return】數(shù)據(jù)類型

名稱關(guān)鍵字占用字節(jié)數(shù)數(shù)據(jù)類型基本類型整數(shù)類型字節(jié)型byte1

短整型short2整型int4長整型long8浮點(diǎn)類型浮點(diǎn)型float4雙精度型double8字符類型char2布爾類型boolean1復(fù)

型字符串String

數(shù)組

類class

接口interface

【Return】常量整型常量(4字節(jié))17(十進(jìn)制),017(八進(jìn)制),0x17(十六進(jìn)制),17L(長整型)浮點(diǎn)型常量2.3,-.23,2.3e3,.2e-4,2.3f,2.3d常量布爾常量:true、false注意:int到boolean不能自動轉(zhuǎn)換: inti=1;if(i)//Error if(i!=0)//Correct常量字符常量’A’,’\n’,’\101’,’\u0041’(Unicode字符)字符串常量"HelloJava\n"連接操作符“+”:"Hello"+"Java"+"\n"常量符號常量自定義:finaldoublepi=3.14159;系統(tǒng)提供的符號常量:Integer.MIN_VALUEInteger.MAX_VALUE…變量必須先聲明后使用例如:

inti,j=9; charch='A'; booleanflag=false; floata=3.4f;(‘f’不能丟:floata=3.4;×)doubleb=3.4;√變量字符串變量(實(shí)際上是String類的一個實(shí)例)Strings1="Hello",s2="Java",s3; s3=s1+s2;//s3="HelloJava"inti=10;Stringstr="i="+i;//str的值為"i=10"說明:如果字符串與其他類型變量進(jìn)行“+”運(yùn)算,系統(tǒng)將自動將其他類型轉(zhuǎn)換為字符串。一個問題如何接收鍵盤輸入的數(shù)據(jù)?如何從鍵盤接收數(shù)據(jù)(1)packageexample;importjava.util.Scanner;publicclassHello{publicstaticvoidmain(Stringargs[]){Scannerin=newScanner(System.in);inti=in.nextInt();//輸入int類型數(shù)據(jù)

floatf=in.nextFloat();//輸入float類型數(shù)據(jù)doubled=in.nextDouble();//輸入double類型數(shù)據(jù)

System.out.println("你輸入的數(shù)是:"+i);System.out.println("你輸入的數(shù)是:"+f);

System.out.println("你輸入的數(shù)是:"+d);}}對數(shù)據(jù)輸入很嚴(yán)格,不能出錯,否則…如何從鍵盤接收數(shù)據(jù)(2)importjava.io.*;publicclassHello{publicstaticvoidmain(Stringargs[]){

try{

BufferedReadercin=newBufferedReader( newInputStreamReader(System.in));Strings=cin.readLine();

inta=Integer.parseInt(s);

System.out.print(a);

}catch(IOExceptione){}}}Java數(shù)據(jù)轉(zhuǎn)換字符串→數(shù)值byteb=Byte.parseByte("123");shorts=Short.parseShort("123");inti=Integer.parseInt("123");longl=Long.parseLong("123");floatf=Float.parseFloat("1.23");doubled=Double.parseDouble("1.23");數(shù)值→字符串Strings=String.valueOf(value); 其中value為任意一種數(shù)字類型。String類常用方法方法說明intlength()

返回字符串的長度booleanequals(Objectobj)

比較字符串是否相等booleanequalsIgnoreCase(anotherString)比較字符串是否相等(不區(qū)分大小寫)intcompareTo(Stringstr)

比較字符串,返回兩者之間的差值Stringconcat(Stringstr)

連接字符串Stringsubstring(intbIndex)

返回字符串從bIndex開始的子串Stringsubstring(intbIndex,inteIndex)

返回從bIndex開始至eIndex的子串charcharAt(intindex)

返回index指定位置的字符Stringtrim()

去掉字符串兩端的空格注:位置值從0開始注:不要使用==調(diào)用形式:字符串變量.方法名√String類常用方法方法說明intindexOf(Stringstr)

返回str在字符串中第一次出現(xiàn)的位置intlastIndexOf(Stringstr)返回str在字符串中最后一次出現(xiàn)位置Stringreplace(charoldc,charnewc)

以newc字符替換串中所有oldc字符StringtoLowerCase()將字符串轉(zhuǎn)換為小寫StringtoUpperCase()將字符串轉(zhuǎn)換為大寫booleanisEmpty()判斷字符串是否為空程序練習(xí)將一個字符串逆序輸出。去掉字符串末尾的空格。將字符串中的大寫字母變小寫,小寫字母變大寫。參考【Return】去掉字符串末尾的空格:Stringstr="asd";Stringntr=("A"+str).trim().substring(1);System.out.println("str=\""+str+"\"");System.out.println("ntr=\""+ntr+"\"");運(yùn)算符和表達(dá)式運(yùn)算符描述優(yōu)先級.[]()

域運(yùn)算,數(shù)組下標(biāo),括號++---!~

單目運(yùn)算new(type)

分配空間,強(qiáng)制類型轉(zhuǎn)換*/%

算術(shù)乘、除、求余運(yùn)算+-

算術(shù)加減運(yùn)算<<>>>>>

位運(yùn)算<<=>>=

小于,小于等于,大于,大于等于==!=

相等,不等&^|

按位與,按位異或,按位或&&

||邏輯與,邏輯或?:

條件運(yùn)算符=*=/=%=+=-=<<=>>=>>>=&=^=|=

賦值運(yùn)算Java

僅僅在for()循環(huán)里支持逗號運(yùn)算符,在其他的情況下是不支持的。算術(shù)運(yùn)算注意兩個整數(shù)類型的數(shù)據(jù)做除法時,結(jié)果只保留整數(shù)部分.如:2/3=0.

自增與自減運(yùn)算符只適用于變量.如10++;×%運(yùn)算不僅能用于整型,也能用于浮點(diǎn)類型如9%2=19.5%2=1.5√位運(yùn)算注意<<:每左移一位,右邊補(bǔ)0,最高位移出丟棄bytea=32;//a:00100000 inti=a<<2;//a<<2:10000000i:0000000010000000 bytej=(byte)(a<<2);結(jié)果多少?>>:每右移一位,最高位由原來的最高位補(bǔ)充(正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1)>>>:0填充右移(無符號右移)inta=-1;a>>>=24;則a=?關(guān)系運(yùn)算注意關(guān)系表達(dá)式的運(yùn)算結(jié)果是邏輯值:true、false.inta=1,m=4;booleanc=a<b; if(c)…//ok或if(!c)…if(a)…//必須改成if(a!=0)if(!m)…//必須改成if(m==0)布爾邏輯運(yùn)算注意只能是布爾量(true,false)參加運(yùn)算,結(jié)果也是布爾型布爾量也可以:&、|、!、^(相當(dāng)于單個的位運(yùn)算)&&、||

具有短路效應(yīng)例如:(m=a>b)&&(n=c>d)

如果m=false,則n=c>d不計算示例求一個三位數(shù)的數(shù)字之和。如123的數(shù)字和為6。【Return】2.3程序控制語句Java控制語句與C/C++的幾乎完全相同。break和continue語句有差別。break語句從switch語句中退出;強(qiáng)行退出一個循環(huán);當(dāng)作goto語句來用,用法:break標(biāo)簽;標(biāo)簽可標(biāo)識控制需要轉(zhuǎn)換到的任何有效語句(塊)

用法標(biāo)簽名:語句示例publicclasstest{ publicstaticvoidmain(Stringargs[]) { for(inti=0;i<3;i++) {System.out.print("Pass"+i+":"); for(intj=0;j<10;j++) {if(j==5)break;System.out.print(j+"");

} System.out.println();

}}}運(yùn)行結(jié)果:Pass0:01234Pass1:01234Pass2:01234示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {

for(inti=0;i<3;i++) {System.out.print("Pass"+i+":"); for(intj=0;j<10;j++) {if(j==5)break

System.out.print(j+"");

} System.out.println();

}}}運(yùn)行結(jié)果:Pass0:01234outer;outer:示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {booleant=true;

first:{

second:{

third:{System.out.println("Startthethirdblock");if(t)breaksecond;System.out.println("Endthethirdblock");}}System.out.println("Endthesecondblock");}System.out.println("Endthefirstblock");}}運(yùn)行結(jié)果:StartthethirdblockEndthesecondblockEndthefirstblockcontinue語句結(jié)束本次循環(huán),跳至下一次循環(huán);continue標(biāo)簽;(繼續(xù)標(biāo)簽處循環(huán))示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {for(inti=0;i<10;i++) {System.out.print(i+""); if(i%2==0)continue; System.out.println();}}}運(yùn)行結(jié)果:0123456789示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {outer:for(inti=1;i<10;i++){for(intj=1;j<10;j++){if(j>i){System.out.println();continueouter;}System.out.print(""+(i*j));}System.out.println();} }}運(yùn)行結(jié)果:1

24

369

481216

510152025

61218243036

7142128354249

816243240485664

91827364554637281編程練習(xí)輸入10個整數(shù),輸出最大值和最小值。判斷輸入的字符串是否為回文,如abcba。遞歸函數(shù)求2+4+6+…+100之和。輸入一個字符串,分別統(tǒng)計大寫字母、小寫字母、數(shù)字、空格以及其他字符個數(shù)。有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?【Return】參考inti,n=10,max=0,min=0,temp=0;try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));max=min=Integer.parseInt(br.readLine());}catch(IOExceptione){};for(i=2;i<=n;i++){try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));temp=Integer.parseInt(br.readLine());if(temp>max)max=temp;if(temp<min)min=temp;}catch(IOExceptione){};}System.out.println("max="+max+"\nmin="+min);參考Stringstr=“abcba";booleanflag=true;charch1,ch2;for(inti=0;i<str.length()/2;i++){ch1=str.charAt(i);ch2=str.charAt(str.length()-i-1);if(char1!=char2){flag=false;break;}}if(flag)System.out.println("是回文");elseSystem.out.println("不是回文");2.4數(shù)組創(chuàng)建數(shù)組inta[];//數(shù)組聲明

a=new

int[5];//用new語句動態(tài)分配存儲空間

或直接用:inta[]=newint[5];inta[5];×另一種聲明方式:int[]a;//中括號放在類型后

int[]s1,

s2; //s1,s2都是整型數(shù)組ints1[],s2; //s1是整型數(shù)組,s2是整型變量數(shù)組初始化inta[]=newint[5];a[0]=1;a[2]=2;…;a[4]=5;

或:inta[]={1,2,3,4,5};

或:inta[]=newint[]{1,2,3,4,5};字符串?dāng)?shù)組:String[]names={“Tom”,“Jerry”,“Simon”};類對象數(shù)組: MyClass[]mc= {newMyClass(…),newMyClass(…)};注意特殊點(diǎn)數(shù)組大小可變inta[]=newint[5]; a=newint[10];

第一個數(shù)組空間被丟棄,除非對它的其它引用保留在其它地方。數(shù)組邊界Java程序運(yùn)行時系統(tǒng)會檢查數(shù)組邊界.也可使用length屬性:inta[]=newint[10];for(inti=0;i<a.length;i++)System.out.println(a[i]);二維數(shù)組二維數(shù)組定義inta

=newint

3

3

;或int

a=newint

3

3

;等價于: inta[][]=newint

3

;//先第一維指定 a[0]=newint[3];//再第二維分配 a[1]=newint[3]; a[2]=newint[3];在Java中,多維數(shù)組實(shí)質(zhì)上是數(shù)組的數(shù)組。二維數(shù)組初始化示例inta

=newint

3

3

; a[0][0]=1;a[0][1]=2;…a[2][2]=9;inta

={{1,2,3},{4,5,6},{7,8,9}};//矩形inta

={{1},{4,5},{7,8,9}};//三角

則a[1][1]=5,a[1][2]出錯注意特殊點(diǎn)第二維大小可不相等(非矩形數(shù)組)inta[][]=newint

3

;//第一維指定 a[0]=newint[1];//第二維不相等 a[1]=newint[2]; a[2]=newint[3];編程練習(xí)計算Fibonacci數(shù)列前30項(xiàng)。數(shù)組存儲10個整數(shù),統(tǒng)計正數(shù)和非正數(shù)個數(shù)。10個元素的整型數(shù)組,要求:排序:選擇排序查找數(shù)據(jù):折半查找插入數(shù)據(jù):不存在則插入,存在則告知所有位置值.打印1到n2(n為奇數(shù))的自然數(shù)構(gòu)成的魔方陣,使得每一行、每一列和對角線之和均相等。【Return】如n=3時816357492魔方陣提示程序參考importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;public

classMagicSquare{

public

static

int

mat[][];

public

static

voidmain(String[]args){System.out.print("請輸入一個奇數(shù):");BufferedReaderin=newBufferedReader(new

InputStreamReader(System.in));

intr=0;

try{Stringst=in.readLine();Integeri=newInteger(st);r=Value();}

catch(IOExceptione){e.printStackTrace();}

mat=new

int[r][r];

mat=oddnumber(r);

print(r);}程序參考public

static

int[][]oddnumber(intr){

final

intSIZE=r;inti=0,j,k,n;n=SIZE;j=n/2;

for(k=1;k<=n*n;k++){

mat[i][j]=k;

if(k%n==0)i=(i+1)%n;

else{i=(i-1+n)%n;j=(j+1)%n;}}

return

mat;}public

static

voidprint(intr){

for(inti=0;i<r;i++){

for(intj=0;j<r;j++)System.out.print(mat[i][j]+"\t");System.out.println();}}}2.5面向?qū)ο蠹夹g(shù)類與對象構(gòu)造函數(shù)重載繼承接口【Return】類與對象對象的概念對象是指一組屬性以及這組屬性上專用操作的封裝體。操作將使屬性發(fā)生變化:小章.改年齡(18)小章.跳槽(好萊塢)你的女朋友(對象)屬性姓名(小章)年齡(28歲)工作單位…操作改年齡()跳槽()…封裝類與對象類的概念類是對具有相同屬性和相同操作的一組相似對象的定義.類是對象的抽象,對象是類的實(shí)例。類的基本定義class類名{

類型屬性變量1; …

類型屬性變量n;

類型方法1([參數(shù)表]){…} …

類型方法n([參數(shù)表]){…}}屬性方法示例classGF{StringXM;intAGE;StringGZDW;voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}voidsetAge(inta){AGE=a;}intgetAge(){returnAGE;}voidsetGZDW(Stringdw){GZDW=dw;}StringgetGZDW(){returnGZDW;}publicstaticvoidmain(Stringargs[]){GFgf1=newGF();//用默認(rèn)構(gòu)造函數(shù)創(chuàng)建對象gf1.setXM("小章");

gf1.setAge(30);

gf1.setGZDW(“好萊塢”);

}}屬性(實(shí)例變量/成員變量)方法(成員函數(shù))如何在另一個包的另一個類中實(shí)現(xiàn)main內(nèi)容訪問控制一個類能夠訪問自己的數(shù)據(jù)成員和成員方法。但是,其他類是否能訪問這個類的數(shù)據(jù)成員或成員方法?--訪問控制問題。Java訪問控制符有4種:publicprivateprotecteddefault類的訪問控制類的訪問控制有2種:public和default.public類:可以在任何一個包中的任何一個類中被訪問和繼承.default類:只能在同一個包中被其它類所訪問和繼承。注意一個類作為整體對程序的其它部分可見,并不能代表類內(nèi)的所有的成員變量和成員方法也對程序的其它部分可見.類的成員變量和成員方法能否被其它類所訪問,還要看這些它們自己的訪問控制符。類成員訪問控制【Return】this關(guān)鍵字(1)指代當(dāng)前對象本身

booleaninst(){if(thisinstanceofGF)returntrue;elsereturnfalse; }

執(zhí)行下面語句: GFgf1=newGF(); System.out.println(gf1.inst());//輸出為:trueinstanceof:判斷一個對象是否為指定類的實(shí)例.this關(guān)鍵字(2)訪問本類的成員變量和方法

GF(Stringxm,inta,Stringdw){XM=xm;AGE=a;GZDW=dw;}this.XM=xm;this.AGE=a;this.GZDW=dw;構(gòu)造函數(shù)(構(gòu)造器、構(gòu)造方法)作用:構(gòu)造函數(shù)是在創(chuàng)建對象時(new語句)自動調(diào)用的函數(shù),其作用主要是用于初始化實(shí)例變量.特點(diǎn):構(gòu)造函數(shù)名與類同名,構(gòu)造函數(shù)不能指定類型(包括void),也無任何返回值.一個類可以有多個不同的構(gòu)造函數(shù).如果沒有定義構(gòu)造函數(shù),系統(tǒng)將會自動為類添加一個默認(rèn)的構(gòu)造函數(shù)(不帶參數(shù),執(zhí)行空操作).一旦自定義了構(gòu)造函數(shù),默認(rèn)的構(gòu)造函數(shù)將關(guān)閉,系統(tǒng)轉(zhuǎn)向調(diào)用相應(yīng)的構(gòu)造函數(shù)創(chuàng)建對象。默認(rèn)構(gòu)造函數(shù)publicclassGF{StringXM;intAGE;StringGZDW;

GF(){}//默認(rèn)構(gòu)造函數(shù),不帶參數(shù),執(zhí)行空操作 voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}…publicstaticvoidmain(Stringargs[]){GFgf1=newGF();//用默認(rèn)構(gòu)造函數(shù)創(chuàng)建對象gf1.setXM(“小章”);

gf1.setAge(30);

gf1.setGZDW(“好萊塢”);

…}}publicclassGF{StringXM;intAGE;StringGZDW;

GF(Stringxm,inta,Stringdw){XM=xm;AGE=a;GZDW=dw;}voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}voidsetAge(inta){AGE=a;}intgetAge(){returnAGE;}voidsetGZDW(Stringdw){GZDW=dw;}StringgetGZDW(){returnGZDW;}publicstaticvoidmain(Stringargs[]){GFgf1=newGF(“小章”,30,“好萊塢”);//用自定義構(gòu)造函數(shù)創(chuàng)建對象gf1.setGZDW(“北影");…}}系統(tǒng)默認(rèn)構(gòu)造函數(shù)自動關(guān)閉自定義構(gòu)造函數(shù)publicclassGF{StringXM;intAGE;StringGZDW;GF(){}//默認(rèn)構(gòu)造函數(shù)

GF(Stringxm,inta,Stringdw){XM=xm;AGE=a;GZDW=dw;}voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}voidsetAge(inta){AGE=a;}intgetAge(){returnAGE;}voidsetGZDW(Stringdw){GZDW=dw;}StringgetGZDW(){returnGZDW;}publicstaticvoidmain(Stringargs[]){GFgf1=newGF(“小章”,30,“好萊塢”);

GFgf2=newGF();…}}【Return】重載同一個類中的2個或以上的方法(函數(shù))可以有同一個名字,只要它們的參數(shù)聲明不同即可.(如類型不同、個數(shù)不同)系統(tǒng)能夠根據(jù)不同情況自動調(diào)用一個合適的方法函數(shù)。同一方法名實(shí)現(xiàn)1實(shí)現(xiàn)2…實(shí)現(xiàn)n單入口多實(shí)現(xiàn)示例classoverload{voidtest(){System.out.println("Noparameters");}voidtest(inta){System.out.println("a:"+a);}

voidtest(inta,intb)

{System.out.println("aandb:"+a+""+b);}doubletest(doublea){System.out.println("doublea:"+a);returna*a;}

publicstaticvoidmain(Stringargs[]){overloado=newoverload();o.test();o.test(2);o.test(2,3);o.test(2.0);}}注意不能以返回類型的不同來進(jìn)行重載。哪些可以重載:①intfun(int)②intfun(int,double)③doublefun(int,double)④intfun(double,int)【Return】繼承繼承是一種由已有類創(chuàng)建新類的機(jī)制.繼承是類間的基本關(guān)系,是子類共享父類(Java又稱為超類,C++稱為基類)中定義的數(shù)據(jù)和方法的機(jī)制.子類除了繼承其父類(或祖先類)的屬性和操作外,還可以定義自己特有的屬性和操作,也可以對父類(或祖先類)中的操作進(jìn)行重新定義。圖示classA{

inta;voidf1();}classBextends

A{

intb;voidf2();}B類的成員intavoidf1()intbvoidf2()繼承的自己特有的示例classA

{inta;voidf1(){a=100;System.out.println("a="+a);}}classBextendsA

{intb;voidf2(){b=200;System.out.println("b="+b);}}publicclasshello{publicstaticvoidmain(Stringargs[]){Bb1=newB();

b1.f1();b1.f2();}}如何在另一個包的另一個類中實(shí)現(xiàn)上述繼承注意Java只支持單繼承(一個類只能有一個父類),不支持多繼承。(C++支持多繼承)Java使用接口(interface)來克服單多繼承缺陷。雇員技術(shù)人員管理人員銷售人員銷售經(jīng)理多重繼承:一個子類可以有多個直接父類,該子類可以全部或部分繼承所有直接父類的數(shù)據(jù)成員及成員方法。編程練習(xí)1編寫一個類,該類封裝了一元二次方程的3個系數(shù)的和計算實(shí)根的方法。publicclasstest{publicstaticvoidmain(String[]args){

equatione1=newequation(1,2,1);

if(e1.getValue()) {System.out.print(e1.d[0]); System.out.print(";"); System.out.println(e1.d[1]); }else{System.out.print("norealroot");}}}程序參考classequation{privatefloata;privatefloatb;privatefloatc;

publicdouble[]d;

publicequation(floata,floatb,floatc){this.a=a;this.b=b;this.c=c;

this.d=newdouble[2];}

booleangetValue(){floattemp=b*b-4*a*c;if(temp<0)returnfalse;else{this.d[0]=(-b+Math.sqrt(temp))/(2*a);this.d[1]=(-b-Math.sqrt(temp))/(2*a);returntrue;}}}編程練習(xí)2定義一個FixedStack類,實(shí)現(xiàn)一個固定長度的整數(shù)堆棧。數(shù)據(jù)成員:intstck[]; intpos;方法:voidpush(intitem)和intpop()publicclasstestStack{publicstaticvoidmain(String[]args){intn=5;

FixedStackmystack1=newFixedStack(n);for(inti=0;i<n;i++)mystack1.push(i);System.out.print("Stackinmystack1:");for(inti=0;i<n;i++)System.out.print(mystack1.pop()+"");}}程序參考classFixedStack{ privateintstck[]; privateintpos;

publicFixedStack(intsize){stck=newint[size];pos=-1;}

publicintpop(){if(pos<0){ System.out.print("Stackisunderflow."); return0;} else returnstck[pos--];}

publicvoidpush(intitem){if(pos==stck.length-1) System.out.print("Stackisfull."); else

stck[++pos]=item;}}【Return】接口接口(interface)只是說明類應(yīng)該做什么,但不指定應(yīng)該如何去做.(類比USB接口)接口只有方法名沒有方法體,這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能).Java接口不能有構(gòu)造器(構(gòu)造函數(shù)).Java可使用接口來實(shí)現(xiàn)多繼承。示例學(xué)校接口學(xué)生類教師類測試類(主程序)教師對象學(xué)生對象setschoolname(String);setclassname(String);setname(String);getschoolname();getclassname();getname();接口方法實(shí)現(xiàn)方法實(shí)現(xiàn)接口實(shí)現(xiàn)接口接口的聲明interfaceschool{voidsetschoolname(Stringschoolname);voidsetclassname(Stringschoolclassname);voidsetname(Stringname);Stringgetschoolname();Stringgetclassname();Stringgetname();}接口不一定要有方法,也可以全部是常量,甚至是沒有任何方法和屬性。接口的實(shí)現(xiàn)-student類classstudent

implementsschool{privateStringschoolname;privateStringclassname;

privateStringstudentname;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}

publicvoidsetname(Stringstudentname){this.studentname=studentname;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}

publicStringgetname(){returnstudentname;}

publicStringtostring()//自己的方法{Stringinfor="學(xué)校名稱:"+schoolname+""+"班級名稱:"+ classname+""+"學(xué)生姓名:"+studentname;returninfor;}}實(shí)現(xiàn)school接口接口的實(shí)現(xiàn)-teacher類classteacher

implementsschool{privateStringschoolname;privateStringclassname;

privateStringteachername;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}

publicvoidsetname(Stringteachername){this.teachername=teachername;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}publicStringgetname(){returnteachername;}

publicStringtostring()//自己的方法{Stringinfor="學(xué)校名稱:"+schoolname+""+"班級名稱:"+ classname+""+"教師姓名:"+teachername;returninfor;}}實(shí)現(xiàn)school接口測試類-主程序publicclassschooltest{publicstaticvoidmain(String[]args){studentst1=newstudent();teacherte1=newteacher();

st1.setschoolname("武漢科技大學(xué)");st1.setclassname("計算機(jī)二班");st1.setname("張三");

te1.setschoolname("武漢大學(xué)");te1.setclassname("軟件一班");te1.setname("李四");System.out.println(st1.tostring());System.out.println(te1.tostring());}}接口的多重實(shí)現(xiàn)Java繼承是單繼承(子類只有一個直接父類);但是一個類可以實(shí)現(xiàn)一個接口,也可同時實(shí)現(xiàn)另一個接口。示例學(xué)校1接口學(xué)生類教師類setschoolname(String);setclassname(String);setname(String);測試類(主程序)教師對象學(xué)生對象接口方法實(shí)現(xiàn)方法學(xué)校2接口getschoolname();getclassname();getname();實(shí)現(xiàn)接口實(shí)現(xiàn)接口接口的聲明interfaceschool1{voidsetschoolname(Stringschoolname);voidsetclassname(Stringschoolclassname);voidsetname(Stringname);}interfaceschool2{Stringgetschoolname();Stringgetclassname();Stringgetname();}接口的實(shí)現(xiàn)-student類classstudent

implements

school1,school2{privateStringschoolname;privateStringclassname;privateStringstudentname;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}publicvoidsetname(Stringstudentname){this.studentname=studentname;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}publicStringgetname(){returnstudentname;}

publicStringtostring()//自己的方法{Stringinfor="學(xué)校名稱:"+schoolname+""+"班級名稱:"+ classname+""+"學(xué)生姓名:"+studentname;returninfor;}}實(shí)現(xiàn)school1接口實(shí)現(xiàn)school2接口接口的實(shí)現(xiàn)-teacher類classteacher

implements

school1,school2{privateStringschoolname;privateStringclassname;privateStringteachername;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}publicvoidsetname(Stringteachername){this.teachername=teachername;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}publicStringgetname(){returnteachername;}

publicStringtostring()//自己的方法{Stringinfor="學(xué)校名稱:"+schoolname+""+"班級名稱:"+ classname+""+"教師姓名:"+teachername;returninfor;}}實(shí)現(xiàn)school1接口實(shí)現(xiàn)school2接口測試類-主程序(沒有變換)publicclassschooltest{publicstaticvoidmain(String[]args){studentst1=newstudent();teacherte1=newteacher();st1.setschoolname("武漢科技大學(xué)");st1.setclassname("計算機(jī)二班");st1.setname("張三");te1.setschoolname("武漢大學(xué)");te1.setclassname("軟件一班");te1.setname("李四");System.out.println(st1.tostring());System.out.println(te1.tostring());}}接口的繼承學(xué)校2接口學(xué)生類教師類setschoolname(String);setclassname(String);setname(String);測試類(主程序)教師對象學(xué)生對象接口方法學(xué)校1接口getschoolname();getclassname();getname();繼承接口實(shí)現(xiàn)接口實(shí)現(xiàn)接口實(shí)現(xiàn)方法接口的繼承interfaceschool2{voidsetschoolname(Stringschoolname);voidsetclassname(Stringschoolclassname);voidsetname(Stringname);}interfaceschool1extendsschool2{Stringgetschoolname();Stringgetclassname();Stringgetname();}【Return】練習(xí)定義一個整形堆棧IntStac

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論