版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java入門Java語言的特點:1.面向?qū)ο?.可移植性好(Java虛擬機是一個想象中的機器,在實際的計算機上通過軟件模擬來實現(xiàn)。)3.垃圾回收機制4.分布式5.多線程。包的含義:它是一系列類和接口的集合。主要是解決同名類或接口之間的沖突,因為一個包中的符號名如類名,接口名等不能重名,但有了包后則不同的包之間可以允許有同名的符號出現(xiàn);利用包還可以將不同的.class文件放置在不同的文件目錄下。系統(tǒng)包:JavaAPI就是系統(tǒng)為我們提供的若干包,常用的有:eq\o\ac(○,1).java.lang語言包,提供利用Java編程語言進行程序設(shè)計的基礎(chǔ)類eq\o\ac(○,2). java.util實用包,包含集合框架、事件模型、日期和時間設(shè)施和各種實用工具類。eq\o\ac(○,3).java.awt抽象窗口工具包,包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類。eq\o\ac(○,4)java.text文本包,提供以與自然語言無關(guān)的方式來處理文本、日期、數(shù)字和消息的類和接口。eq\o\ac(○,5).java.io通過數(shù)據(jù)流、序列化和文件系統(tǒng)提供系統(tǒng)輸入和輸出的文件包。eq\o\ac(○,6)java.applet提供創(chuàng)建Applet應用程序所必需的類。eq\o\ac(○,7)為實現(xiàn)網(wǎng)絡(luò)應用程序提供類。eq\o\ac(○,8).javax.swing提供一組”輕量級”(全部是Java語言)組件,盡量讓這些組件在所有平臺上的工作方式都相同。eq\o\ac(○,9).javax.sql為通過Java語言進行服務器端數(shù)據(jù)源訪問和處理提供API。eq\o\ac(○,10).javax.xml根據(jù)XML規(guī)范定義核心XML常量和功能。java包應該是基本的Java技術(shù),而javax是擴展的一部分。自定義包格式:package包名;如何引用包:可以在一個包中使用另一個包中所定義的類和接口,這可由import語句來實現(xiàn)。(注意:如果引入的幾個包中包括有名稱相同的類,則當使用類時必須指明包含的包,以便編譯器能正確區(qū)別它們)基本語法1publicclassStaffInfo{2 publicstaticvoidmain(String[]args){3 Stringname="李麗";//姓名,字符串變量4 charsex='女';//性別,字符變量5 intage=40;//年齡,整型變量 booleanmarital=true;//婚否,布爾型變量7doublewage=3565.85;//工資,實型變量8System.out.println("**本公司工資最高的員工**");//從控制臺輸出信息數(shù)據(jù)類型說明舉例int整型用于存儲整數(shù),例如:數(shù)量、年齡double雙精度實型用于存儲實數(shù),例如:成績、價格、工資boolean布爾型用于存儲邏輯值,例如:婚否用true表示”是”、用false表示”否”char字符型用于存儲單個字符,例如:性別String字符串型用于存儲一個字符串常量因其數(shù)據(jù)類型不同有不同的表示方法。(1)整型常量,即整數(shù),可以有十進制、八進制、十六進制:十進制整數(shù):只包含數(shù)碼0~9:八進制整數(shù):必須以數(shù)字0開頭,只包含數(shù)碼0~7:十六進制整數(shù):必須以0X或0x開頭,包含0~9,A~F或a~f.(2)實型常量:又叫浮點型常量,即實數(shù),是帶有小數(shù)點的一類數(shù)據(jù)類型,占用存儲空間為8個字節(jié)。實數(shù)只采用十進制形式,有兩種表示方法:十進制小數(shù)形式和指數(shù)形式。(3)字符型常量。(4)字符串常量。(5)布爾型常量。轉(zhuǎn)義字符功能轉(zhuǎn)義字符功能\r表示接受鍵盤輸入,作用等同于回車鍵\n換行\(zhòng)b退格,作用等同于BackSpace鍵\f換頁\t水平制表,作用等同于table鍵\’單引號\ddd1~3位八進制數(shù)所代表的字符\”雙引號\xhh1~2位十六進制數(shù)所代表的字符\\一個斜杠”\”變量代表的是內(nèi)存中的一塊空間,可以存放各種類型的數(shù)據(jù),并且空間里存放的數(shù)據(jù)是可以改變的。(1)變量的聲明與賦值:類型名變量名;變量名=值;也可以在聲明的同時給變量賦初值,定義形式為:類型名變量名=變量值;(2)變量的命名規(guī)則:變量名的長度沒有限制,但是變量必須以字母、下劃線“_”或者“$”符開頭。變量可以包括數(shù)字,但不能以數(shù)字開頭。除了“_”或者“$”之外,變量名不能包含任何特殊字符。不能使用Java的關(guān)鍵字。數(shù)據(jù)類型轉(zhuǎn)換:(1)自動類型轉(zhuǎn)換,自動類型轉(zhuǎn)換需要滿足以下兩個條件:轉(zhuǎn)換之前和轉(zhuǎn)換之后的兩種類型要兼容;轉(zhuǎn)換后的要比轉(zhuǎn)換前的數(shù)據(jù)類型的范圍大。(2)強制類型轉(zhuǎn)換,intsum;sum=(int)num1;//(int)num1能夠把當前變量num1轉(zhuǎn)換成括號中的數(shù)據(jù)類型int。任務:從鍵盤輸入王竹同學語文、數(shù)學、英語課的成績,計算該生這三門課程的平均分,要求平均分為整數(shù)。1importjava.util.Scanner;//導入Scanner2publicclassJudgment{3publicstaticvoidmain(String[]args){4intavg=0;//平均分5Scannerinput=newScanner(System.in);//Java輸入的一種方法6 System.out.println("請輸入王竹同學的語文成績:");//提示輸入語文成績7intlanguage=input.nextInt();//將值賦給語文成績language8 System.out.println("請輸入王竹同學的數(shù)學成績:");//輸入數(shù)學成績9intmath=input.nextInt();//將從鍵盤獲得的值賦給數(shù)學成績math10 System.out.println(“請輸入王竹同學的英語成績:”);//輸入英語成績11intenglish=input.nextInt();//將從鍵盤獲得的值賦給成績english12 avg=(int)(language+math+english)/3;//計算平均分13 System.out.println("王竹的平均分為"+avg);}}//輸出平均分Scanner類:importjava.util.Scanner;Scannerinput=newScanner(System.in);intlanguage=input.nextInt();自增運算符的用法eq\o\ac(○,1)a=i++;等價于a=i;eq\o\ac(○,2)i=i+1;a=++i;等價于i=i+1;a=i;條件運算符:條件運算符是唯一的三元運算符,其格式為:表達式1?表達式2:表達式3switch(表達式){case常量1:語句1;break;……default:語句n;break;}注意:switch后面括號中表達式的類型只能是整型或字符型。while(循環(huán)條件){循環(huán)操作;改變循環(huán)變量值;}publicclassShowInfo{publicstaticvoidmain(String[]args){inti=1;//循環(huán)變量i賦初值 while(i<=1000){//循環(huán)條件i<=1000成立,執(zhí)行循環(huán)操作System.out.println("我愛Java!");//循環(huán)操作 i++;//循環(huán)變量步進}}}萬年歷1importjava.util.Scanner;2publicclassCalendar1{3 publicstaticvoidmain(String[]args){4 System.out.println("********歡迎使用********");//輸出信息5Scannerinput=newScanner(System.in);//從鍵盤接收年份值,賦給year6 System.out.print("請選擇年份:");7 intyear=input.nextInt();8 System.out.print(“請選擇月份:”);//增加月份值的輸入9intmonth=input.nextInt();10 intdays=0;//存儲當月的天數(shù)11 booleanrunNian;//存儲是否是閏年12 //判斷是否是閏年13 if(year%4==0&&!(year%100==0)||year%400==0){//閏年的條件14runNian=true;//條件表達式為真,是閏年15 }16 else{17 runNian=false;//條件表達式為假,是平年18 }19 //根據(jù)runNian的值,輸出20 if(runNian){21 System.out.println(year+"年閏年");22 }23 else{ System.out.println(year+"年平年");/26/*計算當月的天數(shù)*/27 switch(month){28case1://1、3、5、7、8、10、12這7個月的天數(shù)相同29 case3:30case5:31 case7:32 case8:33 case10:34case12:35days=31;36break;37 case2:38if(runNian){//2月的天數(shù)因平年或是閏年而不同39 days=29;40 }else{41 days=28;42 }43 break;25 }44 default:45 days=30;46 break;47 }48 System.out.println(month+"月\t共"+days+"天");49inttotalDays=0;//totalDays輸入年份之前的總天數(shù)50 inti=1;51 while(i<year){//使用循環(huán)累加從公元1年到(year-1)年的總天數(shù)52 if(i%4==0&&!(i%100==0)||i%400==0){//判斷是否為閏年53 totalDays=totalDays+366;//閏年366天54 }55 else{56totalDays=totalDays+365;//平年365天57 }58 i++;59 }60 System.out.println(year+"年之前的總天數(shù):"+totalDays+"天");61intbeforeDays=0;//year年中month月前幾個月的天數(shù)62 i=1;63 do{//從1月到(month-1)月的天數(shù)64 switch(i){65 case1://1、3、5、7、8、10、12這7個月的天數(shù)相同66 case3:67 case5:68 case7:69 case8:70 case10:71 case12:72 days=31;73 break;74 case2:75 if(runNian){//2月的天數(shù)因平年或是閏年而不同76 days=29;77 }78 else{79 days=28;80}81 break;82 default:83 days=30;84 break;85}86 if(i<month){87 beforeDays=beforeDays+days;88 }89 i++;90 }while(i<=month);91 totalDays=totalDays+beforeDays;92 System.out.println(year+"年"+month+"月之前的總天數(shù):"+totalDays+"天");93 System.out.println("當前月份的天數(shù):"+days+"天");94/*存儲當月第一天是星期幾:0為星期日,1~6為星期一~星期六*/95 intfirstOfMonth=(1+totalDays)%7;96 /*輸出日歷‘\t’是制表符,相當于table鍵*/97 System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");98 for(intnulNum=0;nulNum<firstOfMonth;nulNum++){//nulNum空格數(shù)99 //該月第一天之前要輸出的空格數(shù),如果是星期五,前面要輸出5個空格100 System.out.print("\t");//輸出空格101 }102 for(intj=1;j<=days;j++){//在輸完空格的位置上輸出本月的日歷103 System.out.print(j+"\t");104 if((totalDays+j)%7==6){//如果當天為周六,輸出換行105 System.out.println();106 }107 }根據(jù)學生的成績,判定其優(yōu)秀等級。1importjava.util.Scanner;2publicclassCountGrade{3publicstaticvoidmain(String[]args){4 intscore=0;//學生成績5 intnum=0;//90分以上的科目數(shù)6 Scannerinput=newScanner(System.in);7 System.out.println("請輸入各門成績:");8 for(inti=0;i<3;i++){//統(tǒng)計90分以上的科目數(shù)9 score=input.nextInt();//接收數(shù)據(jù)10 if(score<60){//成績低于60分時11 System.out.println("別泄氣,加油!");12 num=-1;//num置為-113 break;//結(jié)束循環(huán)14 }elseif(score<90){//90分以下的科目不計數(shù)15 continue;//結(jié)束本次循環(huán),不再執(zhí)行循環(huán)體內(nèi)下面的語句16 }else{17 num=num+1;}//成績>90,num加118}19 switch(num){//根據(jù)num值判定等級20 case1:21 System.out.print("該生的優(yōu)秀級別為:☆");22 break;23 case2:24 System.out.print("該生的優(yōu)秀級別為:☆☆");25 break;26 case3:27 System.out.print("該生的優(yōu)秀級別為:☆☆☆");28 break;29 default:30 break;}31 }32}保存程序為CountGrade.java,程序運行結(jié)果如下:請輸入各門課成績:967556別泄氣,加油!兔子生兔子1/**Fibonacci數(shù)列前20項的輸出**/2publicclassArrayFibonacci{3 publicstaticvoidmain(Stringargs[]){4 intFibonacci[];//聲明一維數(shù)組5 inti;6 Fibonacci=newint[20];//創(chuàng)建一維數(shù)組7Fibonacci[0]=1;8 Fibonacci[1]=1;9 System.out.println("--------Fibonacci數(shù)列前20項的輸出--------");10 //給數(shù)組元素賦值11 for(i=2;i<Fibonacci.length;i++)12Fibonacci[i]=Fibonacci[i-1]+Fibonacci[i-2];13 //輸出數(shù)組元素14 for(i=0;i<Fibonacci.length;i++){15 System.out.print(Fibonacci[i]+"\t");16 if((i+1)%5==0)17 System.out.println("");18 }19 }20}數(shù)組的概念:數(shù)組是常用的數(shù)據(jù)結(jié)構(gòu),數(shù)組用于將相同類型的若干變量按照有序的方式組織起來,數(shù)組中每一個變量稱為數(shù)組元素,數(shù)組分為一維數(shù)組和多維數(shù)組。聲明:數(shù)據(jù)類型數(shù)組名[];或者數(shù)據(jù)類型[]數(shù)組名;例如inta[];float[]b;創(chuàng)建:數(shù)組名=new數(shù)據(jù)類型[數(shù)組長度]:例如a=newint[20];同時聲明和創(chuàng)建inta[]=newint[20];一維數(shù)組的初始化int[]a=newint[5];a[0]=1;或者inta[]={1,2,3,4,5};任務:有一個3×4的矩陣和一個4×3的矩陣,請求解兩矩陣的乘積。1/**矩陣的乘法**/2publicclassMatricesMultiplication{3 publicstaticvoidmain(Stringargs[]){4 //創(chuàng)建二維數(shù)組并初始化5 inta[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};6 intb[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};7 //創(chuàng)建存放結(jié)果矩陣的二維數(shù)組8 intc[][]=newint[3][3];9 inti,j,k;10 System.out.println("-----矩陣的乘積-----");11 //三重循環(huán)求矩陣乘積12for(i=0;i<3;i++){13 for(j=0;j<3;j++){14 c[i][j]=0;15 for(k=0;k<4;k++)16 c[i][j]=c[i][j]+a[i][j]*b[i][j];17 System.out.print(c[i][j]+"\t");18 }19 System.out.println();20 }21}22}任務:將10名學生的考試成績進行從大到小的排序。(Arrays類的sort方法)1/**起泡排序**/2importjava.util.*;3publicclassArraySort1{4 publicstaticvoidmain(Stringargs[]){5floatscore[]=newfloat[10];6inti,j;7 floattemp;8System.out.println(“請輸入10名學生的考試成9 Scannerin=newScanner(System.in);10 //循環(huán)輸入學生成績11 for(i=0;i<score.length;i++)12 score[i]=in.nextFloat();13 //起泡排序法14 for(i=0;i<score.length-1;i++)15 for(j=0;j<score.length-1-i;j++)16 if(score[j]<score[j+1]){17 temp=score[j];18 score[j]=score[j+1];19 score[j+1]=temp;20 }21 System.out.println("-------------學生成績排序-------------");22//循環(huán)輸出排序后數(shù)組元素23 for(i=0;i<score.length;i++){24 System.out.print(score[i]+"\t");25 if((i+1)%5==0)26 System.out.println();27 }28 }29}排序的算法有很多種,可分為插入排序、快速排序、選擇排序、歸并排序、計數(shù)排序等幾大類。先將數(shù)組第1個元素和第2個元素進行比較,若發(fā)現(xiàn)逆序,則進行一次對調(diào);接著再對第2個元素和第3個元素進行比較,若逆序,再交換……如此一直進行到第n-1個元素和第n個元素。此時數(shù)組中最大(?。┑囊粋€元素已經(jīng)“沉底”。然后進行第二趟的相鄰元素兩兩比較,直到次大(?。┑脑胤诺降箶?shù)第2個元素的位置上。如此循環(huán)往復,直到所有元素位置均正確不需要交換為止。Arrays類的sort方法1/**使用Arrays類的sort()方法**/2importjava.util.*;3publicclassArraySort2{4publicstaticvoidmain(Stringargs[]){5 floatscore[]=newfloat[10];6 inti;7System.out.println("請輸入10名學生的考試成績:");8 Scannerin=newScanner(System.in);9 //循環(huán)輸入學生成績10 for(i=0;i<score.length;i++)11 score[i]=in.nextFloat();12Arrays.sort(score);//使用Arrays類的sort()方法排序13 System.out.println("-------------學生成績排序-------------");14 //逆序輸出排序后數(shù)組元素15 for(i=score.length-1;i>=0;i--){16 System.out.print(score[i]+"\t");17 if((i+1)%6==0)18 System.out.println();19 }20 }21}Arrays是java.util包中預定義的一個類,因此在使用時需要用import說明將其導入到程序中。Arrays類包含用來操作數(shù)組的各種方法,比如排序和搜索。Arrays類的sort方法是一個靜態(tài)方法,所以可以不創(chuàng)建Arrays類的實例而直接使用類名來調(diào)用sort方法,其一般的調(diào)用格式為:Arrays.sort(數(shù)組名)使用sort方法對數(shù)組進行排序,避免了在程序中用代碼實現(xiàn)復雜的排序算法,其實sort方法中使用的就是一個經(jīng)過調(diào)優(yōu)的快速排序算法。sort方法是將數(shù)組中的元素按照升序進行排列,也就是從小到大的順序進行排列。判斷回文字符串(字符串處理String類)5/**判斷回文字符串**/6importjava.util.*;7publicclassStringJudge{8 publicstaticvoidmain(Stringargs[]){9 Strings;10 charc1,c2;11 inti,l;12 booleanflag=true;13 System.out.println("請輸入要判斷的字符串:");14 Scannerin=newScanner(System.in);15 s=in.next();16 l=s.length();17//取對應位置字符進行比較18 for(i=0;i<l/2;){19c1=s.charAt(i);20c2=s.charAt(l-i-1);21 if(c1==c2)22 i++;23 else{24 flag=false;25 break;26 }27 }28System.out.println("-----判斷回文字符串-----");29//根據(jù)flag的值進行判斷30 if(flag==true)31System.out.print("所輸入字符串是回文字符串");32 else33System.out.print("所輸入字符串不是回文字符串");34 }35}字符串的查詢和提取String類中提供了很多對字符串進行查詢和提取的方法,常用的有下列幾種:(1)charcharAt(int
index)該方法功能為返回當前字符串中指定索引處的字符,這個方法的返回值為char。例如:Strings="Hello,world";charc=s.charAt(1);//c的值為’e’(2)intindexOf(intch)該方法功能為返回指定字符在當前字符串中第一次出現(xiàn)處的索引,如果指定字符沒有出現(xiàn)在當前字符串中,則返回-1。例如:Strings="Hello,world";inta=s.indexOf('o');//a的值為4intb=s.indexOf('g');//b的值為-1(3)intindexOf(Stringstr)該方法功能為返回指定子字符串在當前字符串中第一次出現(xiàn)處的索引,如果指定子字符串不在當前字符串中,則返回-1。例如:Strings="Hello,world";inta=s.indexOf("ll");//a的值為2(4)intindexOf(String
str,int
fromIndex)該方法功能為從指定的索引處開始,返回指定子字符串在當前字符串中第一次出現(xiàn)處的索引,參數(shù)fromIndex指定查詢的起始位置。例如:Strings="Hello,world";inta=s.indexOf("o",5);//a的值為7(5)intlength()該方法功能為返回字符串的長度。例如:Strings="Hello,world";inta=s.length();//a的值為11(6)substring(int
beginIndex)該方法功能為返回一個新的字符串,它是當前字符串的一個子串,新字符串從參數(shù)beginIndex指定的位置處開始,到當前字符串末尾結(jié)束。例如:Strings="Hello,world";Stringa=s.substring(6);//a的值為"world"(7)substring(int
beginIndex,int
endIndex)該方法功能為返回一個新字符串,它是當前字符串的一個子串,新字符串從參數(shù)
beginIndex指定的位置開始,到
endIndex-1處結(jié)束。例如:Strings="Hello,world";Stringa=s.substring(2,4);//a的值為"ll"6.字符串的比較String類中提供如下方法對兩個字符串進行比較(1)booleanequals(Object
anObject)該方法將當前字符串與指定的anObject表示的字符串進行比較,并返回一個boolean類型的值。如果兩者相同,返回值為true,否則返回值為false。例如:Strings1="Hello,world";Strings2="Hello,World";booleana=s1.equals(s2);//a的值為false(2)booleanequalsIgnoreCase(String
anotherString)該方法將當前字符串與參數(shù)字符串進行比較,其用法與equals(Object
anObject)方法基本相同,但是比較時不考慮大小寫。例如:Strings1="Hello,world";Strings2="Hello,World";booleana=s1.equalsIgnoreCase(s2);//a的值為true(3)intcompareTo(String
anotherString)該方法按字典順序比較兩個字符串,并返回兩者之間的差值。若當前字符串比參數(shù)字符串大,則返回正值;若比參數(shù)字符串小,則返回負值;若兩者相等,則返回0。實際上,該方法的返回值為兩個字符串從左向右依次比較每個字符時,第一對不同字符的unicode碼的差值。例如:Strings1="ab";Strings2="de";inta=s1.compareTo(s2);//a的值為-3但是要在使用中注意下例所示的情況。Strings1="abcde";Strings2="ab";inta=s1.compareTo(s2);//a的值為3,也就是兩字符串長度之差字符串的追加(字符串處理StringBuffer類)1/**字符串的追加**/2importjava.util.*;3publicclassStringAppend{4 publicstaticvoidmain(String[]args){5 StringBuffervarString=newStringBuffer();6 Stringstr1,str2;7 System.out.println("請輸入字符串的初始內(nèi)容:");8 Scannerin=newScanner(System.in);9 str1=in.next();10 varString.append(str1);11 System.out.println("請輸入要追加的內(nèi)容:");12 str2=in.next();13 varString.append(str2);14 System.out.println("字符串最終的內(nèi)容為:"+varString);15 }16}StringBuffer類也可以用來創(chuàng)建字符串對象,它與String類不同的是該類用于存放一個可變的字符串,當對字符串對象進行修改時,不會象String類一樣創(chuàng)建新的字符串對象,而是直接修改原字符串。使用StringBuffer類創(chuàng)建的字符串對象,其實體的內(nèi)存空間可以隨著字符串的改變而自動改變大小。StringBuffer對象的創(chuàng)建(1)StringBuffer()該方法創(chuàng)建一個空的StringBuffer類對象,系統(tǒng)為其分配的字符串緩沖區(qū)初始容量為16個字符。(2)StringBuffer(intsize)該方法創(chuàng)建一個StringBuffer類對象,系統(tǒng)為其分配的字符串緩沖區(qū)容量為size個字符。(3)StringBuffer(Stringvalue)該方法創(chuàng)建一個StringBuffer類對象,并將其內(nèi)容初始化為指定字符串value的內(nèi)容,系統(tǒng)為其分配的字符串緩沖區(qū)容量為指定字符串的長度再加上16個字符。StringBuffer類的常用方法(1)append方法append方法的功能就是將指定字符串追加到StringBuffer對象的后面,append提供了很多種重載的方法,下面只列出常用的幾種:StringBufferappend(booleanb)StringBufferappend(charc)StringBufferappend(inti)StringBufferappend(floatf)StringBufferappend(stringstr)可以看到這些方法基本類似,就是將其他數(shù)據(jù)類型轉(zhuǎn)換為字符串后追加到StringBuffer對象的后面,并返回當前StringBuffer對象的引用。例如:StringBuffers=newStringBuffer("ok,");s.append(100);//s的值為ok,100(2)insert方法insert方法的功能是將指定字符串插入到StringBuffer對象的指定位置,跟append一樣也有很多種重載的方法,如下所示:StringBufferinsert(intoffset,booleanb)StringBufferinsert(intoffset,charc)StringBufferinsert(intoffset,inti)StringBufferinsert(intoffset,floatf)StringBufferinsert(intoffset,Stringstr)方法中的參數(shù)offset指定了要插入的位置。例如:StringBuffers=newStringBuffer("ho");s.insert(1,"ell");//s的值為hello(3)intcapacity()該方法返回當前緩沖區(qū)容量。例如:StringBuffers=newStringBuffer("早上好");System.out.println(s.capacity());//輸出結(jié)果為19(4)intlength()該方法的功能為確定StringBuffer對象的長度。5)voidsetCharAt(int
index,char
ch)該方法功能為將給定索引處的字符設(shè)置為ch。例如:StringBuffers=newStringBuffer("上午好");s.setCharAt(0,'下');//s的值為下午好(6)StringtoString()該方法將StringBuffer對象轉(zhuǎn)換為String對象。(7)StringBufferdelete(int
start,int
end)該方法自當前StringBuffer對象中刪除從strart開始到end-1處結(jié)束的子字符串。例如:StringBuffers=newStringBuffer("我們的祖國");s.delete(0,3);//s的值為祖國8)StringBufferdeleteCharAt(int
index)該方法自當前StringBuffer對象中移除指定位置index處的字符。(9)StringBufferreplace(int
start,int
end,String
str)使用給定字符串str替換當前StringBuffer對象的子字符串,被替換子串從start開始至end-1處結(jié)束。例如:StringBuffers=newStringBuffer("我們的祖國");s.replace(2,3,"愛");//s的值為我們愛祖國面向?qū)ο髮ο蟮臓顟B(tài)和行為:對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中。類:具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。成員:在Java語言中,一切事物都是對象。實際上,對于每個對象都有一個抽象過程。所謂抽象,就是選取所描述事物在現(xiàn)實世界中相關(guān)特征的過程。我們把屬性和方法稱為這個對象的成員。類中的數(shù)據(jù)稱為成員字段(field),其實就是個變量,可以按照一般變量聲明的格式進行聲明,對數(shù)據(jù)進行的操作稱為成員方法(method)。聲明類:一個源程序文件中可以聲明多個類,編譯后每個類都會生成.class文件,但用public修飾的類只能有一個,而且該類名必須與文件名相同。一個Java文件可以對應一個或多個.class文件。舉例:將name、age、introduction、eat這四個成員加入Person類中1publicclassPerson{2 Stringname;//定義人的姓名3 intage;//定義人的年齡4 //定義introduction()方法5publicvoidintroduction(){6 System.out.println("我的名字叫"+name);7 System.out.println("我的年齡是"+age+"歲");8 }9 //定義eat()方法10 publicvoideat(){11 System.out.println("每個人都要吃飯");12 }13}Java語言中類的一般定義方式一:publicclass類名//隱含地派生于Object類 {}方式二:publicclass類名extends父類名 {繼承形式的類定義(指明父類名);}方式三:publicclass類名extends父類名implenents接口名 { 繼承并實現(xiàn)某一接口形式的類定義;}屬性和方法一起被稱為類的成員。1)公有的(使用public關(guān)鍵字):說明該類成員可被所有類的對象使用。(2)保護的(使用protected關(guān)鍵字):說明該類成員能被同一類中的其他成員、或其子類成員、或同一包中的其他類訪問,不能被其他包的非子類訪問。(3)默認的(default):它的限制比protected還嚴格,它使得該類成員能被同一類中的其他成員、或同一包中的其他類訪問,但不能被其他包的類訪問。(4)私有的(使用private關(guān)鍵字):說明該類成員只能被同一類中的其他成員訪問,不能被其他類的成員訪問,也不能被子類成員訪問。修飾符返回值類型方法名(形參表){方法體}返回值類型:可以根據(jù)方法的需要定義返回值,可以是int、String、char等8種數(shù)據(jù)類型或java的類。如果方法沒有返回值,則用void表示,不能省略。定義方法時,如果有多個形參,用”,”分隔。如何創(chuàng)建和使用對象1publicclassPersonTest{2 publicstaticvoidmain(Stringargs[]){3 //創(chuàng)建對象4Personp1=newPerson();//創(chuàng)建Person類的對象p15 Personp2;//聲明Person類的對象p26 p2=newPerson();//初始化對象p27 ="Jack";//定義對象p1的姓名8 p1.age=18;//定義對象p1的年齡9 roduction();//通過對象p1調(diào)用introduction()方法10p2.eat();//通過對象p2調(diào)用eat()方法11 }12}創(chuàng)建對象時一般是先定義一個對象變量,再用new關(guān)鍵字生成一個對象,并為對象中的變量賦初始值。Java中的對象只有實例化后,系統(tǒng)才真正創(chuàng)建出它并為它分配出內(nèi)存空間。格式如下:類名對象名;//聲明對象變量對象名=new類名();//創(chuàng)建對象其中,類名是定義對象的類型,它包括類和接口等引用類型。new關(guān)鍵字是實例化一個對象,給對象分配內(nèi)存。使用構(gòu)造方法為類的對象賦初值(構(gòu)造方法)1publicclassPerson{2 Stringname;3 intage;4 //類的構(gòu)造方法,用于初始化成員變量5 Person(Stringname,intage){6=name;7 this.age=age;8 }9 //定義introduction()方法,輸出介紹信息10 publicvoidintroduction(){11 System.out.println("我的名字叫"+name);12 System.out.println("我的年齡是"+age+"歲");13 }14 publicvoideat(){15 System.out.println("每個人都要吃飯");16 }17}18//測試類,可以和Person類寫在一個文件中,文件名和public類同名19classPersonTest{20 publicstaticvoidmain(Stringargs[]){21 Personp1=newPerson("Jack",18);//創(chuàng)建對象的同時,初始化22 Personp2=newPerson("Steven",21);23 System.out.println("p1'snameis"++".");24 System.out.println(+"is"+p2.age+"yearsold.");25 roduction();26 p2.eat();27 }28}保存程序為Person.java,編譯后,運行PersonTest.class文件,程序運行結(jié)果為:p1'snameisJack.Stevenis21yearsold.我的名字叫Jack。我的年齡是18歲。每個人都要吃飯1.構(gòu)造方法的名字與包含它的類相同,在語法上類似于一個方法。構(gòu)造方法沒有返回值,甚至連void修飾符都沒有(因為它只是用來創(chuàng)建對象)。作用:實現(xiàn)對象在實例化時的初始化(當對象在實例化時將自動地調(diào)用構(gòu)造函數(shù),實現(xiàn)對其成員數(shù)據(jù)賦初值)。如下列代碼:RectanglerectA=newRectangle();//對象在實例化時未初始化其屬性RectanglerectA=newRectangle(10,10,200,200);//對象在實例化時初始化其屬性2.構(gòu)造函數(shù)的可能形式類中未定義出構(gòu)造函數(shù)時,此時系統(tǒng)中會生成一個缺省形式的構(gòu)造函數(shù)(函數(shù)體為空),對象在實例化時將不能進行初始化;重載形式(定義出多個同名的構(gòu)造函數(shù)時),從而可以在對象實例化時以多種方式初始化它,在講解多態(tài)時給出例子。3.this關(guān)鍵字的使用。當方法內(nèi)部定義的局部變量和成員變量同名時,如果要調(diào)用成員變量,就要用this。沒有同名的狀況發(fā)生就不需要用this。完善Person類——帶get和set方法(封裝)步驟1:在8.1Person類中修改屬性為私有的,增加set和get方法1publicclassPerson2{3privateStringname;//定義人的姓名為私有的4privateintage;//定義人的年齡為私有的5//類的構(gòu)造方法,用于初始化成員變量6Person(Stringname,intage){7 =name;8 this.age=age;}publicStringgetName(){returnname;12}13publicvoidsetName(Stringname){14=name;15}16publicintgetAge(){17returnage;18}19publicvoidsetAge(intage){20//setAge()方法采取了保護措施,用戶調(diào)用該方法時對年齡驗證不會出現(xiàn)年齡為負數(shù)的情況21 if(age<0){22 System.out.println("錯誤!年齡不能為負數(shù)!");23 }24else{this.age=age;} 25}26publicvoidintroduction()//定義introduction()方法27{//略,與原代碼一致}28publicvoideat()//定義eat()方法29{//略,與原代碼一致}30}步驟2:在代碼8.2中修改第7和8行代碼P1.setName(“Jack“);//測試類中通過調(diào)用setter方法,為對象的各個屬性賦值P1.setAge(18);封裝的概念封裝(encapsulation),即信息隱藏,封裝的目的有:隱藏類的實現(xiàn)細節(jié),以防別人誤用。迫使用戶通過接口去訪問數(shù)據(jù)。增強代碼的可維護性。使用get和set方法封裝私有數(shù)據(jù)get和set方法一般是用來給類的成員變量賦值的,set表示設(shè)置值,get表示獲取值。由于類的成員變量一般會聲明為private的,其他類是不能直接訪問成員變量的,所以為了在類以外給該類的成員變量賦值或者取值,只有用聲明為public的setXxx()和getXxx()方法來實現(xiàn),這些方法可以對參數(shù)的數(shù)值進行安全檢查。如果編寫了一個原型類,又按照這種封裝類的要求把它封裝好了,這樣的類就叫做Java的組件,即JavaBean。3.注意:setXxx()和getXxx()方法要按照規(guī)定命名,不能隨意編寫。方法前半部分必須是get或set,后半部分是屬性名,屬性名首字母必須要大寫。4.在MyEclipse中自動生成get和set方法在MyEclipse中先定義好字段后,在要寫get和set方法的位置單擊鼠標右鍵,打開快捷菜單,選擇”Source”——”GenerateGettersandSetters”選項,可以根據(jù)選擇自動生成這些方法。自動統(tǒng)計人數(shù)(類成員)1publicclassPerson_s{2 privateStringname;//實例變量,私有的3 privateintage;//實例變量,私有的4staticintcount=0;//類變量5 Person_s(Stringn,inta){6 name=n;7 age=((a>0)&(a<150))?a:0;8 count++;9 }10publicstaticvoidprint_count()//類方法,只能訪問類變量11 {12 System.out.println("count="+count+"");13 }14 publicvoidprint()//實例方法15 {//可以訪問類變量和實例變量16 print_count();//調(diào)用類方法17 System.out.println(name+"is"+age+"yearsold.");18}19 publicvoidfinalize()//析構(gòu)方法20 {21 count--;22 }23}24classPerson_sTest{25 publicstaticvoidmain(Stringargs[]){26 Person_sp1=newPerson_s("Jack",21);27 p1.print_count();//通過對象調(diào)用類方法28 p1.print();//通過對象調(diào)用實例方法29 Person_sp2=newPerson_s("Tom",18);30 p2.print();31System.out.println("共有"+p1.count+"個對象.");32 p1.finalize();//調(diào)用對象的析構(gòu)方法33System.out.println("調(diào)用析構(gòu)方法后還有"+p1.count+"個對象.");34 Person_s.print_count();//通過類名調(diào)用類方法35 }36}程序結(jié)果count=1count=1Jackis21yearsold.count=2Tomis18yearsold.共有2個對象.調(diào)用析構(gòu)方法后還有1個對象.count=1程序說明:Person_s類中的變量name、age是實例變量,對于不同的對象p1和p2各有自己的值。所以程序的36行的執(zhí)行結(jié)果是輸出語句”Jackis21yearsold.”,程序的38行的執(zhí)行結(jié)果是輸出語句”Tomis18yearsold.”Person_s類中的變量count是類變量,系統(tǒng)運行時,只為該類的第一個對象p1分配內(nèi)存單元,其后創(chuàng)建的對象p2共享一個count變量。所以在創(chuàng)建了對象p2后,count的值為2。但是,程序的第36行通過對象p1調(diào)用析構(gòu)方法,count的值減1后為1。Java類就包括兩種成員:實例成員和類成員。類成員也稱為靜態(tài)成員。使用static修飾的成員稱為類成員。類的成員變量有實例方法和類方法兩種。沒有static修飾的方法稱為實例方法。實例方法體中既可以訪問類變量,也可以訪問實例變量,實例方法只能通過對象來調(diào)用。用static修飾的方法稱為類方法或靜態(tài)方法。類方法體中只能訪問類變量。類方法既可以通過對象來調(diào)用,也可以通過類名調(diào)用,如程序的第31行和37行。在程序中也可以使用析構(gòu)方法finalize()隨時銷毀對象。Java的每個類都有一個析構(gòu)方法,用于將資源返回給系統(tǒng)。方法finalize()沒有參數(shù),也不返回值。設(shè)計亞洲人的類(繼承)1classAsianextendsPerson{2 staticStringskinColor="黃色";3 staticStringhairColor="黑色";4 Stringcountry;5 Asian(Stringname,intage,Stringcountry)6 {7super(name,age);8this.Country=country;9System.out.println("========調(diào)用了子類中的構(gòu)造方法========");10}11publicvoidprint(){12 System.out.println(getName()+",皮膚是:"+skinColor+"的。");13 System.out.println(getName()+",頭發(fā)是:"+hairColor+"的。");14 System.out.println(getName()+"是:"+country+"人。");15 }16}17publicclassTest{18 publicstaticvoidmain(Stringargs[]){19 Asians=newAsian("紫怡",20,"中國");//創(chuàng)建子類對象20 roduction();//調(diào)用父類的方法21 s.print();//調(diào)用子類的方法22 }23}運行結(jié)果如下:========調(diào)用了子類中的構(gòu)造方法========我的名字叫紫怡我的年齡是20歲紫怡,皮膚是:黃色的。紫怡,頭發(fā)是:黑色的。紫怡是:中國人。繼承:在已有類的基礎(chǔ)上快速構(gòu)造出新類的過程;派生:在構(gòu)造新類的同時并新增新的特性的過程?;ǜ福╊悾罕焕^承特性的類;派生(子)類:在基類的基礎(chǔ)上新創(chuàng)建出的類。為什么要繼承派生:實體(對象)之間不僅在橫向方面具有關(guān)聯(lián)特性,在縱向上也存在繼承與派生的特性(遺傳與變異);如果編程時能充分利用此特性將可快速地構(gòu)造出新類。實現(xiàn)繼承的格式為:class子類名extends父類子類中如何進行繼承與派生父類(可以采用簡單的比較法)。常用的手段有:繼承基類中的原始成員(當派生類中未定義出該成員時將自動采用繼承)。覆蓋(重寫或替換)父類中的成員方法:當父類中的某些成員方法不再適合子類的需要時,在子類中應重寫出自己的成員方法。擴充增強子類功能:當子類要求具有新的能時,應添加出該功能(增添新的成員)。代碼8.6中print()方法是新增的功能。1classFather//父類2{3 publicintf=5;4 intM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年涉密人員考試試題庫保密基本知識試題及答案(奪冠)
- 2024文旅景區(qū)新春非遺年俗節(jié)(非遺嘉年華歡樂過大年主題)活動策劃方案-65正式版
- 2024運營管理成本控制與效率優(yōu)化合同范本3篇
- 學習《求是》重要文章《以中國式現(xiàn)代化全面推進強國建設(shè)、民族復興偉業(yè)》心得體會
- 2024年公務員考試淄博市《行政職業(yè)能力測驗》預測試卷含解析
- Unit 5 At the weekend(說課稿)-2023-2024學年滬教牛津版(深圳用)英語五年級下冊
- 草藥知識培訓課件
- Unit8 第2課時 (說課稿)Story time三年級英語上冊同步高效課堂系列(譯林版三起·2024秋)
- 2025年春季后勤人員個人工作計劃
- 2025幼兒園園長個人工作計劃格式
- 專項債券培訓課件
- CNAS-CL01-G001:2024檢測和校準實驗室能力認可準則的應用要求
- 2024城市河湖底泥污染狀況調(diào)查評價技術(shù)導則
- MT-T 1199-2023 煤礦用防爆柴油機無軌膠輪運輸車輛通用安全技術(shù)條件
- 企業(yè)年會活動抽獎滾動抽獎經(jīng)典創(chuàng)意高端模板課件
- 技術(shù)資料檢查評分表
- 軸聯(lián)軸器離合器解析課件
- 一年級上學期語文期末試卷分析一年級上冊語文試卷
- C4支持學生創(chuàng)造性學習與表達作業(yè)1-設(shè)計方案
- Q∕SY 01330-2020 井下作業(yè)現(xiàn)場監(jiān)督規(guī)范
- 醫(yī)院關(guān)于不合理醫(yī)療檢查專項治理自查自查自糾總結(jié)
評論
0/150
提交評論