Java面向?qū)ο蟪绦蛟O(shè)計(第二版)課件第2章-基本數(shù)據(jù)類型與運(yùn)算_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(第二版)課件第2章-基本數(shù)據(jù)類型與運(yùn)算_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(第二版)課件第2章-基本數(shù)據(jù)類型與運(yùn)算_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(第二版)課件第2章-基本數(shù)據(jù)類型與運(yùn)算_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(第二版)課件第2章-基本數(shù)據(jù)類型與運(yùn)算_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章基本數(shù)據(jù)類型與運(yùn)算引例//文件名Jpro2_1.javaimportjava.io.*;//引入類publicclassJpro2_1//定義主類

{publicstaticvoidmain(String[]args)//定義main()方法

{

intpro_score,eng_score,math_score;

//聲明變量

floataverage_score;

pro_score=89;

//輸入三門課程成績

eng_score=86;

math_score=93;

average_score=(pro_score+eng_score+math_score)/3;//計算平均成績

System.out.println(“Scoreofthreecourses

is"+pro_score

+“,”+eng_score+“,”+math_score);

//標(biāo)準(zhǔn)輸出

System.out.println("Theaveragescoreis:"+average_score);

}}標(biāo)識符Java語言對標(biāo)識符還有如下規(guī)定:長度不限,但不宜過長。一般遵循“見名知義”原則,即為標(biāo)識符取一個能代表其意義的名稱。區(qū)分字母的大小寫。如Student和student是兩個不同的標(biāo)識符。不能是關(guān)鍵字。關(guān)鍵字根據(jù)它們的意義分為以下幾種類型:數(shù)據(jù)類型:boolean,int,long,short,byte,float,double,char,class,interface流程控制:if,else,do,while,for,switch,case,default,break,continue,return,try,catch,finally修飾符:public,protected,private,final,void,static,strictfp,abstract,transient,synchronized,volatile,native

動作:package,import,throw,throws,extends,implements,this,Super,instanceof,new保留字:true,false,null,goto,constJava基本數(shù)據(jù)類型基本數(shù)據(jù)類型包括數(shù)值型、字符型及布爾型。復(fù)雜數(shù)據(jù)類型包括類、接口和數(shù)組等,也稱為引用類型,即通過對象的創(chuàng)建,獲得引用類型的值。教學(xué)內(nèi)容Java中的基本數(shù)據(jù)類型及其應(yīng)用定義Java標(biāo)識符的基本規(guī)則Java中常量與變量的含義,定義與使用它們的基本方法Java中的運(yùn)算符、常量、變量及函數(shù)的含義通過運(yùn)算符構(gòu)成符合Java規(guī)范的表達(dá)式的基本方法賦值語句的使用以及數(shù)據(jù)轉(zhuǎn)換與實(shí)現(xiàn)機(jī)制教學(xué)目標(biāo)根據(jù)Java規(guī)范在程序中正確定義并使用各種標(biāo)識符理解3種基本數(shù)據(jù)類型的含義并能正確地識別與應(yīng)用根據(jù)處理對象的特征正確定義變量類型在程序中給變量賦值通過常量、變量、函數(shù)及運(yùn)算符構(gòu)造符合Java規(guī)范的表達(dá)式數(shù)值型整數(shù)和浮點(diǎn)數(shù)兩種類型,整數(shù)不帶小數(shù)點(diǎn),浮點(diǎn)數(shù)含有小數(shù)點(diǎn)。整數(shù)有byte(字節(jié)型)、short(短整型)、int(整型)及l(fā)ong(長整型)等4種,浮點(diǎn)型數(shù)據(jù)有float(單精度浮點(diǎn)型)和double(雙精度浮點(diǎn)型)兩種。

字符型Java中的字符型數(shù)據(jù)用char表示,它的值用16個bit來存儲,取值范圍是0~65535。它表示的是Unicode碼表所定義的國際化字符集中所收集的所有字符,根據(jù)Unicode編碼,可以比較其大小,類似于ASCII碼的比較。與其他語言一樣,Java也用單引號來表示字符型數(shù)據(jù)。如'A'、'c'、'#'、'&'與'9'等等。例如,chargrade1='A',grade2='B';

顯然grade1和grade2可以比較大小,'A'的編碼值小'B'的編碼值,所以grade1小于grade2。布爾型布爾型(boolean)是一種表示邏輯值的簡單數(shù)據(jù)類型。它的取值只能是常量true或false這兩個值中的一個,在存儲器中占8個bit。通常用于程序中的一些邏輯判斷從而對程序的運(yùn)行進(jìn)行控制。例如,根據(jù)成績的及格線60分,判斷考試是否通過。

intgrade;

booleanpassOrNo;

if(grade>=60)

passOrNo=true;

elsepassOrNo=false;常量常量(constant),就是在程序運(yùn)行過程中其值不會被改變的量,就象我們在數(shù)學(xué)中常用到的π=3.14。常量也叫常數(shù),也被稱為“字面量”。在Java語言中,按照數(shù)據(jù)的特征,可將常量分為整型、浮點(diǎn)型、字符型、字符串型與布爾型等5種類型。字符型常量是指Unicode字符集中的所有單個字符,包括可以打印的字符和不可打印的控制字符,它的表示形式有四種:以單引號括起來的單個字符,例如,'A'、'h'、'*'、'1'。以單引號括起來的"\"加三位八進(jìn)制數(shù),形式為'\ddd',其中d可以是0~7中的任一個數(shù),例如,'\141'表示字符'a'。其中ddd的取值范圍只能在八進(jìn)制數(shù)的000~777之間,因而它不能表示Unicode字符集中的全部字符。以單引號括起來的"\u"加四位十六進(jìn)制數(shù),例如,'\u0061'表示字符'a'。這種表示方法的取值范圍與char型數(shù)據(jù)相同,因而可以表示Unicode字符集中的所有字符。對于那些不能被直接包括的字符以及一些控制字符,Java定義了若干轉(zhuǎn)義序列。如'\\'代表'\','\n'代表換行等。如表2-1所示的是Java中的一些字符轉(zhuǎn)義序列。變量變量(variables)是Java程序中的基本存儲單元,是在程序運(yùn)行過程中其值可以改變的量。一個變量蘊(yùn)含有三個含義:(1)變量的名稱。變量的名稱簡稱變量名,變量名是用戶自己定義的標(biāo)識符,它表明了變量的存在和唯一性;(2)變量的屬性。即變量的數(shù)據(jù)類型,包括簡單數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型;(3)變量的初值。變量的值是指存放在變量名所標(biāo)記的存儲單元中的數(shù)據(jù)。變量的聲明方法是數(shù)據(jù)類型變量名1[=初值1][,變量名2[=初值2]……];變量定義和賦值示例一個變量必須經(jīng)過聲明、賦值之后才能被使用;類型相同的幾個變量可以在同一個語句中被聲明及被賦初值,相互之間應(yīng)用“,”作間隔。//文件名Jpro2_2.java:publicclassJpro2_2{publicstaticvoidmain(Stringargs[]){shortb=050;intc=0xA3;

longd=2.0E+10;bytee=129;

floatff=1.234;doubledd=34.56d;System.out.println("短整型變量的值:b="+b);System.out.println("整型變量的值:c="+c);System.out.println("長整型變量的值:d="+d);System.out.println("字節(jié)型變量的值:e="+e);

System.out.println("單精度度浮點(diǎn)型的值:ff="+ff);System.out.println("雙精度浮點(diǎn)型的值:dd="+dd);

}}類型轉(zhuǎn)換Java是強(qiáng)類型語言,其中的每個數(shù)據(jù)都有特定的數(shù)據(jù)類型。Java中所有的數(shù)值傳遞都必須進(jìn)行類型相容性檢查以保證類型是兼容的。任何類型不匹配都將被報告為錯誤。因此,我們在進(jìn)行程序設(shè)計時經(jīng)常要對一些類型不同的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。Java的數(shù)據(jù)類型轉(zhuǎn)換有兩種情況:表達(dá)式中的自動轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換。1.表達(dá)式中的自動轉(zhuǎn)換java表達(dá)式中,當(dāng)涉及到兩個不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時,系統(tǒng)會自動把兩個不相同的類型數(shù)據(jù)轉(zhuǎn)換成相同的類型再進(jìn)行運(yùn)算。這種轉(zhuǎn)換是在程序運(yùn)行過程中不需人為干預(yù)而自動進(jìn)行的,但轉(zhuǎn)換是有條件的,即兩種數(shù)據(jù)類型必須是兼容的,規(guī)則是把表達(dá)式中取值范圍小的類型數(shù)據(jù)轉(zhuǎn)換成另一取值范圍大數(shù)據(jù)的類型。自動轉(zhuǎn)換源數(shù)據(jù)類型目標(biāo)數(shù)據(jù)類型byteshort、int、long、float、doubleshortint、long、float、doublecharint、long、float、doubleintlong、float、doublelongfloat、doublefloatdouble可自動進(jìn)行轉(zhuǎn)換的數(shù)據(jù)類型如表所示。強(qiáng)制類型轉(zhuǎn)換對于類型不一致數(shù)據(jù),在寫表達(dá)式時不能進(jìn)行自動類型轉(zhuǎn)換,這時就要執(zhí)行強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換的一般格式為:(目標(biāo)數(shù)據(jù)類型)被轉(zhuǎn)換數(shù)據(jù)被轉(zhuǎn)換數(shù)據(jù)可以是變量或表達(dá)式等,如要把double型變量money的值轉(zhuǎn)換成int型,形式為:(int)money。強(qiáng)制轉(zhuǎn)換示例例2.4從鍵盤讀入一個字符,并輸出這個字符。

//文件名Jpro2_4.javaimportjava.io.*;publicclassJpro2_4{ publicstaticvoidmain(Stringargs[]){charch='';System.out.println("Inputaintergerorcharacter:");try{ ch=(char)System.in.read();//從鍵盤中讀入一個字符

} catch(IOExceptione) { }System.out.println("Theinputis\'"+ch+"\'");}}運(yùn)算符和表達(dá)式一個運(yùn)算符,a、b、c本身也是一個表達(dá)式。一個常量或一個變量是最簡單的表達(dá)式。一般的表達(dá)式是指由數(shù)據(jù)和運(yùn)算符連接在一起的符合Java語法規(guī)則的式子。這里的數(shù)據(jù)是常量或變量,表達(dá)式中數(shù)據(jù)的連接符+、-、*、=及<就是運(yùn)算符。Java的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等。算術(shù)運(yùn)算符和算術(shù)表達(dá)式單目運(yùn)算符是指只對一個操作數(shù)運(yùn)算的運(yùn)算符。Java中的單目運(yùn)算符有++(自增)、--(自減)和-(取反)等3種類型。單目運(yùn)算符++與--可以位于操作數(shù)的左邊或右邊,但在使用時是有差別的。如:a++、a--:表示先使用a,再使a增(減)1;++a、--a:表示先使a增(減)1,再使用a。雙目運(yùn)算符是指算術(shù)運(yùn)算符的左、右兩邊均要有操作數(shù)。Java中的雙目算術(shù)運(yùn)算符有+(和運(yùn)算)、-(差運(yùn)算)、*(積運(yùn)算)、/(除運(yùn)算)及%(求余運(yùn)算)。注意:兩個整數(shù)相除時其結(jié)果仍是整數(shù),小數(shù)部分被舍去。另外,%運(yùn)算符既可以對整數(shù)進(jìn)行操作也可以對浮點(diǎn)數(shù)進(jìn)行操作。當(dāng)除數(shù)為0時,/和%運(yùn)算會產(chǎn)生異常,需要進(jìn)行異常處理。算術(shù)表達(dá)式算術(shù)運(yùn)算符連接的操作數(shù)為數(shù)值型。由算術(shù)運(yùn)算符連接的式子稱為算術(shù)表達(dá)式。例如,++a,s=(a1+a2+a3)/3,totalPrice=(weight*unitPrice+tax)*discount.關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符是用來比較兩個值之間的大小關(guān)系的。關(guān)系運(yùn)算的結(jié)果是布爾(boolean)型,結(jié)果為真(true)或假(false)。Java中的關(guān)系運(yùn)算符如表2-3所。邏輯運(yùn)算符和邏輯表達(dá)式

Java中共有6個邏輯運(yùn)算符,表達(dá)式結(jié)果為布爾類型。表2-4中&和&&、|和||在形式上具有相同的名稱及功能,其實(shí)它們是有差別的。&&和||也被稱為“短路邏輯運(yùn)算符”,在運(yùn)算過程中會產(chǎn)生“短路效應(yīng)”,如a&&b,當(dāng)a為false時不再判斷b,直接判定a&&b的值為false;若是a||b,當(dāng)a為true時不再判斷b,直接判定a||b的值為true。&和|運(yùn)算符是先計算出兩邊操作數(shù)的值,然后再進(jìn)行邏輯判斷。當(dāng)&、^和|的操作數(shù)為布爾類型時它們是邏輯運(yùn)算符,進(jìn)行邏輯運(yùn)算,但若操作數(shù)為整數(shù)及字符時,它們會作為位運(yùn)算符進(jìn)行位運(yùn)算。邏輯運(yùn)算和關(guān)系運(yùn)算示例例2.5關(guān)系運(yùn)算與邏輯運(yùn)算示例。//文件名Jpro2_5.javapublicclassJpro2_5{publicstaticvoidmain(Stringargs[]){intnumber1=10,number2=20;

booleanb1,b2,b3=false,f1,f2,b4=true;b1=number1>number2;b4=b1&&(b2=number1<number12);//b1為false,b4值未被改變

f1=b4||(b3=number1<number12);

//b4為true,b3值未被改變

f2=f1|(b4=number1>number12);

//b4值被改變

System.out.println("number1="+number1);

System.out.println("number2="+number2);

System.out.println("number1>number2resultis"+b1);System.out.println("b1&&(b2=number1<number2)resultis"+b4);System.out.println("f1="+f1+",f2="+f2);}}三元運(yùn)算符Java中,有一種特別的三元運(yùn)算符構(gòu)成的條件表達(dá)式。使用格式如下:條件表達(dá)式?語句1:語句2其中的?和:稱為三元運(yùn)算符,它們必須一同出現(xiàn),此運(yùn)算符需要三個操作數(shù)。其中語句1和語句2可以是復(fù)合語句。意思是,當(dāng)條件表達(dá)式值為true時,執(zhí)行語句1,否則執(zhí)行語句2。說明:條件表達(dá)式運(yùn)算符的優(yōu)先級別很低,僅優(yōu)先于賦值運(yùn)算符。條件運(yùn)算符的結(jié)合性為自右向左。例如,(a>b)?a:(c>d)?c:d其中a=5,b=8,c=1,d=9。根據(jù)右結(jié)合性,應(yīng)先計算(c>d)?c:d。因?yàn)?>9為false,故取d=9為該表達(dá)式的結(jié)果。再計算(a>b)?a:d,則最終結(jié)果為9。位運(yùn)算符Java中,可以使用位運(yùn)算直接對整數(shù)類型和字符類型的數(shù)據(jù)的位進(jìn)行操作。Java中的位運(yùn)算符如表2-5所示。賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符兩邊數(shù)據(jù)類型可以不相同但必須相容,當(dāng)數(shù)據(jù)類型不相同時:若右邊數(shù)據(jù)取范圍小于左邊數(shù)據(jù),則會自動轉(zhuǎn)換;反之,則必須強(qiáng)制轉(zhuǎn)換。擴(kuò)展賦值運(yùn)算符的使用不僅可以使程序表達(dá)簡練,而且可以提高程序的編譯速度。運(yùn)算符優(yōu)先級對于Java語言中的一個表達(dá)式,如例2.6中的幾個表達(dá)式,包含了多個運(yùn)算符,哪個運(yùn)算符先運(yùn)算哪個后運(yùn)算,與數(shù)學(xué)中的運(yùn)算規(guī)則類似,也要有規(guī)則,即設(shè)置運(yùn)算符的優(yōu)先級。Java語言運(yùn)算符的運(yùn)算級別共分為15級,其中1級的優(yōu)先級最高,15級最低,參看教材表2-7所示。例如,計算下面表達(dá)式的值。inta=3,b=8,c;c=a+++b;上述第二條語句被執(zhí)行后,變量a、b、c的值分別是多少呢?如果表達(dá)式被理解為c=a+(++b),那么,a=3、b=9、c=12。其實(shí)結(jié)果并不是這樣,而是a=4、b=8、c=11。這是因?yàn)檫\(yùn)算符++作為“先用后增”的優(yōu)先級高于作為“先增后用”運(yùn)算符的優(yōu)先級。建議初學(xué)者在寫表達(dá)式時多使用括號,這樣既能防止引起混亂,又方便別人閱讀你的程序代碼。示例例2.7判斷2006年是否閏年。//文件名Jpro2_7.javapublicclassJpro2_7{publicstaticvoidmain(Stringargs[]){

intyear=2006;booleant;t=year%400==0||year%4==0&&year%100!=0;System.out.println(year+"isintercalaryyear="+t);}

運(yùn)行結(jié)果:2006isintercalaryyear=false注意:語句t=year%400==0||year%4==0&&year%100!=0;總體是一個賦值運(yùn)算表達(dá)式,右邊部分是邏輯表達(dá)式,其中包含算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算。本程序每次運(yùn)行只能判斷一個年份是否為閏年,每判斷一個年份,需要修改程序中的intyear=2006;因此很不方便判定多個年份是否為閏年。如果采用從命令行接收數(shù)據(jù)的方法,將大大改善程序。添加語句:

year=Integer.parseInt(args[0]);實(shí)例1例2.8請判斷一個三位數(shù)是否為水仙花數(shù)。水仙花數(shù)是指一個n位數(shù)(n≥3),它的每個位上的數(shù)字的n次冪之和等于它本身。(例如:1^3+5^3+3^3=153)分析:采用自頂向下、逐步求精的方法,先給出總的框架,再分析問題,然后逐步細(xì)化。1.總體步驟(1)輸入一個三位數(shù)n;(2)分別求出個、十、百的三個位上的數(shù),并分別對它們計算三次冪;(3)將這三個冪相加,判斷是否與n相等。2.逐步細(xì)化及分析(1)定義一個正整數(shù),保存在一個整型變量s中;(2)這一步是數(shù)據(jù)處理過程,要求完成的任務(wù)較多。根據(jù)數(shù)學(xué)運(yùn)算方便,從高位開始,先分別求出三個位上的數(shù),再進(jìn)行相加。百位=s/100,十位=(s-百位*100)/10,個位=s%10,和=百位*百位*百位+百位*百位*百位+個位*個位*個位(3)第二步計算的和與n相等,如果相等,輸出是水仙花數(shù),否則輸出不是。程序代碼//文件名Jpro2_8.javaimportjavax.swing.JOptionPane;publicclassJpro2_8{publicstaticvoidmain(String[]args){inthNumber,tNumber,pNumber;doubleadd;StringintString=JOptionPane.showInputDialog(null,"請輸入一個整數(shù):","例2.8演示",JOptionPane.QUESTION_MESSAGE);

intnumber=Integer.parseInt(intString);hNumber=number/100;tNumber=(number-hNumber*100)/10;pNumber=number%10;add=Math.pow(hNumber,3)+Math.pow(tNumber,3)+Math.pow(pNumber,3);

System.out.println("百位數(shù)是:"+hNumber+"\t十位數(shù)是:"+tNumber);System.out.println("個位數(shù)是:"+pNumber+"\t各位數(shù)的三次冪的和是:"+add);if(add==number)System.out.println("這個數(shù)"+number+"是水仙花數(shù)!");elseSystem.out.println("這個數(shù)"+number+"不是水仙花數(shù)!");}}實(shí)例2例2.9從鍵盤輸入一個字符,如果該字符是英文字母,則進(jìn)行大小寫轉(zhuǎn)換。也就是說,如果輸入的是大寫字母則輸出其小寫字母,反之則輸出大寫字母。分析:采用自頂向下、逐步求精的方法,先給出總的框架,再分析問題,然后逐步細(xì)化。1.總體步驟(1)輸入一個字符c;(2)判斷該字符是否為英文字母;(3)將該字母進(jìn)行大小寫轉(zhuǎn)換并輸出。2.逐步細(xì)化及分析(1)定義兩個字符變量c、s,分別保存原字符和轉(zhuǎn)換后的字符。定義一個short型變量k定義字母A與a在Unicode中的位置差。注意:這里的k也可定義為int型變量,但在后面給字符s賦值時需進(jìn)行強(qiáng)制轉(zhuǎn)換類型;(2)先從鍵盤上讀入一個字符,判斷該字符是否為英文字母。(3)若該字符是英文字母,再判斷該字母是大寫字母還是小寫字母。然后用該字母加或減其大小寫字母在Unicode中位置差的方法來實(shí)現(xiàn)轉(zhuǎn)換。注:大、小寫字母在Unicode中均是按順序排列的,且大寫在前、小寫在后,所以可以用’a’-‘A’來表示每個大小寫字母之間的位置差。程序代碼//文件名Jpro2_9.javaimportjava.io.*;publicclass

溫馨提示

  • 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

提交評論