第一篇:Java課程教學(xué)小結(jié)
2010年~2011年度第一學(xué)期《Java程序設(shè)計(jì)》課程總結(jié)及教
學(xué)效果分析教學(xué)改進(jìn)報(bào)告
本學(xué)期本人擔(dān)任了軟件日語(yǔ)091班的《Java程序設(shè)計(jì)》課程的教學(xué)工作,通過(guò)一學(xué)期的教學(xué),本人的總結(jié)如下:
情況分析:《Java程序設(shè)計(jì)》課程講述的內(nèi)容是Java程序設(shè)計(jì)。課程以Java為藍(lán)本進(jìn)行教學(xué),注重操作和程序設(shè)計(jì),是一門實(shí)用性很強(qiáng)的課程,我比較喜歡,因此從起初就下定決心要教好這門課程了。針對(duì)這這個(gè)學(xué)期的教學(xué)工作現(xiàn)在總結(jié)如下。
1、采用多媒體教學(xué)。用生動(dòng)形象的教學(xué)課件幫助學(xué)生理解。一些學(xué)生比較難理解的章節(jié)內(nèi)容,我都作成動(dòng)態(tài)的畫面,將每一步操作都動(dòng)態(tài)的表示出來(lái),學(xué)生有興趣看,也有興趣學(xué)習(xí)。使學(xué)生能理解難點(diǎn)內(nèi)容,掌握重點(diǎn)內(nèi)容,鞏固學(xué)習(xí)效果。
2、案例教學(xué)法和任務(wù)驅(qū)動(dòng)法的實(shí)施和應(yīng)用。在教學(xué)活動(dòng)中我采用訂單管理系統(tǒng)為教學(xué)案例,開展教學(xué)。從基本概念到最后的類以及最終項(xiàng)目的完成,都采用這一案例進(jìn)行。所有實(shí)例都可以運(yùn)行,可以查找結(jié)果。在機(jī)房,學(xué)生可以邊操作邊運(yùn)行實(shí)例,上課是由于任務(wù)驅(qū)動(dòng),學(xué)生操作的積極性很高。
3、在課堂上開展競(jìng)賽,學(xué)生參與,誰(shuí)首先完成任務(wù),誰(shuí)先檢查,并且每次檢查都有分?jǐn)?shù)記錄,因此學(xué)生的積極性大大提高,教學(xué)效果好,聽課認(rèn)真。
4、項(xiàng)目引領(lǐng)課程,要求學(xué)生完成在線考試系統(tǒng),這是一個(gè)由數(shù)據(jù)庫(kù)SQL做后臺(tái),Java做前臺(tái)的系統(tǒng)。雖然和真正的軟件還是有差距的,但是通過(guò)本課程學(xué)生可以理解使用Java調(diào)用SQL的過(guò)程和編寫大的數(shù)據(jù)庫(kù)軟件的方法。在這個(gè)案例中,我全程輔導(dǎo),指導(dǎo)學(xué)生完成數(shù)據(jù)庫(kù)、表、每個(gè)界面和各個(gè)代碼的編寫、講解、錄入。由于這個(gè)環(huán)節(jié)被學(xué)校抽到聽課和資料檢查學(xué)生格外認(rèn)真,我也感到了學(xué)生對(duì)我的教學(xué)工作的支持,我非常滿意。盡管他們是大二的學(xué)生,但是他們的熱情和認(rèn)真不遜色與其他班級(jí)。因此,通過(guò)一個(gè)學(xué)期一門課程和一個(gè)實(shí)訓(xùn)環(huán)節(jié)的相處我和這個(gè)班級(jí)的學(xué)生的感情很深。
5、認(rèn)真作好教案和備課筆記,這是自己最為重要的教學(xué)資源,是經(jīng)驗(yàn)和知識(shí)的積累。
在今后的教學(xué)過(guò)程中,我還要不斷總結(jié),多采用多媒體課件的方式為學(xué)生進(jìn)行演示,以加強(qiáng)學(xué)生的感性認(rèn)識(shí),培養(yǎng)學(xué)生真正掌握學(xué)習(xí)計(jì)算機(jī)科學(xué)技術(shù)的思想和方法,為學(xué)生課后的進(jìn)一步學(xué)習(xí)提供指導(dǎo)和幫助,爭(zhēng)取達(dá)到更好的教學(xué)效果。
第二篇:java小結(jié)
//1.累加 public class 累加 {
}
//2.階乘
public class 30的階乘 {
} public static void main(String[] args){
} int product=1;for(int i=1;i<=30;i++){ product=*i;} public static void main(String[] args){
} int i=1;for(int counter=1;counter<=100;counter++){ } System.out.println(i);i+=counter;
//3.倒序輸出
法1 用char數(shù)組思想 import java.util.Scanner;public class 逆序輸出 {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);// String input[]=new String[4];input=scan.nextLine();// huiche
// String result=“";char[] Array=input[4].toCharArray();for(int i=Array.length-1;i>=0;i--){
} result+=Array[i];} System.out.println(result);} //倒序輸出 法2 用reverse()方法 import javax.swing.JOptionPane;public static void main(String[] args){
}
String a = null;StringBuffer b;//輸入
a=JOptionPane.showInputDialog(a);StringBuffer c1=new StringBuffer(a);b=c1.reverse();System.out.println(b);
//4.輸出100 121 144...361 public class平方輸入數(shù)組 {
}
//5.求最大公約數(shù)
private static int gys(int m,int n)
{
if(n==0)
return m;else public static void main(String[] args){
} int[] array=new int[10];for(int i=0;i<10;i++){ } array[i]=Math.pow((i+10),2.0);
for(int k=0;k return gcd(n,m%n); } //6.求最小公倍數(shù) public static int gbs(int n1,int n2){ int a =(n1>n2)? n1 : n2; for(int j=a;j<=n1*n2;j++) { if(j%n1==0 && j%n2==0) { return j; } } return 0;} //7.1)十進(jìn)制整數(shù)轉(zhuǎn)化為二進(jìn)制整數(shù)采用“除2取余,逆序排列” import java.util.Scanner;public class Main { public static void main(String[] args){ //第一行輸入要幾組測(cè)試數(shù)據(jù) int N=0,a;//N為輸入幾組數(shù)據(jù),a為輸入的十進(jìn)制數(shù)字 } String b = null;Scanner scan=new Scanner(System.in);N=scan.nextInt();Main num=new Main();for(int i=1;i<=N;i++){ } a=scan.nextInt();b=num.deimalBinary(a);int d=num.Calcute(b);if(d%2==0)System.out.println(”Even“);else System.out.println(”O(jiān)dd“); /*一個(gè)方法得到二進(jìn)制數(shù),用遞歸 *用2去除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù); *再用2去除商,又會(huì)得到一個(gè)商和余數(shù),} *如此進(jìn)行,直到商為零時(shí)為止,*然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,*后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位,依次排列起來(lái) */ public String deimalBinary(int a){ } public int Calcute(String b){ } char[] Array=b.toCharArray();for(int i=0;i } if(Array[i]=='1'){ } counter+=1;return counter; //7.2)十進(jìn)制小數(shù)轉(zhuǎn)換為二進(jìn)制小數(shù)采用“乘2取整,順序排列” /*用2乘十進(jìn)制小數(shù),可以得到積,*將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,//8.矩陣運(yùn)算(加減乘)//矩陣運(yùn)算 *又得到一個(gè)積,再將積的整數(shù)部分取出,*如此進(jìn)行,直到積中的小數(shù)部分為零,*或者達(dá)到所要求的精度為止。 *然后把取出的整數(shù)部分按順序排列起來(lái),*先取的整數(shù)作為二進(jìn)制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。*/ import java.util.Scanner;public class Main { public static void main(String[] args){ int N1,M1,N2,M2,K;Scanner scan=new Scanner(System.in);N1=scan.nextInt();M1=scan.nextInt();int[][] a=new int[N1][M1];for(int i=0;i for(int j=0;j N2=scan.nextInt();M2=scan.nextInt();int[][] b=new int[N2][M2];for(int i=0;i { } b[i][j]=scan.nextInt();} K=scan.nextInt();if(K==1)//加法 { int[][] c=new int[N1][M1];for(int i=0;i } { for(int j=0;j } System.out.println();} } if(K==2)//減法 { int[][] c=new int[N1][M1];for(int i=0;i } for(int j=0;j for(int j:i){ System.out.print(j+” “);} System.out.println();} } if(K==3)//乘法 { int[][] c=new int[N1][M2];for(int i=0;i } { for(int j=0;j } for(int p=0;p c[i][j]+=a[i][p]*b[p][j];for(int[] i:c)for(int j:i){ System.out.print(j+” “);} System.out.println();} } } } 9.//保留確定位數(shù)輸出 import java.text.DecimalFormat;//非四舍五入 DecimalFormat myformat=new DecimalFormat(”#0.00"); myformat.format(double num);//四舍五入,例為保留2位 double f=3.1415926; BigDecimal a=new BigDecimal(f); double af=a.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); DAY01 JavaSE第一天課程安排 ##### 目標(biāo):開發(fā)第一個(gè)JAVA小程序,了解掌握相關(guān)概念 ##### 內(nèi)容: 1、了解計(jì)算機(jī)相關(guān)概念 2、下載安裝Java開發(fā)環(huán)境 3、開發(fā)第一個(gè)Java程序 4、開發(fā)環(huán)境設(shè)置優(yōu)化 5、掌握J(rèn)ava程序的開發(fā)運(yùn)行流程 6、掌握J(rèn)ava相關(guān)概念 7、練習(xí) #####----------------計(jì)算機(jī)相關(guān)概念---------------- 1、計(jì)算機(jī) 1、機(jī)器 2、軟件 3、數(shù)據(jù)輸入----> 數(shù)據(jù)處理----> 數(shù)據(jù)輸出-----(重要不緊急) 2、軟件---- A、系統(tǒng)軟件-----操作系統(tǒng)---windows linux B、應(yīng)用軟件-----QQ、CF、計(jì)算器(數(shù)據(jù))軟件的功能: 數(shù)據(jù)輸入----> 數(shù)據(jù)處理----> 數(shù)據(jù)輸出 數(shù)據(jù)-----123、文件、文件夾----泛稱 3、計(jì)算機(jī)操作 物理操作 軟件操作 GUI/CUI GUI-----圖形用戶接口-----Graphics User Interface(常用)CUI-----命令行用戶接口---Command User Interface(了解)A、如何啟動(dòng)CUI 1、開始----> 附件-----> 命令提示符 2、開始----> 搜索CMD 3、win7----> shift 右擊----> 打開命令行 B、DOS命令----CUI和GUI有對(duì)應(yīng)關(guān)系 按規(guī)律記憶 電腦上數(shù)據(jù)分兩類: 切換盤符:盤符號(hào): 進(jìn)入文件夾: cd 文件夾名 cd 路徑名(進(jìn)入多級(jí)) 返回上一級(jí):cd..返回根目錄:cd 1、文件 增 -----notepad/write/edit 查 -----type 文件名---查看內(nèi)容 改 -----notepad/write/edit 刪 -----del 文件名稱 2、文件夾---dir 增----md XXX 查----dir--查看文件夾下所有文件 改----修改名稱 ren 刪----rd 要求: 1、簡(jiǎn)單調(diào)用----記住一個(gè) help 2、調(diào)用 time date 等命令 3、命令如何使用--命令 /? DOS啟動(dòng)程序 1、DOS下進(jìn)入程序所在路徑 2、敲入程序名稱 3、回車 需求:任意目錄下啟動(dòng)程序,notepad可以,QQ不可以 edit cd cd..cd help 命令 /?----------不重要緊急 4、鍵盤使用------------重要不緊急 快捷鍵: 全選: ctrl + A 撤銷: ctrl + Z 復(fù)制: ctrl + C 粘貼: ctrl + V 保存: ctrl + S------剪切: ctrl + X eclipse: ctrl + D----刪除一整行 5、計(jì)算機(jī)語(yǔ)言 6、軟件開發(fā) 使用計(jì)算機(jī)語(yǔ)言開發(fā)程序 學(xué)習(xí)計(jì)算機(jī)語(yǔ)言:語(yǔ)法 總結(jié):了解----- 緊急-----常見的DOS命令 ----------------下載安裝Java開發(fā)環(huán)境---------- 1、Java簡(jiǎn)介 A、詹姆斯 格斯林 B、開源----開放源代碼 C、ONE體系 Open Net Environment----開放的網(wǎng)絡(luò)環(huán)境 JavaSE-----桌面應(yīng)用程序開發(fā)----核心----就業(yè)機(jī)會(huì)不多 JavaEE-----企業(yè)的分布式系統(tǒng)開發(fā)1)----(N從右向左數(shù)的位數(shù)) 4、負(fù)數(shù)的轉(zhuǎn)換----(不不) -10 0000 0000 概念:原反補(bǔ) 正數(shù):源碼反碼補(bǔ)碼都一樣 負(fù)數(shù):原碼----標(biāo)志位是1,計(jì)數(shù)位和正數(shù)一樣 反碼----計(jì)數(shù)位取反,1變0,0變1 補(bǔ)碼----反碼基礎(chǔ)之上 +1 101 0111 1111 1111 1111 1111 1111 1111 1111----2^311 = 127 short-----2個(gè)字節(jié)16bit----最小值:-2^15=-32768 最大值:2^15* / % ++--(重點(diǎn))DAY03 一.算數(shù)運(yùn)算符: 1.+ 2.- 3.* 4./ / 3 : 3 10 / 0 : 運(yùn)行時(shí)異常; 10.0 / 0 :Infinity(無(wú)窮)不是異常 5.% % 3 : 1 10 % 0 : 運(yùn)行時(shí)異常 10.0 % 0 : NaN(Not A Number)不是異常-10 %-3 :-1 10 % 3 :1-10 % 3:-1 10 %-3:1 6.++: 7.--: 如果表達(dá)式中,只做++或--一件事情,那么前++/--和后++/--效果一樣的; 但如果表達(dá)式中做多件事情: 前++/--:先自增/自減,然后再參與表達(dá)式的其它運(yùn)算; 后++/--:先參與表達(dá)式的運(yùn)算,然后在自增/自減; 二.賦值運(yùn)算符 1.=:執(zhí)行順序,從右至左,并且最后返回變量; 2.+=: 3.-=: 4.*=: 5./=: 6.%=: 特點(diǎn):帶隱式強(qiáng)制轉(zhuǎn)換; byte b1 = 10;b1 = b1 + 20;//編譯錯(cuò)誤 b1 += 20;//OK的-->b1 =(byte)(b1 + 20);三.關(guān)系運(yùn)算符: 1.==:判斷是否相等 2.!=:判斷是否不等; 3.<:左操作數(shù)是否小于右操作數(shù); 4.>:左操作數(shù)是否大于右操作數(shù); 5.<=:左操作數(shù)是否小于或者等于右操作數(shù); 6.>=:左操作數(shù)是否大于或者等于右操作數(shù); 四.邏輯運(yùn)算符: &&、||和&、|的區(qū)別: 1.邏輯&&和||具有短路行為,一旦確定整個(gè)表達(dá)式的結(jié)果,那么將不再執(zhí)行剩余表達(dá)式; 1.&&(語(yǔ)意:并且):兩邊都為true,結(jié)果為:true; 2.||(語(yǔ)意:或者):有一邊為true,結(jié)果為true;3.!(語(yǔ)意:不是):!true:false;!false:true 位運(yùn)算符: 4.&(并且):結(jié)果同&& 5.|(或者):結(jié)果同|| DAY04 一.運(yùn)算符: 1.位運(yùn)算符: 1).<<(左移): 2).>>(有符號(hào)右移): 3).>>>(無(wú)符號(hào)右移)4).&(按位與):兩位都是1,結(jié)果為1; 5).|(按位或):有1位為1,結(jié)果為1; 6).^(按位異或):兩位相同結(jié)果為0,否則為1; 7).~(取反):1變0,0變1 2.位運(yùn)算符的考點(diǎn): 1).高效的計(jì)算某數(shù) * 2 : << 2).高效的計(jì)算某數(shù) / 2 : >> 3).&、|同&&、||的區(qū)別: 邏輯與&&、||:具有短路行為; 4).將兩個(gè)變量的值交換:三次異或; 3.三目運(yùn)算符: 條件表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2; 二.鍵盤錄入: 步驟: 1.import java.util.Scanner;2.Scanner sc = new Scanner(System.in);3.int : int num = sc.nextInt(); double : double d = sc.nextDouble(); String : String s = sc.next();三.選擇結(jié)構(gòu): 1.if語(yǔ)句: 1)格式1: if(條件表達(dá)式){ } 注意:如果if體內(nèi)只有一條語(yǔ)句,可以省略大括號(hào),但不建議; 2)格式2: if(條件表達(dá)式){ //為true,執(zhí)行這里 }else{ } //為false,執(zhí)行這里 3)格式3: if(條件表達(dá)式){ }else if(條件表達(dá)式2){ }else if(條件表達(dá)式3){ }else{ } 2.switch語(yǔ)句: 1).格式: switch(表達(dá)式){ } case 值1: //代碼 break;case 值2: //代碼 break;default: //代碼 break;2).注意事項(xiàng): 1.“表達(dá)式”可以產(chǎn)生的值:byte,short,int,char,枚舉(JDK5以后),String(JDK7以后)2.case語(yǔ)句后跟“常量表達(dá)式”,不能是“變量”;而且不能出現(xiàn)相同的常量值; 3.break;語(yǔ)句“不是必須的”。如果不寫,如果一旦case相應(yīng)的值成功,但內(nèi)部沒(méi)有break語(yǔ)句,那么將會(huì)無(wú)條件(不再進(jìn)行case匹配)的繼續(xù)向下執(zhí)行其它c(diǎn)ase中的語(yǔ)句,直到遇到break;語(yǔ)句 或者到達(dá)switch語(yǔ)句結(jié)束。4.多個(gè)case之間,沒(méi)有順序關(guān)系; 5.default語(yǔ)句“不是必須的”??梢圆粚?,它就相當(dāng)于多重if語(yǔ)句中最后的else。6.default語(yǔ)句和case語(yǔ)句“沒(méi)有順序關(guān)系”。 DAY05 一.while循環(huán): while(條件表達(dá)式){ } 二.do_while循環(huán): do{ }while(條件表達(dá)式);三.for循環(huán): for(定義循環(huán)變量表達(dá)式 ; 條件表達(dá)式 ;增量表達(dá)式){ } 說(shuō)明: 1.三個(gè)表達(dá)式都不是必須的;但分號(hào)必須要寫; 2.執(zhí)行順序: 1).定義循環(huán)變量表達(dá)式; 2).條件表達(dá)式;3).進(jìn)入循環(huán); 4).增量表達(dá)式; 5).條件表達(dá)式; 6).進(jìn)入循環(huán) 7).增量表達(dá)式......四.三種循環(huán)的區(qū)別: 1.只有do_while循環(huán)是先無(wú)條件的進(jìn)入循環(huán)體執(zhí)行一次,然后再判斷; while和for循環(huán)都先判斷,后進(jìn)入循環(huán)體; 2.一般對(duì)于有明顯的遍歷范圍的,建議首選for循環(huán)。 對(duì)于沒(méi)有明顯遍歷范圍的,一般使用while。 對(duì)于循環(huán)體中的內(nèi)容,如果需要先執(zhí)行一次,再判斷,那么可以使用do_while DAY06 一.方法: 1.方法的作用:代碼復(fù)用; 2.方法定義的格式: 修飾符 返回值類型 方法名([形參列表]){ } 修飾符:目前只需要寫:public static 返回值類型:可以是任何的Java類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)。 如果沒(méi)有返回值,這里要寫void 方法名:自定義標(biāo)識(shí)符; 形參列表:可以沒(méi)有,但是一定寫一對(duì)小括號(hào)。 如果有,每個(gè)形參是由:數(shù)據(jù)類型 形參名 多個(gè)形參,中間用逗號(hào)隔開; 3.方法內(nèi),可以寫什么? 1).定義變量; 2).if語(yǔ)句,switch語(yǔ)句; 3).各種循環(huán)語(yǔ)句; 總之:除了不能定義方法,其它都可以; 4.方法的注意事項(xiàng): 1).方法不調(diào)用不執(zhí)行;2).方法與方法是平級(jí)關(guān)系,不能嵌套定義;3).方法定義的時(shí)候參數(shù)之間用逗號(hào)隔開;4).方法調(diào)用的時(shí)候不用在傳遞數(shù)據(jù)類型;5).如果方法有明確的返回值,一定要有return帶回一個(gè)值;5.方法的重載: 1).在一個(gè)類中,可以定義多個(gè)同名的方法,但形參列表不能完全相同; 2).方法重載,跟返回值類型無(wú)關(guān);跟形參名無(wú)關(guān); 二.數(shù)組: 1.一維數(shù)組: 1).定義的格式: 1.動(dòng)態(tài)初始化:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];2.靜態(tài)初始化: 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{值1,值2,值3,.....,值n}; 數(shù)據(jù)類型[] 數(shù)組名 = {值1,值2,值3.....值n};2).數(shù)組是“引用數(shù)據(jù)類型”,變量存儲(chǔ)的是“引用(地址)”; 3).當(dāng)new(實(shí)例化)一個(gè)數(shù)組對(duì)象時(shí),其“值”的空間是在堆中分配的,對(duì)于各種數(shù)據(jù)類型,都會(huì)分配一個(gè) 默認(rèn)值: 整數(shù):0 小數(shù):0.0 字符:'u0000' 布爾:false String:null 其它引用類型:null 4).數(shù)組的訪問(wèn)方式:使用:數(shù)組名[索引] DAY07 一.二維數(shù)組: 1.定義的格式: 數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[第一維的長(zhǎng)度][第二維的長(zhǎng)度];左邊也可以寫成: 數(shù)據(jù)類型 數(shù)組名[][] 數(shù)據(jù)類型[] 數(shù)組名[] 數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[][]{{值1,值2},{值3,值4},{值5,值6,值7}};數(shù)據(jù)類型[][] 數(shù)組名 = {{值1,值2},{值3,值4},{值5,值6,值7}};二.方法的值傳遞和引用傳遞: 1.當(dāng)一個(gè)方法接收的是一個(gè)“基本數(shù)據(jù)類型”時(shí),調(diào)用方法傳遞實(shí)參時(shí),是將“值”復(fù)制到方法內(nèi); 在方法內(nèi),如修改其值,修改的只是“副本”,原值不會(huì)被改變; 2.當(dāng)一個(gè)方法接收的是一個(gè)“引用數(shù)據(jù)類型”是,調(diào)用方法傳遞實(shí)參時(shí),是將“引用”復(fù)制到方法內(nèi); 在方法內(nèi),是可以通過(guò)這個(gè)引用修改“堆”空間的內(nèi)容,即使方法結(jié)束,修改會(huì)影響到原堆中的值; DAY08 一.類:是一組相關(guān)的“屬性”和“行為”的集合; 對(duì)象:是該類事物的具體體現(xiàn); 二.類和對(duì)象的關(guān)系: 1.現(xiàn)實(shí): 類 對(duì)象 貓 波斯貓 折耳貓 加菲貓 --------- 狗 金毛 藏獒 沙皮 2.代碼: 類 對(duì)象 Cat c1 = new Cat();c1.name = “波斯貓”;class Cat{ } String name;int age;c1.age = 2; ----Cat c2 = new Cat();c2.name = “折耳貓”;c2.age = 3;----------------------------class Dog{ } Dog d1 = new Dog();d1.name = “金毛”;String name;int age;d1.age = 2; ----Dog d2 = new Dog();d2.name = “藏獒”;d2.age = 3; 三.類的定義: 1.使用關(guān)鍵字:class(注意小寫)2.一個(gè)java源文件中: 1).如果定義多個(gè)類,但只有一個(gè)是public的;而且源文件名必須與這個(gè)public的類名一致; 2).如果定義多個(gè)類,可以沒(méi)有public類;源文件名沒(méi)有一致性要求; 3).main()方法不是必須放在public類中; 3.類中可以定義什么: 1).成員變量: A.可以是基本數(shù)據(jù)類型,也可以是任何引用數(shù)據(jù)類型; B.可以顯示初始化; class Student{ } String name = “張三”;int age = 20;C.可以隱式初始化; 整型:0 浮點(diǎn):0.0 字符:'u0000' 布爾:false 引用類型:null 2).成員方法: A.可以有參數(shù),可以沒(méi)參數(shù); 可以有返回值,可以沒(méi)有返回值; B.方法的“形參”可以是任何Java類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)C.方法的“返回值”可以是任何Java類型(基本數(shù)據(jù)類型、引用數(shù)據(jù)類型)D.一個(gè)類中可以定義多個(gè)同名的方法,但形參列表不完全相同,叫:方法的重載; 3).內(nèi)部類(后面講); 4.成員變量和局部變量的區(qū)別: 1).成員變量: A.定義在“類體”中;可以是任何數(shù)據(jù)類型; B.會(huì)被自動(dòng)初始化; class Student{ } String name;void show(){ } System.out.println(“我叫:” + num); //打?。何医校簄ull C.當(dāng)實(shí)例化對(duì)象后,被存儲(chǔ)在“堆”中; D.當(dāng)“對(duì)象”不被使用(沒(méi)有任何引用),并被垃圾回收器回收時(shí)被清理; 2).局部變量: A.定義在某個(gè)方法、或其它代碼塊中; B.必須顯示初始化,否則不能訪問(wèn)其值; class Student{ void show(){ String name;System.out.println(“我叫:” + name); //編譯錯(cuò)誤。局部變量必須顯示初始化才能訪問(wèn)其值; } } name = “張三”;//OK??梢员毁x值。 C.當(dāng)方法或其它代碼塊被執(zhí)行時(shí),基本數(shù)據(jù)類型的“值”和引用數(shù)據(jù)類型的“引用”都是存儲(chǔ)在“棧”中; D.當(dāng)方法或代碼塊執(zhí)行完畢時(shí),會(huì)被立即清理; 四.對(duì)象的使用: 1.創(chuàng)建對(duì)象使用new關(guān)鍵字;會(huì)在堆中分配內(nèi)存空間; 格式: 類名 變量名 = new 類名();2.一個(gè)類可以創(chuàng)建多個(gè)對(duì)象; 3.每個(gè)“對(duì)象”的“成員變量”在“堆”中都有一份獨(dú)立的空間; 每個(gè)“對(duì)象”的“成員方法”被存儲(chǔ)在“方法區(qū)”中,多個(gè)對(duì)象只有一個(gè)“方法空間”; 4.對(duì)象的“引用(地址)”被存儲(chǔ)在“?!敝?; 五.方法的形參: 1.可以是“基本數(shù)據(jù)類型”: 1).調(diào)用時(shí),必須傳遞此類型的“值”; 2).調(diào)用時(shí),是將值復(fù)制一份到方法內(nèi)部; 3).在方法內(nèi),使用形參接收此值的副本; 4).在方法內(nèi),如果更改此值,對(duì)原值沒(méi)有影響; int a = 10;show(a);System.out.println(a);//10---public void show(int n){//n = 10 } n = 20;//對(duì)原來(lái)的a的值是沒(méi)有影響的; 2.可以是“引用數(shù)據(jù)類型”: 1).調(diào)用時(shí),必須傳遞此類型的“引用”; 2).調(diào)用時(shí),是將“引用(地址)”復(fù)制一份到方法內(nèi)部; 3).在方法內(nèi),使用形參接收此“引用”的副本; 4).在方法內(nèi),如果通過(guò)此引用更改堆中的值,對(duì)原堆中的值將會(huì)產(chǎn)生影響; int[] arr = {14,324,435};//arr = 0x2233 show(arr);//show(0x2233)System.out.println(arr[0]);//1000 ----public void show(int[] array){//array = 0x2233 } array[0] = 1000;六.匿名對(duì)象: 1.匿名對(duì)象:沒(méi)有名字的對(duì)象:new Student();2.匿名對(duì)象的兩種使用情況: 1).對(duì)象調(diào)用方法僅僅一次的時(shí)候:new Student().show();2).作為實(shí)際參數(shù)傳遞:printStudent(new Student());七.封裝: 1.直接對(duì)外部暴露成員變量是很不安全的,這時(shí)可以將成員變量“私有化”,對(duì)外提供公有的 get和set方法; 2.封裝的好處: 1)隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問(wèn)方式 2)提高了代碼的復(fù)用性 3)提高安全性。 3.封裝的原則: 1)將不需要對(duì)外提供的內(nèi)容都隱藏起來(lái)。2)把屬性隱藏,提供公共方法對(duì)其訪問(wèn)。 八.private關(guān)鍵字: 1.是一種“訪問(wèn)修飾符”(將在day10講到); Java中一共有四種訪問(wèn)修飾符:從寬到窄:public,protected,(默認(rèn)),private 2.用于修飾“成員變量”和“成員方法”; 3.被private修飾的成員,只能在類的內(nèi)部被其它成員訪問(wèn)。在類外部無(wú)法訪問(wèn); 九.this關(guān)鍵字: 1.每個(gè)類都有一個(gè)“隱式”的變量:this; 2.它是在實(shí)例化對(duì)象時(shí),由虛擬機(jī)自動(dòng)賦值的,會(huì)被自動(dòng)賦值為當(dāng)前對(duì)象的“引用”。 所以每個(gè)對(duì)象內(nèi)的this變量的值是不同的; 3.this關(guān)鍵字可以調(diào)用本對(duì)象的“成員屬性”、“成員方法”、“構(gòu)造方法”; 4.以下情況必須顯示的使用this: 1).“局部變量”覆蓋“成員變量”時(shí),可以使用this顯示的訪問(wèn)被覆蓋的“成員變量”; 否則訪問(wèn)的是“局部變量”; 2).在一個(gè)構(gòu)造方法中調(diào)用本類的其它構(gòu)造方法;this()或this(實(shí)參); DAY09 一.構(gòu)造方法: 1.當(dāng)實(shí)例化一個(gè)類的對(duì)象時(shí),JVM會(huì)自動(dòng)調(diào)用本類的一個(gè)方法:構(gòu)造方法; 2.定義類時(shí),可以不定義構(gòu)造方法,編譯器會(huì)自動(dòng)添加一個(gè)無(wú)參,什么都不做的構(gòu)造方法; 3.如果類中定義了構(gòu)造方法,編譯器就不會(huì)添加任何構(gòu)造方法了; 4.構(gòu)造方法的格式要求: 1).構(gòu)造方法名必須與類名一致; 2).構(gòu)造方法不能定義“返回值類型”,甚至是void; 3).構(gòu)造方法不能返回一個(gè)具體的值,但內(nèi)部可以使用return;語(yǔ)句; 注意: 1).以下代碼可以編譯通過(guò): class Student(){ } public void Student(){ } //普通成員方法,不是構(gòu)造方法; 2).以下代碼不能通過(guò)編譯: class Student(){ public student(){ } //構(gòu)造方法必須同類名一致,包括大小寫; } 5.一個(gè)類中可以定義多個(gè)“構(gòu)造方法”,但每個(gè)構(gòu)造方法的形參列表不能完全相同,叫:構(gòu)造方法的重載; 6.在一個(gè)構(gòu)造方法中可以調(diào)用另一個(gè)構(gòu)造方法,使用this關(guān)鍵字; 7.構(gòu)造方法可以調(diào)用“成員方法”,但“成員方法”不能調(diào)用構(gòu)造方法; 構(gòu)造方法也可以調(diào)用其它構(gòu)造方法; 二.static關(guān)鍵字: 1.static關(guān)鍵字:靜態(tài)的,全局的。 2.可以修飾“成員變量”和“成員方法”。被static修飾的成員變量存儲(chǔ)在方法區(qū)的“靜態(tài)存儲(chǔ)區(qū)”,只有 一份拷貝,被多個(gè)對(duì)象共享; 3.特點(diǎn): 1).隨著類的加載而加載 2).優(yōu)先于對(duì)象存在3).被類的所有對(duì)象共享 4).可以通過(guò)類名調(diào)用,也可以通過(guò)對(duì)象名調(diào)用; 4.static關(guān)鍵字注意事項(xiàng): 1).在靜態(tài)方法中是沒(méi)有this關(guān)鍵字的 2).靜態(tài)方法只能訪問(wèn)靜態(tài)的成員變量和靜態(tài)的成員方法 三.靜態(tài)變量和成員變量的區(qū)別: 1.所屬不同 1).靜態(tài)變量屬于類,所以也稱為為類變量 2).成員變量屬于對(duì)象,所以也稱為實(shí)例變量(對(duì)象變量)2.內(nèi)存中位置不同 1).靜態(tài)變量存儲(chǔ)于方法區(qū)的靜態(tài)區(qū) 2).成員變量存儲(chǔ)于堆內(nèi)存 3.內(nèi)存出現(xiàn)時(shí)間不同 1).靜態(tài)變量隨著類的加載而加載,隨著類的消失而消失 2).成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失 4.調(diào)用不同 1).靜態(tài)變量可以通過(guò)類名調(diào)用,也可以通過(guò)對(duì)象調(diào)用 2).成員變量只能通過(guò)對(duì)象名調(diào)用 DAY10 一.代碼塊(理解): 1.普通代碼塊(類體中):包含:局部代碼塊(方法或其它代碼塊內(nèi))2.靜態(tài)代碼塊:(類體中)作用: 1.初始化成員變量。執(zhí)行流程: 1.普通構(gòu)造代碼塊:每次實(shí)例化此類對(duì)象時(shí),會(huì)被執(zhí)行。它會(huì)先于“構(gòu)造方法”被執(zhí)行; 2.靜態(tài)代碼塊:第一次實(shí)例化此類對(duì)象時(shí); 3.靜態(tài)代碼塊-->普通構(gòu)造代碼塊-->構(gòu)造方法: 二.繼承(必須掌握): 1.使用關(guān)鍵字:extends 2.作用:代碼重用。為多態(tài)提供了前提; 3.this和super的區(qū)別: 1).this: 1).在任何類中使用; 2).存儲(chǔ)的是本類對(duì)象的引用; 3).可以訪問(wèn)本對(duì)象的成員變量、成員方法、構(gòu)造方法; 2).super: 1).在子類中使用; 2).存儲(chǔ)的是父類對(duì)象的引用; 3).可以訪問(wèn)父類對(duì)象的成員變量、成員方法、構(gòu)造方法; 4.類的初始化過(guò)程: 加載class文件 堆中開辟空間 變量的默認(rèn)初始化 變量的顯示初始化 構(gòu)造代碼塊初始化 構(gòu)造方法初始化 成員變量-->構(gòu)造代碼塊-->構(gòu)造方法 5.Java中繼承的特點(diǎn): 1).Java中只能單繼承; 2).Java中可以多級(jí)繼承; 6.繼承的好處和弊端: 好處: 1).代碼復(fù)用 2).為多態(tài)提供了前提; 弊端: 1).由于繼承,子類對(duì)父類產(chǎn)生了依賴; 三.方法重寫: 1.在子類中,定義跟父類一模一樣的方法,這叫:方法重寫; 2.重寫的規(guī)則: 1).返回值類型、方法名、形參列表:要完全一致; 2).子類的訪問(wèn)修飾符可以跟父類的相同,或更寬; 3.重寫的意義: 1).子類保留了父類的方法,具有了自己特有的行為; 4.重寫和重載的區(qū)別: 1).重寫:在子類中定義跟父類一模一樣的方法; 2).重載:在一個(gè)類中,定義:方法名相同,參數(shù)列表不完全相同的方法,叫:重載。跟返回值類型無(wú)關(guān); 四.final關(guān)鍵字: 1.可以修飾: 成員變量:表示其變量擁有最終的值,不能被更改,成為“常量”。修飾基本數(shù)據(jù)類型:表示其值不能被修改。修飾引用數(shù)據(jù)類型,表示地址不能被修改; 成員方法:表示最終的方法。不能被重寫; 類: 表示最終類。不能被繼承; 局部變量:表示其值不能改變;區(qū)分:基本類型和引用類型; 方法形參:表示其值不能改變;區(qū)分:基本類型和引用類型; DAY11 一.多態(tài): 1.父類的引用指向子類的對(duì)象; 2.多態(tài)前提和體現(xiàn) 1).有繼承關(guān)系 2).有方法重寫 3).有父類引用指向子類對(duì)象 3.多態(tài)的轉(zhuǎn)型: 1).自動(dòng)轉(zhuǎn)型:子類的引用轉(zhuǎn)為父類的引用;Person p = new Student();2).強(qiáng)制轉(zhuǎn)型:父類的引用轉(zhuǎn)為它所指向的子類對(duì)象的引用;Student stu =(Student)p;3).在進(jìn)行強(qiáng)制轉(zhuǎn)型前,為保證安全,可以使用instanceof關(guān)鍵字進(jìn)行判斷: if(p instanceof Student){ } Student stu =(Student)p;4.多態(tài)的好處: 1).提高了程序的維護(hù)性(由繼承保證)2).提高了程序的擴(kuò)展性(由多態(tài)保證) 5.多態(tài)的弊端: 1).不能訪問(wèn)子類特有功能(可以向下轉(zhuǎn)型)6.多態(tài)時(shí)的訪問(wèn)規(guī)則: 1).總體規(guī)則:訪問(wèn)的任何成員父類中必須要有,否則編譯錯(cuò)誤; 例如: class A{ } class B extends A{ } main(){ } A a = new B();System.out.println(a.n);//編譯錯(cuò)誤,父類中沒(méi)有n int n = 20;int num = 10;2).成員變量:如果子、父類中都有,訪問(wèn)的是“父類”的; class A{ } class B extends A { } main(){ } A a = new B();//多態(tài) System.out.println(a.num);//打印10; int num = 20;int num = 10; 普通方法:如果子、父類中都有(重寫),訪問(wèn)的是“子類”的; class A{ } class B extends A{ } main(){ } A a = new B();a.show(); //打?。築-->show()(訪問(wèn)的是子類的show());void show(){ } System.out.println(“B-->show()”);void show(){ } System.out.println(“A-->show()”); 靜態(tài)方法:如果子、父類中都有(重寫),訪問(wèn)的是“父類”的; 二.抽象類: 1.使用abstract關(guān)鍵字修飾;可以修飾“類”,可以修飾“成員方法”; abstract class A{ } abstract void show();2.“抽象類”的特點(diǎn): 1).不能被實(shí)例化,只能用于被繼承; 2).可以包含:成員變量、構(gòu)造方法、成員方法、抽象方法; 3).可以不包含抽象方法; 3.“抽象方法”的特點(diǎn): 1).沒(méi)有方法體;abstract void show();2).必須被子類重寫。除非子類也是個(gè)抽象類; 3.子類繼承抽象類使用關(guān)鍵字:extends,仍然是單繼承; 4.一個(gè)子類繼承 了一個(gè)抽象類,必須實(shí)現(xiàn)抽象類中所有的抽象方法; 否則子類也必須是抽象的。 例如: abstract class A{ } class B extends A{ } //編譯錯(cuò)誤。類B不是抽象的,繼承類抽象類必須重寫抽象類中的所有abstract void show();抽象方法。abstract class B extends A{ } //編譯通過(guò)。類B沒(méi)有重寫父類中的抽象方法,但類B是抽象的。 5.abstract關(guān)鍵字不能和哪些關(guān)鍵字共存: 1.private:抽象方法就是用來(lái)被子類重寫的,而私有方法不能被子類重寫; 2.final:抽象類和抽象方法就是用來(lái)被子類繼承和重寫的,而fianl類和final方法不能 被繼承和重寫; 3.static:static修飾的方法在沒(méi)有任何對(duì)象的情況下就會(huì)被分配內(nèi)存空間;而抽象方法 沒(méi)有方法體,無(wú)法分配空間; 三.接口: 1.使用interface關(guān)鍵字定義:只能修飾“類”: interface IA{ } 2.“接口”的特點(diǎn): 1).不能被實(shí)例化,沒(méi)有構(gòu)造方法,只能用于子類“實(shí)現(xiàn)”; 2).可以包含: A.成員變量(常量):隱式的定義為:public static final。 例如: interface IA{ } public int num1 = 10; //OK 上述三個(gè)關(guān)鍵字中任何一個(gè)都可以不寫,系統(tǒng)會(huì)自動(dòng)添加; static final int num2 = 20;//OK final int num3 = 30; //OK //OK public final num4 = 40;int num5 = 50; //OK B.抽象方法:隱式的定義為:public abstract??梢允÷裕到y(tǒng)會(huì)自動(dòng)添加 例如: interface IA{ } void show1(); //OK //OK;public void show2();abstract void show3();//OK;3).接口的功能是:擴(kuò)展功能; 3.子類實(shí)現(xiàn)接口使用關(guān)鍵字:implements 4.一個(gè)子類可以同時(shí)實(shí)現(xiàn)多個(gè)接口; interface IA{} interface IB{} class C implements IA,IB{ //OK的。} 5.子類實(shí)現(xiàn)接口時(shí),必須重寫接口中所有的抽象方法,而且必須是public的--因?yàn)?/p> 接口中抽象方法的定義隱式的是public的。 例如: interface IA{ } class B implements IA{ void show(){ } //編譯錯(cuò)誤。父接口的show()隱式的為public的,子類重寫時(shí)void show();必須是public的; } 5.接口編譯后一樣會(huì)生成.class文件。 四.多態(tài)的形式: 1.父類的多態(tài); 2.抽象類多態(tài); 3.接口多態(tài); 五.類與類,類與接口,接口與接口的關(guān)系: 1.類與類:繼承關(guān)系,關(guān)鍵字:extends,只能單繼承,但是可以多層繼承 2.類與接口:實(shí)現(xiàn)關(guān)系,關(guān)鍵字:implements,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)。還可以在繼承一個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口 3.接口與接口:繼承關(guān)系,關(guān)鍵字:extends,可以單繼承,也可以多繼承 例如: interface IA{} interface IB{} interface IC extends IA,IB{} //OK的 六.抽象類和接口的區(qū)別: 1.成員區(qū)別 1).抽象類 變量,常量;有抽象方法;抽象方法,非抽象方法 七.2).接口 常量;抽象方法 2.關(guān)系區(qū)別 1).類與類 繼承,單繼承 2).類與接口 實(shí)現(xiàn),單實(shí)現(xiàn),多實(shí)現(xiàn) 3).接口與接口 繼承,單繼承,多繼承 3.設(shè)計(jì)理念區(qū)別 1).抽象類 被繼承體現(xiàn)的是:”is a”的關(guān)系。共性功能 2).接口 被實(shí)現(xiàn)體現(xiàn)的是:”like a”的關(guān)系。擴(kuò)展功能 一.類名作為形參: 1.實(shí)參可以是: 1).此類對(duì)象的引用;2).null;3).此類子類對(duì)象的引用; 二.抽象類作為形參: 1.實(shí)參可以是: 1).此類子類對(duì)象的引用; 2).null; 三.接口作為形參: 1.實(shí)參可以是: 1).此接口子類對(duì)象的引用; 2).null; 四.類名作為返回值: 1.可以返回的類型: 1).此類對(duì)象的引用; 2).null; 3).此類子類對(duì)象的引用; 2.可以用什么類型接收: 1).使用此類類型; 2).不能使用某個(gè)子類類型接收; 五.抽象類作為返回值: 1.可以返回的類型: 1).null;2).此類子類對(duì)象的引用; 2.可以用什么類型接收: 1).使用此類類型;(多態(tài))2).不能使用某個(gè)子類類型接收; 六.接口作為返回值: 1.可以返回的類型: 1).null;2).此接口子類對(duì)象的引用; 2.可以用什么類型接收: 1).使用此接口類型;(多態(tài))2).不能使用某個(gè)子類類型接收; DAY12 一.包: 1.定義包使用關(guān)鍵字:package; 1).注意事項(xiàng): A.package語(yǔ)句必須是程序的第一條可執(zhí)行的代碼 B.package語(yǔ)句在一個(gè)java文件中只能有一個(gè) C.如果沒(méi)有package,默認(rèn)表示無(wú)包名 2.導(dǎo)入包使用關(guān)鍵字:import; 1).注意事項(xiàng): A.導(dǎo)入到最終的類; B.可以使用通配符:*,只統(tǒng)配包下的類,不包括子包下的其它類; C.在一個(gè)類文件中,可以有多條import語(yǔ)句; D.import語(yǔ)句必須在package語(yǔ)句之后,在定義類之前; 3.package,import,class有沒(méi)有順序關(guān)系? 有:package-->import-->class 二.訪問(wèn)修飾符: 1.用于限定“類”和“成員”被其它包下的其它類訪問(wèn)的; 2.四種訪問(wèn)修飾符: 1).public(公有):可以修飾類、成員??梢员蝗魏伟碌钠渌愒L問(wèn); 2).protected(保護(hù)):可以修飾成員??梢员煌碌钠渌愒L問(wèn)。如果在包外 只能被子類訪問(wèn); 3).(默認(rèn)):可以修飾類、成員。只能被包內(nèi)的其它類訪問(wèn); 4).private(私有):可以修飾成員。只能被類中的其它方法訪問(wèn); 3.類及成員可用的修飾符: 1).類: 默認(rèn),public,final,abstract 我們自己定義:public居多 2).成員變量: 四種權(quán)限修飾符均可,final,static 我們自己定義:private居多 3).構(gòu)造方法: 四種權(quán)限修飾符均可,其他不可 我們自己定義:public 居多 4).成員方法: 四種權(quán)限修飾符均可,fianl,static,abstract 我們自己定義:public居多 三.內(nèi)部類: 1.成員內(nèi)部類: 1).定義在類體中,作為類的成員; 2).可以使用同類“成員方法”相同的修飾符; 2.局部?jī)?nèi)部類: 1).定義在某個(gè)方法或代碼塊內(nèi)部; 2).不能使用“訪問(wèn)修飾符”,不能使用static修飾符;可以使用final和abstract 3).注意:局部?jī)?nèi)部類訪問(wèn)“局部變量”,要求局部變量必須是final的(常量);(重點(diǎn)) 3.匿名內(nèi)部類: 1).就是內(nèi)部類的簡(jiǎn)化寫法。2).前提:存在一個(gè)類或者接口 這里的類可以是具體類也可以是抽象類。 3).格式: new 類名或者接口名(){重寫方法;} 4).本質(zhì): 是一個(gè)繼承了類或者實(shí)現(xiàn)了接口的子類匿名對(duì)象 DAY14 一.Object類: 1.所有引用數(shù)據(jù)類型(包括類庫(kù)中的類,自定義類,數(shù)組)的超類; 2.定義在java.lang包,使用時(shí)不需要導(dǎo)包; 3.常用方法: public class Object{ public Object(){ 內(nèi)存的操作; } public int hashCode(){ //功能:用于哈希表結(jié)構(gòu)的鍵值 //默認(rèn)實(shí)現(xiàn):將此對(duì)象的地址轉(zhuǎn)換為int值返回; //此方法建議子類重寫; } public final Class getClass(){ //功能:獲取此對(duì)象的Class對(duì)象,在day27講解 //此方法不能被子類重寫 } public String toString(){ //功能:返回此對(duì)象的字符串表現(xiàn)形式; //默認(rèn)實(shí)現(xiàn):全名限定的類名 + @ + hashCode(無(wú)意義)//此方法建議子類重寫; } public boolean equals(Object obj){ //功能:將當(dāng)前對(duì)象與參數(shù)對(duì)象進(jìn)行比較 //默認(rèn)實(shí)現(xiàn):比較地址(跟==的結(jié)果是一樣的)//此方法建議子類重寫; } protected void finalize(){ //功能:當(dāng)前對(duì)象在被垃圾回收器回收前,由垃圾回收器自動(dòng)調(diào)用的方法。一般用于做些釋放 //默認(rèn)實(shí)現(xiàn):無(wú) //此方法根據(jù)需要由子類重寫(一般我們不用)} } protected Object clone(){ } //功能:復(fù)制此對(duì)象的副本; //默認(rèn)實(shí)現(xiàn):本地方法 //一般子類無(wú)需重寫; -- 二.java.lang.String類: 1.一個(gè)“字符串”對(duì)象; 2.一個(gè)“引用數(shù)據(jù)類型”; 3.使用方式: String s1 = “abc”;(常用、存儲(chǔ)的是常量池中的地址)或: String s1 = new String(“abc”);(存儲(chǔ)的是堆中的地址)(在內(nèi)存中創(chuàng)建了兩個(gè)對(duì)象:1.常量池:“abc”; class Student(extends Object){ } //默認(rèn)就擁有了Object類中可以繼承的方法; 2.堆:new String()) 4.特點(diǎn):其“值”的內(nèi)容不能改變(地址可以改變); String str = “你好”;str = “Java”;//原值被丟棄,存儲(chǔ)了新的地址; 5.常見面試題: String s1 = “abc”; String s2 = “abc”;System.out.println(s1 == s2);//true-------- String s1 = “Hello”;String s2 = “World”;String s3 = “HelloWorld”;String s4 = “Hello” + “World”;String s5 = s1 + s2;String s6 = “Hello” + s2;String s7 = s1 + “World”;String s8 = new String(“Hello”);System.out.println(s3 == s4);//true System.out.println(s3 == s5);//false System.out.println(s3 == s6);//false System.out.println(s3 == s7);//false System.out.println(s1 == s8);//false;6.構(gòu)造方法: public String():構(gòu)造一個(gè)空字符串。效果同String str = “";public String(byte[] bytes):使用一個(gè)byte[]數(shù)組構(gòu)造一個(gè)字符串; public String(byte[] bytes,int offset,int length):使用byte[]數(shù)組的一部分構(gòu)造一個(gè)字符串; public String(char[] value):使用一個(gè)字符數(shù)組構(gòu)造一個(gè)字符串; public String(char[] value,int offset,int count):使用字符數(shù)組的一部分構(gòu)造一個(gè)字符串; public String(String original):使用一個(gè)字符串構(gòu)造一個(gè)字符串; 7.常用方法:----注意:以下方法返回String的,都是生成一個(gè)新字符串,原字符串不變; 1).判斷功能: boolean equals(Object obj):重寫父類的方法。與參數(shù)字符串比較,如果包含一樣的字符序列則返回true,否則返回false; boolean equalsIgnoreCase(String str):作用與equals()相同;但此方法不區(qū)分大小寫; boolean contains(String str):判斷是否包含參數(shù)字符串; boolean startsWith(String str):判斷字符串是否以參數(shù)字符串開頭; boolean endsWith(String str):判斷字符串是否以參數(shù)字符串結(jié)尾; boolean isEmpty():判斷字符串是否是”空字符串“; ---- String s1 = ”“;String s2 = new String();String s3 = new String(”“);String s4 = null;String s5 = ”“;String s6;System.out.println(s1.isEmpty());System.out.println(s2.isEmpty());System.out.println(s3.isEmpty());// System.out.println(s4.isEmpty()); System.out.println(s1.equals(s2));System.out.println(s2.equals(s3));System.out.println(s3.equals(s1));System.out.println(s1 == s2);System.out.println(s2 == s3);System.out.println(s1 == s3);System.out.println(s1 == s5); System.out.println(s4 == s6);-----2).獲取功能: int length():獲取此字符串內(nèi)部的字符數(shù)量。(區(qū)分?jǐn)?shù)組的length屬性)char charAt(int index):獲取此字符串中index位置的字符char;int indexOf(int ch):從左向右查找,獲取字符ch在字符串中第一次出現(xiàn)的位置。如果不包含,則返回:false int indexOf(String str):獲取字符串str在此字符串中第一次出現(xiàn)的位置。int indexOf(int ch,int fromIndex):從fromIndex位置開始,查找字符ch。int indexOf(String str,int fromIndex):從fromIndex位置開始,查找str。 String substring(int start):從start(包含)開始,截取到此字符串的末尾;返回一個(gè)新字符串,原字符串不變; String substring(int start,int end):從start(包含)到end(不包含)截取字符串;返回一個(gè)新字符串,原字符串不變; 3).轉(zhuǎn)換功能: byte[] getBytes():將字符串轉(zhuǎn)換為一個(gè)byte[]數(shù)組。char[] toCharArray():將字符串轉(zhuǎn)換為一個(gè)char[]數(shù)組; static String valueOf(char[] chs):靜態(tài)方法,將一個(gè)char[]數(shù)組轉(zhuǎn)換為一個(gè)String static String valueOf(int i):靜態(tài)方法,將一個(gè)int轉(zhuǎn)換為一個(gè)String String toLowerCase():轉(zhuǎn)換為小寫; String toUpperCase():轉(zhuǎn)換為大寫; String concat(String str):將參數(shù)字符串添加到本字符串的末尾。 4).替換功能: String replace(char old,char new):使用new字符替換本字符串中的所有old字符; String replace(String old,String new):使用new字符串替換本字符串中的所有old字符串; 5).其它功能: String trim():去掉字符串兩邊的空格;不包括中間的。 int compareTo(String str):重寫Comparable接口的方法。按Unicode編碼表的順序與參數(shù)字符串比較; System.out.println(”a“.compareTo(”b“));//-1 System.out.println(”a“.compareTo(”a“));//0 System.out.println(”b“.compareTo(”a“));//1 int compareToIgnoreCase(String str):不區(qū)分大小寫的比較; DAY15 一.StringBuffer類: 1.String的緩沖池類。 2.String和StringBuffer的區(qū)別: 1).String:其”值“不可變; 2).StringBuffer:其”值"可變; 當(dāng)我們多次進(jìn)行字符串的拼接等操作時(shí),使用String會(huì)產(chǎn)生大量的垃圾空間。建議使用此類; 2.構(gòu)造方法: public StringBuffer():初始容量16 public StringBuffer(int capacity):初始容量capacity public StringBuffer(String str):使用String構(gòu)造一個(gè)StringBuffer。 3.添加功能: public StringBuffer append(String str):及各種重載的方法。將任何類型的參數(shù)添加到末尾; public StringBuffer insert(int offset,String str):將一個(gè)String插入到offset位置。原位置上的字符依次后移; 4.刪除功能: public StringBuffer deleteCharAt(int index):刪除index位置上的字符 public StringBuffer delete(int start,int end):刪除start到end-1處的所有字符; 5.替換功能: public StringBuffer replace(int start,int end,String str):將start到end處的所有字符替換為str;6.反轉(zhuǎn)功能: public StringBuffer reverse():反轉(zhuǎn)內(nèi)部字符串; 7.截取功能: public String substring(int start):截取從start到結(jié)尾,返回一個(gè)新字符串; public String substring(int start,int end):截取從start到end-1處的所有字符; 二.StringBuffer類和StringBuilder類的區(qū)別: 1.StringBuffer是線程安全的; 2.StringBuilder是線程不安全的; 三.Arrays類: 1.對(duì)數(shù)組操作的類,沒(méi)有構(gòu)造方法,內(nèi)部包含了大量靜態(tài)的工具方法; 2.常用方法: 1).public static String toString(int[] a):將int[]數(shù)組轉(zhuǎn)換為String的表示形式; 2).public static void sort(int[] a):升序排序int[]數(shù)組; 3).public static int binarySearch(int[] a,int key):二分查找int[]數(shù)組中的key值; 四.包裝類: 基本數(shù)據(jù)類型 byte short int long char float 包裝類型 Byte Short Integer Long Character Float Double Boolean double boolean java重要知識(shí)點(diǎn)總結(jié)如下: 1,抽象,封裝,繼承,多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)中得四個(gè)特點(diǎn).2,面向?qū)ο蟮密浖_發(fā)大體分為:面向?qū)ο蟮姆治?,面向?qū)ο蟮脑O(shè)計(jì),面向?qū)ο蟮膶?shí)現(xiàn).可概括為如下過(guò)程:分析用戶需求,從問(wèn)題中抽取對(duì)象模型;細(xì)化模型,設(shè)計(jì)類,包括類的屬性和類間的 相互關(guān)系,同時(shí)觀察是否有可以直接引用的已有類或部件;選定一種面向?qū)ο蟮木幊陶Z(yǔ)言,具體編碼實(shí)現(xiàn) 上一階段類的設(shè)計(jì),并在開發(fā)過(guò)程中引入測(cè)試,完善整個(gè)解決方案.3,面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn)是:可重用性,可擴(kuò)展性,可管理性.4,類的定義:class前的修飾符分為訪問(wèn)控制符和非訪問(wèn)控制符兩大類.訪問(wèn)控制符包括public和private.非訪問(wèn)控制符包括abstract(抽象),final(最終).5,final類是最終類,是不能有子類的類.abstract和final不能同時(shí)修飾一個(gè)類,因?yàn)槌橄箢惐旧頉](méi)有具體對(duì)象,需要派生出子類后在創(chuàng)建子類的對(duì)象.而最終類不可能有子類.6,創(chuàng)建對(duì)象的格式為: 類名 對(duì)象名=new 構(gòu)造方法(參數(shù));注意前面是類名后面是構(gòu)造方法.注意構(gòu)造方法沒(méi)有返回類型,也不能寫void,主要用于完成類對(duì)象的初始化工作,一般不能直接由編程 直接調(diào)用,而是用new運(yùn)算符來(lái)調(diào)用.7,如果class前面由public修飾符,則默認(rèn)構(gòu)造方法的前面也應(yīng)該有public修飾符.8,類中有static修飾的域或方法,可用類名或?qū)ο竺L問(wèn),否則只能用對(duì)象名訪問(wèn).9,修飾域的訪問(wèn)控制符可以是:public,private,protected,private protected.非訪問(wèn)控制符可以是: static,final,volatile(易失域) 10,類變量的最本質(zhì)的特點(diǎn)是:他們是類的域,不屬于任何一個(gè)類的具體對(duì)象實(shí)例.不是保存在某個(gè)對(duì)象實(shí)例的內(nèi)存空間中,而是保存在類的內(nèi)存區(qū)域的公共存儲(chǔ)單元中.11,局部變量是在方法體內(nèi)聲明的,只有當(dāng)方法被調(diào)用時(shí)他們才存在,因而只能在本方法內(nèi)使用,不存在訪問(wèn)控制符,也不能聲明為靜態(tài)變量(static),但可以聲明為final變量.局部變量必須初始化.12,修飾方法的訪問(wèn)控制符可以是:public,private,protected,private protected,修飾方法的非訪問(wèn)控制符可以是:static,final,abstract,native(本地方法),synchronized(同步方法)。 13,用static修飾的變量或方法都為類成員,類成員可以用類名或?qū)嵗L問(wèn),實(shí)例成員只能用實(shí)例名來(lái)訪問(wèn)。 14,如果一個(gè)類中含有抽象方法,則此類必須為抽象類,如果抽象類的子類不為抽象類,則子類必須實(shí)現(xiàn)父類的所有抽象方法。抽象方法不能用靜態(tài)方法和最終方法。抽想方法只有函數(shù)頭的聲明,而用分號(hào)來(lái)替代方法體,沒(méi)有大括號(hào)。如abstract void abstractmethod(); 15,this變量用在一個(gè)方法的內(nèi)部,指向當(dāng)前對(duì)象,當(dāng)前對(duì)象指的是調(diào)用當(dāng)前正在執(zhí)行的方法的那個(gè)對(duì)象。super變量是直接指向父類的構(gòu)造方法,用來(lái)引用父類種的變量和方法。(由于他們指的是對(duì)象,所以不能通過(guò)它來(lái)引用類變量和類方法) 16,如果要引用一個(gè)包中的多個(gè)類,可以用星號(hào)來(lái)代替。使用星號(hào)只能表示本層次的所有類,而不包括子層次下的類。所以經(jīng)常需要用兩條語(yǔ)句來(lái)引入兩個(gè)層次的類:import java.awt.*;import java.awt.event.*; 17,訪問(wèn)修飾符: --類中限定為public的成員可以被所有的類訪問(wèn)。 --類中先定位private的成員只能被這個(gè)類本身訪問(wèn)。同一個(gè)類的不同對(duì)象可以訪問(wèn)對(duì)方的private域變量或調(diào)用對(duì)方的域方法,這是因?yàn)樵L問(wèn)保護(hù)控制在類的級(jí)別上,而不是對(duì)象的級(jí)別上。 --類中限定為protected的成員可以被這個(gè)類本身,它的子類(包括同一個(gè)包中和不同包中的子類),以及同一個(gè)包中的其他類訪問(wèn)。 --用private protected修飾的成員可以被該類本身訪問(wèn),也可以被該類的所有子類訪問(wèn)。 --默認(rèn)訪問(wèn)控制符規(guī)定只能被同一個(gè)包中的類訪問(wèn)和引用,而不能被其他包的類訪問(wèn)。即他的訪問(wèn)權(quán)限是friendly。 18,注意: ----abstract和private,static,final,native不能并列修飾同一個(gè)方法。 ----abstract類中不能有private修飾的域和方法 ----static方法不能處理非static的域。 19,重載方法的參數(shù)必須不同,或者是參數(shù)個(gè)數(shù)不同,或者是參數(shù)類型不同。重載的多個(gè)方法必須返回相同的數(shù)據(jù)類型。 20,在java中,一個(gè)類獲取某一接口定義的功能并不是通過(guò)直接繼承這個(gè)接口的屬性和方法來(lái)實(shí)現(xiàn)的。因?yàn)榻涌谥械膶傩远际浅A浚涌诘姆椒ǘ际菦](méi)有方法體的抽象方法,沒(méi)有具體定義操作。 原文[2007年03月25日 星期日 上午 03:04] Java發(fā)展到現(xiàn)在,按應(yīng)用來(lái)分主要分為三大塊:J2SE,J2ME和J2EE。這三塊相互補(bǔ)充,應(yīng)用范圍不同。 J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程; J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機(jī)和PDA的編程; J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。先學(xué)習(xí)j2se 要學(xué)習(xí)j2ee就要先學(xué)習(xí)j2se,剛開始學(xué)習(xí)j2se先建議不要使用IDE,然后漸漸的過(guò)渡到使用IDE開發(fā),畢竟用它方便嘛。學(xué)習(xí)j2se推薦兩本書,《java2核心技術(shù)一二卷》,《java編程思想》,《java模式》。其中《java編程思想》要研讀,精讀。這一段時(shí)間是基本功學(xué)習(xí),時(shí)間會(huì)很長(zhǎng),也可能很短,這要看學(xué)習(xí)者自身水平而定。 不要被IDE糾纏 在學(xué)習(xí)java和j2ee過(guò)程中,你會(huì)遇到五花八門的IDE,不要被他們迷惑,學(xué)JAVA的時(shí)候,要學(xué)語(yǔ)言本身的東西,不要太在意IDE的附加功能,JAVA編程在不同IDE之間的轉(zhuǎn)換是很容易的,過(guò)于的在意IDE的功能反而容易耽誤對(duì)語(yǔ)言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加強(qiáng)版WSAD。用好其中一個(gè)就可以了,推薦從eclipse入手j2ee。因?yàn)镴builder更適合于寫j2se程序。 選擇和學(xué)習(xí)服務(wù)器使用配置 當(dāng)你有了j2se和IDE的經(jīng)驗(yàn)時(shí),可以開始j2ee的學(xué)習(xí)了,web服務(wù)器:tomcat,勿庸置疑,tomcat為學(xué)習(xí)web服務(wù)首選。而應(yīng)用服務(wù)器目前主要有三個(gè):jboss、weblogic、websphere。有很多項(xiàng)目開始采用jboss,并且有大量的公司開始做websphere或weblogic向jboss應(yīng)用服務(wù)器的移植(節(jié)省成本),這里要說(shuō)的是,學(xué)習(xí)tomcat和jboss我認(rèn)為是首選,也是最容易上手的。學(xué)習(xí)服務(wù)器使用配置最好去詢問(wèn)有經(jīng)驗(yàn)的人(有條件的話),因?yàn)樗麄兓蛟S一句話就能解決問(wèn)題,你自己上網(wǎng)摸索可能要一兩天(我就干過(guò)這種傻事),我們應(yīng)該把主要時(shí)間放在學(xué)習(xí)原理和理論上,一項(xiàng)特定技術(shù)的使用永遠(yuǎn)代替不了一個(gè)人的知識(shí)和學(xué)問(wèn)。 學(xué)習(xí)web知識(shí) 如果你是在做電子商務(wù)網(wǎng)站等時(shí),你可能要充當(dāng)幾個(gè)角色,這是你還要學(xué)習(xí): html,可能要用到dreamwave等IDE。 Javascript,學(xué)會(huì)簡(jiǎn)單的數(shù)據(jù)校驗(yàn),數(shù)據(jù)聯(lián)動(dòng)顯示等等 J2eeAPI學(xué)習(xí) 學(xué)習(xí)j2eeAPI和學(xué)習(xí)服務(wù)器應(yīng)該是一個(gè)迭代的過(guò)程。 先學(xué)習(xí)jsp和servlet編程,這方面的書很多,我建立看oreilly公司的兩本《jsp設(shè)計(jì)》和《java servlet編程》,oreilly出的書總是那本優(yōu)秀,不得不佩服。 學(xué)習(xí)jdbc數(shù)據(jù)庫(kù)編程,j2ee項(xiàng)目大多都是MIS系統(tǒng),訪問(wèn)數(shù)據(jù)庫(kù)是核心。這本應(yīng)屬于j2se學(xué)習(xí)中,這里拿出來(lái)強(qiáng)調(diào)一下。 學(xué)習(xí)jndi api,它和學(xué)習(xí)ejb可以結(jié)合起來(lái)。 學(xué)習(xí)ejb api,推薦書《精通ejb》 經(jīng)過(guò)上面的這些的學(xué)習(xí),大概可以對(duì)付一般的應(yīng)用了。 有人說(shuō)跟著sun公司的《j2ee tutorial》一路學(xué)下來(lái),當(dāng)然也可以。 學(xué)習(xí)ejb設(shè)計(jì)模式和看代碼(最重要) 設(shè)計(jì)模式是練內(nèi)功,其重要性可以這么說(shuō)吧,如果你不會(huì)用設(shè)計(jì)模式的話,你將寫出一堆使用了ejb的垃圾,有慢又是一堆bug,其結(jié)果不如不用ejb實(shí)現(xiàn)(ejb不等于j2ee) 無(wú)論學(xué)習(xí)什么語(yǔ)言,都應(yīng)該看大量代碼,你看的代碼量不到一定數(shù)量,是學(xué)不好j2ee的目前有很多開源的工程可以作為教材: jive論壇 petstore sun公司 dune sun公司 等等,研讀一個(gè),并把它用到自己的工程中來(lái)。 J2ee其他學(xué)習(xí) 當(dāng)你漸漸對(duì)j2ee了解到一定深度時(shí),你要開始關(guān)注當(dāng)前領(lǐng)域中的一些技術(shù)變化,J2ee是一塊百家爭(zhēng)鳴的領(lǐng)域,大家都在這里提出自己的解決方案,例如structs,hiberate,ofbiz等等,學(xué)習(xí)這些東西要你的項(xiàng)目和目標(biāo)而定,預(yù)先補(bǔ)充一下未嘗不可,但不用涉及太深,畢竟學(xué)習(xí)原理和理論是最最重要的事。 目前常見j2eeAPI JavaServer Pages(JSP)技術(shù)1.2 Java Servlet技術(shù)2.3 JDBC API 2.0 Java XML處理API(JAXP)1.1 Enterprise JavaBeans技術(shù)2.0 Java消息服務(wù)(JMS)1.0 Java命名目錄接口(JNDI)1.2 Java事務(wù)API(JTA)1.0 JavaMail API 1.2 JavaBeans激活架構(gòu)(JAF)1.0 J2EE連接器體系結(jié)構(gòu)(JCA)1.0 Java認(rèn)證和授權(quán)服務(wù)(JAAS)1.0 學(xué)習(xí)上面的某些API要以你的項(xiàng)目而定,了解所有他們總之是有好處的上面印證了大家說(shuō)的一句話,java語(yǔ)言本身不難學(xué),但是技術(shù)太多,所以學(xué)java很費(fèi)勁。回想一下,基本上每個(gè)初學(xué)者,在剛學(xué)習(xí)java的時(shí)候可能都會(huì)問(wèn)別人這么一句話,你怎么知道的哪個(gè)方法(api)在哪個(gè)包里的?呵呵,無(wú)他,唯手熟爾。 2008年10月29日 星期三 下午 9:29第三篇:JAVA課程總結(jié)
第四篇:java知識(shí)點(diǎn)小結(jié)
第五篇:java個(gè)人小結(jié)(范文模版)