Java編程技術(shù)課件:02Java編程基礎(chǔ)(4學(xué)時)_第1頁
Java編程技術(shù)課件:02Java編程基礎(chǔ)(4學(xué)時)_第2頁
Java編程技術(shù)課件:02Java編程基礎(chǔ)(4學(xué)時)_第3頁
Java編程技術(shù)課件:02Java編程基礎(chǔ)(4學(xué)時)_第4頁
Java編程技術(shù)課件:02Java編程基礎(chǔ)(4學(xué)時)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2Java編程基礎(chǔ)2.1標識符與關(guān)鍵字2.2數(shù)據(jù)類型2.3運算符和表達式2.4包裝類2.5控制臺輸入輸出2.6控制語句2.7編程練習(xí)2.1標識符與關(guān)鍵字Java標識符是以字母、下劃線(_)或美元符號($)開頭;隨后跟隨字母、下劃線(_)、美元符號($)或數(shù)字。標識符是大小寫區(qū)別對待的。標識符未規(guī)定最大長度。下列標識符是有效的:identifier、userName、User_name、_sys_varl、$change、_3_、OK。下面的標識符是非法的:#name,25name,class,&time,if標識符不能是關(guān)鍵字,例如:this是一個關(guān)鍵字不能作為標識符。Java關(guān)鍵字注意:關(guān)鍵字和保留字都是小寫,如true、false。所有類型的長度和表示是固定的,不依賴執(zhí)行。無sizeof運算符。保留字2個:goto和const【Return】2.2數(shù)據(jù)類型8個true、false基本類型用法注意整數(shù)類型:

byte、short、int和long用法與C/C++相同。 如:17(十),017(八),0x17(十六),17L(長整型)浮點數(shù):

float和double用法與C/C++相同。 如:3.14、3.02E23、2.718F、123.4D 注意:

floata=3.4F;('F'不能丟:floata=3.4;×)

正確用法:doublea=3.4;√數(shù)據(jù)輸出格式的控制方法1:String.format("格式串",數(shù)值數(shù)據(jù))方法2:System.out.printf("格式串",數(shù)值數(shù)據(jù))示例:intn1=100;doubled1=123.456;System.out.println(String.format("%-5d,%.2f",n1,d1));System.out.printf("%05d,%.2f\n",n1,d1);boolean類型:boolean有兩個文字值,即true和false(小寫)。注意:數(shù)字值不能自動轉(zhuǎn)換為boolean。例如:

intflag=1; if(flag)//JavaError!butC/C++Correct

if(flag!=0)//OK,顯示寫出條件

booleanflag=true; if(flag)//OK,條件使用布爾值char類型:一個char代表一個16bit無符號的Unicode字符。一般用法:charch1='a',

ch2='\n';Unicode寫法:charch='\u0041';→字母“A”4個16進制數(shù)字以\u開頭Unicode編碼查詢://code/unicode/class/Unicode(統(tǒng)一碼)是一種在計算機上使用的字符編碼。它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求。字符檢測的方法已知charch='a';Character.isLetter(ch)--ch是否是字母Character.isDigit(ch)--ch是否是數(shù)字Character.isLetterOrDigit(ch)--ch是否是字母或數(shù)字Character.isWhitespace(ch)--ch是否是空格Character.isLowerCase(ch)--ch是否是小寫字母Character.isUpperCase(ch)--ch是否是大寫字母Character類符號常量:自定義符號常量:finaldoublePI=3.14159;系統(tǒng)提供的符號常量,如:Integer.MIN_VALUEInteger.MAX_VALUE變量初始化任何變量都必須經(jīng)初始化后才能被使用。...

intx=(int)(Math.random()*100);inty,z;if(x>50){y=9;}z=y+x;…ymaynothavebeeninitializeds注意當(dāng)一個對象被創(chuàng)建時,在方法外定義的變量(屬性)將被自動初始化。publicclasstest{

privateinti=100,j;privatebooleanf;publicvoiddisplay(){System.out.println("j="+(j=j+1));System.out.println("f="+f);}publicstaticvoidmain(Stringargs[]){

testt=newtest();t.display();}}輸出結(jié)果:j=1f=false實例變量在分配存儲單元的同時被下列值初始化:byte、short、int:0long:0L float:0.0f double:0.0dchar:'\u0000'(即Null)boolean:false所有引用類型:Null實例化后會自動初始化String類型String不是原始類型,而是一個類(class),它被用來表示字符序列(字符串)。字符本身符合Unicode標準。與C和C++不同,String不用'\0'作為結(jié)束。基本用法:直接賦值:Strings1="Hello",s2="Java";或者new一個String:Strings1=newString("Hello");字符串連接操作:Strings3=s1+s2;//字符串連接s3="HelloJava"inti=10;Stringstr="i="+i;//str的值為"i=10"說明:如果字符串與其他類型變量進行“+”運算,系統(tǒng)將自動將其他類型轉(zhuǎn)換為字符串。示例inta=1,b=2;Stringstr="hello";System.out.println(str+a+b);System.out.println(a+b+str);輸出結(jié)果:hello123helloString類常用方法創(chuàng)建新StringStringsubstring(intstart,intend):返回一個新串,它是原串中從start到end-1的一部分。StringtoLowerCase():返回一個新串,它將原串中的大寫字母變成小寫。StringtoUpperCase():返回一個新串,它將原串中的小寫字母變成大寫。Strings="Nowisthetimefordinner";則s.substring(1,3)="ow"注:字符串序號值從0開始。查找方法booleanendsWith(Strings):如原串以s串為結(jié)尾,則返回true。booleanstartsWith(Strings):如原串以s串為開始,則返回indexOf(Strings):返回串中第一次出現(xiàn)s串的序號值。intlastIndexOf(Strings):返回串中s串最后出現(xiàn)的序號值。如果沒有找到則返回-1Strings="Iamastudent";s.indexOf("stu")=7s.indexOf("you")=-1s.lastIndexOf("a")=5s.endsWith("ent")=true注:字符串序號值從0開設(shè)。比較方法booleanequals(Strings):如果原串與s串相等,則返回compareTo(Strings):進行字典序比較,如果原串小于s串則返回負數(shù);如果原串大于s串則返回正數(shù);如果原串等于s串則返回零。其它方法charcharAt(intindex):返回index處的字符。intlength():返回串的長度。特別提醒:字符串內(nèi)容的比較不能用==Strings="student";則s.length=7s.charAt(2)='u'Strings1="abc";Strings2="xyz";則pareTo(s2)=-23字符串equals和==操作以下輸出結(jié)果是什么?Strings1="abc";Strings2="abc";Strings3=newString("abc");Strings4=newString("abc");System.out.println(s1==s2);System.out.println(s1.equals(s2));System.out.println(s3==s4);System.out.println(s3.equals(s4));輸出結(jié)果:truetruefalsetrue字符串?dāng)?shù)值的轉(zhuǎn)換字符串→數(shù)值方法1:√parse方法常用 inti=Integer.parseInt("123"); doubled=Double.parseDouble("1.23");方法2:

inti=Integer.valueOf("123").intValue();

注意:字符串轉(zhuǎn)換成數(shù)值時對數(shù)據(jù)格式要求嚴格inti=Integer.parseInt("123.4");×intI=Integer.valueOf("123.4").intValue();×字符串?dāng)?shù)值的轉(zhuǎn)換(續(xù))數(shù)值→字符串方法1: Strings=String.valueOf(value);

其中value為任一種數(shù)字類型。方法2:

Strings=Integer.toString(123);

方法3:最直接

Strings=""+

value;其中value為任意一種數(shù)字類型。

字符數(shù)組字符串的轉(zhuǎn)換字符數(shù)組→字符串

例如:char[]c={'a','b','c'};

Stringstr=newString(c);√字符串→字符數(shù)組

例如:Stringstr="abc";

char[]

c=str.toCharArray();√System.out.print(c[1]);能用str[1]嗎示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {Strings1=newString("youareastudent");Strings2=newString("howareyou");if(【1】){//判斷s1與s2是否相同System.out.println("s1與s2相同");}else{System.out.println("s1與s2不相同");}Strings3=newString("22030219851022024");if(【2】){//判斷s3的前綴是否是“220302”System.out.println("吉林省的身份證");}

示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {Strings1=newString("youareastudent");Strings2=newString("howareyou");if(【1】){//判斷s1與s2是否相同System.out.println("s1與s2相同");}else{System.out.println("s1與s2不相同");}Strings3=newString("22030219851022024");if(【2】){//判斷s3的前綴是否是“220302”System.out.println("吉林省的身份證");}

示例(續(xù))Strings4=newString("cat"); Strings5=newString("dog"); if(【3】){//按字典序比較s4、s5

System.out.println("按字典序s4>=s5");

} else{ System.out.println("按字典序s4<s5");

} intposition=0; Stringpath="c:\\java\\jsp\\A.java"; //獲取path中最后出現(xiàn)目錄分隔符號的位置position=【4】;

System.out.println("c:\\java\\jsp\\A.java中最后出現(xiàn)\\的位置:"+position);示例(續(xù)) StringfileName=【5】;//獲取path中“A.java”子字符串

System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName); Strings6=newString("100"); Strings7=newString("123.678"); intn1=【6】;//將s6轉(zhuǎn)化成int型數(shù)據(jù)

doublen2=【7】;//將s7轉(zhuǎn)化成double型數(shù)據(jù)

doublen=n1+n2; System.out.println(【8】);//輸出n,保留2位小數(shù) Strings8=newString("ABCDEF"); System.out.println(【9】);//將s8轉(zhuǎn)化為小寫輸出System.out.println(【10】);//輸出s8的最后一個字符

}//endmain}//endclass【Return】2.3運算符和表達式運算符使用注意算術(shù)運算兩個整數(shù)類型的數(shù)據(jù)做除法時,結(jié)果只保留整數(shù)部分.如:3/2=1,

但是3.0/2=1.5自增與自減運算符只適用于變量.如10++;×%運算不僅能用于整型,也能用于浮點類型.如:

9%2=19.5%2=1.5

√關(guān)系運算關(guān)系表達式的運算結(jié)果是邏輯值:true、false(小寫).例如:inta=1,b=4;booleanc=a<b;c為true if(c)或if(!c)…//ok if(a)…//error:int到boolean不能自動轉(zhuǎn)換。 必須顯示指明,如if(a>0)則可以。

布爾邏輯運算只能是布爾量(true,false)參加運算,結(jié)果也是布爾型布爾量也可以:&、|、!、^(相當(dāng)于單個的位運算)&&、||具有短路效應(yīng): 例如:(m=a>b)&&(n=c>d) 如果m=false,則n=c>d不計算位運算<<:每左移一位,右邊補0,最高位移出丟棄例如:bytea=32;//a:00100000inti=a<<2;//a<<2:10000000i:0000000010000000bytej=(byte)(a<<2);j結(jié)果多少?>>:每右移一位,最高位由原來的最高位補充(正數(shù)補0,負數(shù)補1)>>>:0填充右移(無符號右移) 例如:inta=-1;a>>>=24;則a=?一般情況下:a<<n移位的結(jié)果是:a×2na>>n移位的結(jié)果是:a÷2n

類型轉(zhuǎn)換當(dāng)沒有信息丟失時,變量可被自動升級為一個較長的形式(如:int至long的升級)

longbigval=6; //6isaninttype,OKintsmallval=99L; //99Lisalong,errordoublez=12.414F; //12.414Fisfloat,OKfloatz1=12.414; //12.414isdouble,error類型轉(zhuǎn)換(續(xù))對+運算符來說,當(dāng)兩個操作數(shù)是原始數(shù)據(jù)類型時,其結(jié)果至少有一個int,并且有一個通過提升操作數(shù)到結(jié)果類型、或通過提升結(jié)果至一個較寬類型操作數(shù)而計算的值,這可能會導(dǎo)致溢出或精度丟失。例如:shorta,b,ca=1;b=2;c=a+b;上述程序會因為在操作short之前提升每個short至int而出錯。然而,如果c被聲明為一個int,或按如下操作進行類型轉(zhuǎn)換:c=(short)(a+b);則上述代碼將會成功通過。設(shè)計變量時要考慮好類型instanceof作用:測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數(shù)據(jù)。例如:Integerd=123;booleanisInt=dinstanceofInteger;//truebooleanisObj=dinstanceofObject;//true說明:Object是類層次結(jié)構(gòu)的根類,每個類都使用Object作為超類?!綬eturn】Java語言不把基本數(shù)據(jù)類型看作對象。8個基本數(shù)據(jù)類型都有相應(yīng)的包裝類。2.4包裝類√√包裝類(續(xù))包裝類都有自己的屬性和方法,例如Integer.parseInt()方法,Integer.MAX_VALUE屬性??梢酝ㄟ^將被包裹的值傳遞到合適的構(gòu)造函數(shù)中來構(gòu)造包裝類對象。例如:inta=100;Integeri=newInteger(a);//構(gòu)造包裝類對象可以通過intValue()方法將包裝類變成基本類型。例如:inttheInt=newInteger(200).intValue();

【Return】裝箱操作拆箱操作補充inta,b=1;Integeri=newInteger(10);a=newInteger(10);Integerj=b;a=j;2.5控制臺輸入輸出importjava.util.Scanner;//導(dǎo)入java包publicclasstest{publicstaticvoidmain(String[]args){finaldoublePI=3.14159;//符號常量

Scannersc=newScanner(System.in);//創(chuàng)建控制臺輸入對象System.out.print("請輸入圓的半徑=");doubler=sc.nextDouble();

//讀取一個double數(shù)據(jù)System.out.print("計算圓面積="+String.format("%.2f",PI*r*r)

); }}相應(yīng)的有:nextInt()、nextByte()、nextFloat()、nextLong()nextBoolean():獲取boolean數(shù)據(jù),如輸入true或false

nextLine():獲取字符串?dāng)?shù)據(jù)【Return】格式化數(shù)值數(shù)據(jù)的方法√2.6控制語句if…elseintx=2;if(x<2){x++;}else{x--;}System.out.println("x="+x);intx=2;inty=x<2?++x:--x;System.out.println("x="+x);switch語句switch(expr1){

caseexpr2:statements; break;caseexpr3:statements; break;default:statements; break;}如沒break語句,則程序的執(zhí)行將繼續(xù)到下一個case,而不檢查case表達式的值。expr1可以是int、byte,short或char類型;不允許使用浮點或long表達式。不允許有重復(fù)case值示例importjava.util.Scanner;publicclasstest{publicstaticvoidmain(String[]args){ System.out.print("請輸入成績=");

intscore=newScanner(System.in).nextInt();//連在一起寫

inta=score/10;

switch(a){ case10: case9:System.out.println(score+"優(yōu)秀"); break; case8:System.out.println(score+"良好"); break; case7:System.out.println(score+"中等"); break; case6:System.out.println(score+"及格"); break; default:System.out.println(score+"不及格"); break;

}}}while/do…while/forintx=1;while(x<10){System.out.println("x="+x);x++;}intx=1;do{System.out.println("x="+x);x++;}while(x<10);for(intx=1;x<10;x++){System.out.println("x="+x);}break、continue用法:break[標注];continue[標注];注:標注可標識控制需要轉(zhuǎn)換到的任何有效語句(塊)。標注用法標注:語句(塊)即在有效語句塊前加個標識符:break:強行退出一個循環(huán)publicclasstest{ publicstaticvoidmain(String[]args){ for(inti=1;true;i++){ if(i==5) break; System.out.println(i); } System.out.println("退出循環(huán)了!"); }}運行結(jié)果:1234退出循環(huán)了!continue:結(jié)束本次循環(huán),跳至下一次循環(huán);publicclasstest{ publicstaticvoidmain(Stringargs[]){ for(inti=0;i<10;i++){ System.out.print(i+""); if(i%2==0)continue; System.out.println();}}}運行結(jié)果:0123456789標注示例publicclasstest{publicstaticvoidmain(Stringargs[]){

outer:

for(inti=0;i<3;i++){ System.out.print("Pass"+i+":"); for(intj=0;j<10;j++){ if(j==5)breakouter;System.out.print(j+""); } System.out.println();}}}運行結(jié)果:Pass0:01234×標注示例publicclasstest{publicstaticvoidmain(Stringargs[]){

outer:

for(inti=1;i<5;i++){for(intj=1;j<5;j++){if(j>i){System.out.println();

continueouter;}System.out.print(""+(i*j));}System.out.println();}}}運行結(jié)果:124369481216【Return】2.7編程練習(xí)判斷輸入的字符串是否為回文,如abcba。輸入一個字符串,統(tǒng)計大寫字母、小寫字母、數(shù)字、空格以及其他字符個數(shù)。遞歸方法求2+4+6+…+100之和?;匚呐袛郤ystem.out.println("請輸入字符串:");Stringstr=newScanner(System.in).nextLine();booleanflag=true;charch1,ch2;for(inti=0;i<str.length()/2;i++){ch1=str.charAt(i);

ch2=str.charAt(str.length()-1–i);if(ch1!=ch2){flag=false;

break;}}if(flag)System.out.println("是回文");elseSystem.out.println("不是回文");大小寫等判斷intlower=0,upper=0,number=0,space=0,other=0;System.out.println("請輸入字符串:");Strings=newScanner(System.in).nextLine();for(

inti=0;

i<s.length();

i++

)

{ if(

Character.isLowerCase(

s.charAt(i)

)

)

{

lower++;

} elseif(Character.isUpperCase(s.charAt(i)))

{

upper++;

} elseif(Character.isDigit(s.charAt(i)))

{

number++;

} elseif(Character.isSpace(s.charAt(i)))

{

space++;

} elseother++; }

System.out.println("小寫字母個數(shù):"+lower+",大寫字母個數(shù):"+upper+",數(shù)字個數(shù):"+number);System.out.println("空格個數(shù):"+space+",其他字符個數(shù):"+other);遞歸函數(shù)求2+4+6+…+100之和:publicclasstest{ publicstaticvoidmain(Stringargs[]) {System.out.print(fadd(100));}

publicstaticintfadd(intn){ if(n==2)return2; elsereturnn+fadd(n-2);

}}【完】補充1-數(shù)學(xué)類java.lang.Math類主要包括下列方法和兩個常數(shù):doubleabs(doubled):返回d的絕對值。doublemin(doubled1,doubled2):返回d1與d2中的小者。doublemax(doubled1,doubled2):返回d1與d2中的大者。doublesqrt(doubled):返回d的平方根。doublepow(doubled1,doubled2):返回d1的d2次冪。doublerandom():返回[0,1)的隨機數(shù)。兩個常數(shù): PI:圓周率,double。 E:自然對數(shù)的底,double。對于float,int,long有類似的函數(shù)補充2-StringBuffer類在Java中有3個類來負責(zé)字符的操作:Character是進行單個字符操作的,String對一串字符進行操作。不可變類。StringBuffer也是對一串字符進行操作,但是可變類。String為不可變對象,一旦被創(chuàng)建,就不能修改它的值。對于已經(jīng)存在的String對象的修改都是重新創(chuàng)建一個新的對象,然后把新的值保存進去。StringBuffer是一個可變對象,當(dāng)對它進行修改的時候不會像String那樣重新建立對象。在實際應(yīng)用

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論