描述java源程序构成_Java第二章Java程序设计
《Java第二章Java程序設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java第二章Java程序設(shè)計(jì)(140頁珍藏版)》請(qǐng)?jiān)谌巳宋膸炀W(wǎng)上搜索。
1、第2章 Java基本語法,2.1 Java程序的構(gòu)成 2.2 數(shù)據(jù)類型、變量和常量 2.3 運(yùn)算符和表達(dá)式 2.4 流程控制 2.5 數(shù)組 習(xí) 題,學(xué)習(xí)目的與要求: 深刻理解并熟記Java 的語法規(guī)范。 熟練使用各種數(shù)據(jù)類型的定義、表示和引用。 熟練使用各種控制語句。 熟練使用一維數(shù)組,文件命名規(guī)則,總則:文件名必須與類名一致。 (1)如果文件只有一個(gè)類,那么文件名必須與類名完全一致,包括大小寫。 (2)一個(gè)文件中,只能有一個(gè)public類; (3)如果文件中不只一個(gè)類,那文件名必須與聲明為public的類名保持一致;,(4)如果文件不只一個(gè)類,沒有聲明為public類,則文件名可以與其他類的。
2、名字中的一個(gè)保持一致; (5)如果類中有main方法,并聲明為public類,main方法必須位于public類中; (6)如果類中有main方法,沒有聲明為public類,文件名保存為與含有main方法的類名一致。,/*檢測(cè)類名與文件名的一致性*/ class StudentTest public static void main(String args) Student aStudent=new Student(); aStudent.setName(“張楠”); aStudent.setStudentNum(“2010416001”); System.out.println(“學(xué)生的姓名。
3、是:”+aStudent.getName()+”,學(xué)號(hào)是:”+aStudent.getStudentNum(); ,class People private String name; public String getName() return name; public void setName(String strName) name=strName; ,class Student extends People private String studentNum; public String getStudentNum() return studentNum; public void set。
4、StudentNum(String strStudentNum) studentNum=strStudentNum; ,文件名只能保存為StudentTest.java才能運(yùn)行。 思考:在class StudentTest前面加上public后,再保存為People.java或Student.java,編譯會(huì)出現(xiàn)什么情況。,2.1 Java程序的構(gòu)成,2.1.1 邏輯構(gòu)成 Java源程序邏輯構(gòu)成分為兩大部分:程序頭包的引用和類的定義。 1. 程序頭包的引用 主要是指引用JDK軟件包自帶的包,也可以是自己定義的類。引用之后程序體中就可以自由應(yīng)用包中的類的方法和屬性等。,2. 類的定義 源程序必須。
5、有一個(gè)主類; 在應(yīng)用程序中,主類為包含main方法的類; 在Applet中,主類為用戶自定義的系統(tǒng)Applet類的擴(kuò)展類。在Java源程序中,主類的名字同文件名一致。 類的定義又包括類頭聲明和類體定義。類體中包括屬性聲明和方法描述。,2.1.2 物理構(gòu)成 Java源程序物理上由三部分構(gòu)成,分別為語句、塊和空白。 (1) 語句指一行以分號(hào)“;”結(jié)束的語句。 (2) 塊指用括號(hào)對(duì)界定的語句序列,塊可以嵌套使用。 (3) 空白指語句之間、塊內(nèi)部或者塊之間的空白行。空白不影響Java源程序的編譯和運(yùn)行,適當(dāng)?shù)剡\(yùn)用空白,可以形成良好的代碼風(fēng)格。,2.1.3 注釋語句 行注釋為以/開始的行; 塊注釋以/*。
6、開始和*/結(jié)束 例如,下面的語句就是注釋語句用來說明程序文件名稱的。 /程序文件名稱為WelcomeApplet.java 上述的語句注釋可以更改為: /*程序文件名稱為WelcomeApplet.java*/ 或 /* 程序文件名稱為 WelcomeApplet.java */,2.1.4 標(biāo)識(shí)符、關(guān)鍵字和轉(zhuǎn)義符 在Java語言中,標(biāo)識(shí)符是賦予變量、類和方法等的名稱。由編程者自己指定,但需要遵循一定的語法規(guī)范: (1) 標(biāo)識(shí)符由字母、數(shù)字、下劃線(_)、美元符號(hào)($)組成,但美元符號(hào)用得較少。 (2) 標(biāo)識(shí)符從一個(gè)字母、下劃線或美元符號(hào)開始。 (3) Java語言中,標(biāo)識(shí)符大小寫敏感,必須區(qū)。
7、別對(duì)待。 (4) 標(biāo)識(shí)符沒有最大長(zhǎng)度的限制,但最好表達(dá)特定的意思。 (5) 標(biāo)識(shí)符定義不能是關(guān)鍵字。,例如:_abc , $ABC ,2A ,A# ,For,順時(shí) Java開發(fā)的命名習(xí)慣 所有的命名要望文生義,這樣才具有良好的可讀性 Total,Sum,ShunshiStudent 類名,接口名:每個(gè)單詞的首字母大寫,其他字母小寫 如類MyFirstJava,Player,Teacher 屬性,方法,,局部變量名:第一個(gè)單詞全小寫,從第二個(gè)單詞開始以后每個(gè)單詞首字母大寫,其他字母小寫 如方法 getName() setDoctorBirthday() 常量:每個(gè)單詞所有字母全部大寫,單詞之間用。
8、_來連接 java中使用final修飾 final int MARK_GREED=22; 包名:所有字母全部小寫 如package com.shunshi.corejava.day01,_abc , $ABC ,2A ,A# ,For,順時(shí) 關(guān)鍵字又稱保留字,是指Java語言中自帶的用于標(biāo)志數(shù)據(jù)類型名或者程序構(gòu)造名等的標(biāo)識(shí)符,如public、double等。,關(guān)鍵字:對(duì)Java技術(shù)編譯器有特殊的含義,可以被編譯器識(shí)別執(zhí)行 abstract do implements private throw boolean double import protected throws break else 。
9、instanceof public transient byte extends int return true case false interface short try catch final long static void char finally native super volatile class float new switch while continue for null synchronized default if package this,Java關(guān)鍵字特點(diǎn) java關(guān)鍵字與c+很多相似,只要與c+一樣的,它的含義都與c+中的相同 有些關(guān)鍵字c+有,而java沒有 。
10、sizeof求出某種類型的變量的占內(nèi)存的大小 為什么c+有sizeof? 因?yàn)椴煌瑱C(jī)器內(nèi)存占用空間大小不一樣 16,32,64位,取決于操作系統(tǒng)平臺(tái)。 為什么Java不需要? 因?yàn)橛蠮VM。 java中的關(guān)鍵字都是小寫的 true、false和null為小寫,而不是象在C+語言中那樣為大寫。嚴(yán)格地講,它們不是關(guān)鍵字。,有些關(guān)鍵字java沒有取消保留下來,但它自己也不用它也不給程序員用 goto和const不是Java編程語言中使用的關(guān)鍵字,而是保留字。 什么是保留字? 為什么保留下來但不能用? 在java中final替代const goto在c+代表無條件跳轉(zhuǎn),功能很好,但不能經(jīng)常用,要謹(jǐn)慎。。
11、 很多建議去掉goto關(guān)鍵字,沒有理解goto真正含義。 為什么c+到現(xiàn)在都沒有刪除掉goto?它有一個(gè)特殊使命 Java中使用break代替goto 跳出一層循環(huán) :break 跳出多層循環(huán):break out out是一個(gè)標(biāo)號(hào),可以跳到out標(biāo)識(shí)處 break避免濫用goto,把goto功能削弱了,只能跳到外層循環(huán) java中加入新的關(guān)鍵字enum assert enum:枚舉 assert:斷言,表2.1 轉(zhuǎn) 義 符,轉(zhuǎn)義符是指一些有特殊含義的、很難用一般方式表達(dá)的字符,如回車、換行等。所有的轉(zhuǎn)義符以反斜線()開頭,后面跟著一個(gè)字符來表示某個(gè)特定的轉(zhuǎn)義符,如表2.1所示。,2.2 數(shù)據(jù)類。
12、型、變量和常量,2.2.1 數(shù)據(jù)類型 Java編程語言定義了八種基本的數(shù)據(jù)類型(見表2.2),共分為四類:整數(shù)類(byte、short、int、long)、文本類(char)、浮點(diǎn)類(double、float)和邏輯類(boolean)。,表2.2 Java的數(shù)據(jù)類型,1. 整數(shù)類 (1) 采用三種進(jìn)制十進(jìn)制、八進(jìn)制和十六進(jìn)制。 2 十進(jìn)制值是2; 077 首位的0表示這是一個(gè)八進(jìn)制的數(shù)值; 0 xBAAC 首位的0 x表示這是一個(gè)十六進(jìn)制的數(shù)值。 (2) 具有缺省int。 (3) 用字母“L”和“l(fā)”定義long。 (4) 所有Java編程語言中的整數(shù)類型都是帶符號(hào)的數(shù)字。,2. 文本類 (。
13、1) 代表一個(gè)16 bit Unicode字符。 (2) 必須包含用單引號(hào)( )引用的文字。 (3) 使用下列符號(hào): a一個(gè)字符。 t-一個(gè)制表符。 u? -一個(gè)特殊的Unicode字符,?應(yīng)嚴(yán)格使用四個(gè)十六進(jìn)制數(shù)進(jìn)行替換。,3. 浮點(diǎn)類 默認(rèn)為double類型,如果一個(gè)數(shù)字包括小數(shù)點(diǎn)或指數(shù)部分,或者在數(shù)字后帶有字母F或f(float)、D或d(double),則該數(shù)字為浮點(diǎn)數(shù)。,4. 邏輯類 boolean數(shù)據(jù)類型有兩種值:true和false。 例如:boolean flag = true; 上述語句聲明變量flag為boolean 類型,它被賦予的值為true。,數(shù)據(jù)類型轉(zhuǎn)換:分為自動(dòng)類。
14、型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換 自動(dòng)類型轉(zhuǎn)換: 整型、浮點(diǎn)型、字符型數(shù)據(jù)可以混合運(yùn)算。在執(zhí)行運(yùn)算時(shí),不同類的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換從低級(jí)到高級(jí)的順序?yàn)?#xff1a; Short或byte int longfloat double char 強(qiáng)制類型轉(zhuǎn)換 高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù)需用強(qiáng)制類型轉(zhuǎn)換,格式為: (數(shù)據(jù)類型)數(shù)據(jù)或(數(shù)據(jù)類型)(表達(dá)式) 注:邏輯類數(shù)據(jù)不能和其它類型的數(shù)據(jù)轉(zhuǎn)換。,強(qiáng)制類型轉(zhuǎn)換:只要不能自動(dòng)轉(zhuǎn)換的,則只能是強(qiáng)制轉(zhuǎn)換 整型數(shù)據(jù)之間的強(qiáng)轉(zhuǎn):改變數(shù)據(jù)的符號(hào);改變數(shù)值 int a=0 x2aff; byte b=(byte)a; b為-1 強(qiáng)制轉(zhuǎn)換的原理:從最低位開始取到目標(biāo)類型長(zhǎng)度。
15、為止 整型之間的強(qiáng)轉(zhuǎn)是保留二進(jìn)制低位,去掉高位,需要考慮在內(nèi)存中如何存儲(chǔ) 實(shí)型強(qiáng)轉(zhuǎn)整型是保留整數(shù),去掉小數(shù),不考慮實(shí)型在內(nèi)存中的如何存儲(chǔ) byte+byte會(huì)自動(dòng)提升為int byte a1=1,a2=2;byte a3=a1+a2;(精度丟失) +=不進(jìn)行類型提升 byte c=3; c=c+3; c+=3;System.out.println(c); 默認(rèn)整型為int,int,long提升為float有精度丟失 float fa=37; System.out.println(fa); int ia=(int)fa; System.out.println(ia);,2.2.2 變量與常量 常。
16、量是指整個(gè)運(yùn)行過程中不再發(fā)生變化的量 變量是指程序的運(yùn)行過程中發(fā)生變化的量,通常用來存儲(chǔ)中間結(jié)果,或者輸出臨時(shí)值。 變量的聲明也指變量的創(chuàng)建。執(zhí)行變量聲明語句時(shí),系統(tǒng)根據(jù)變量的數(shù)據(jù)類型在內(nèi)存中開辟相應(yīng)的存儲(chǔ)空間并賦予初始值。變量有一個(gè)作用范圍,超出它聲明語句所在的塊就無效。,Java的常量 Java中的常量分為整數(shù)型常量、浮點(diǎn)型常量、布爾型常量、字符型常量和字符串常量 常量的定義格式為: final 常量類型 常量名1=常量值,常量名2=常量值2. final是定義常量的關(guān)鍵字。 Java中的常量值區(qū)分為不同的類型,類型可以是Java中任何合法的數(shù)據(jù)類型,Java的變量 Java變量定義的格式。
17、: 類型名 變量名1,變量名2,; 或:類型名 變量名1=初值,變量名2=初值,; 變量按作用域分類: 局部變量:在方法或方法的代碼塊中聲明,作用域從該變量的定義位置起到它所在的代碼塊結(jié)束。 方法參數(shù)(形式參數(shù)):傳遞給方法的參數(shù),作用域是這個(gè)方法。 異常處理參數(shù):傳遞給異常處理代碼,作用域是異常處理部分。 注意: 局部變量必須先賦值再使用 局部變量的作用域是從定義它開始到定義它的代碼塊結(jié)束 在同一重合范圍內(nèi)不允許有2個(gè)同名局部變量出現(xiàn), 類(成員)變量:在類定義中聲明,作用域是整個(gè)類。 在一個(gè)確定的域中,變量名應(yīng)是唯一的。通常,一個(gè)域用大括號(hào)來劃定,下面看一個(gè)使用各種類型變量聲明并改變的示例。
18、。程序中pi為常量,s1、i1、l1、ch1、f1、d1、b1為全局變量,可以在方法change中發(fā)生改變,然后在方法main中輸出。而s2、i2、l2、ch2、f2、d2、b2是方法main的局部變量,它們的作用范圍只局限于方法main中。 【例2.2】測(cè)試不同數(shù)據(jù)類型的變量,程序輸出如圖2.2所示。源程序代碼如下: /程序文件名稱為SetVariable.java public class SetVariable /全局變量,static double pi = 3.141592654;/數(shù)學(xué)常量static short s1; static int i1; static long l1;。
19、 static char ch1; static float f1; static double d1; static boolean b1; public static void main(String args) ,/局部變量 short s2 = 35; int i2 = -32; long l2 = 34555L; char ch2 = A; float f2 = 897.89F; double d2 = 34.345; boolean b2 = false; /輸出常量 System.out.println(數(shù)學(xué)常量pi = + pi); /輸出局部變量,System.out.pri。
20、ntln(*局部變量*); System.out.println(短整型變量s2 = + s2); System.out.println(整型變量i2 = + i2); System.out.println(長(zhǎng)整型變量l2 = + l2); System.out.println(字符變量ch2 = + ch2); System.out.println(浮點(diǎn)數(shù)類型f2 = + f2); System.out.println(雙精度型變量d2 = + d2); System.out.println(布爾型變量b2 = + b2); /調(diào)用方法修改全局變量的值,change(); /輸出全局變量的值。
21、 System.out.println(*全局變量*); System.out.println(短整型變量s1 = + s1); System.out.println(整型變量i1 = + i1); System.out.println(長(zhǎng)整型變量l1 = + l1); System.out.println(字符變量ch1 = + ch1); System.out.println(浮點(diǎn)數(shù)類型f1 = + f1); System.out.println(雙精度型變量d1 = + d1); System.out.println(布爾型變量b1 = + b1); ,/方法:修改全局變量的值 publ。
22、ic static void change() s1 = 125; i1 = 88; l1 = 987654321L; ch1 = B; f1 = 3.2590F; d1 = -1.04E-5; b1 = true; ,圖2.2 變量輸出結(jié)果,2.3 運(yùn)算符和表達(dá)式,Java常用的運(yùn)算符分為五類:算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、布爾邏輯運(yùn)算符、位運(yùn)算符。 表達(dá)式是由常量、變量、對(duì)象、方法調(diào)用和操作符組成的式子。表達(dá)式必須符合一定的規(guī)范,才可被系統(tǒng)理解、編譯和運(yùn)行。表達(dá)式的值就是對(duì)表達(dá)式自身運(yùn)算后得到的結(jié)果。 根據(jù)運(yùn)算符的不同,表達(dá)式相應(yīng)地分為以下幾類:算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦。
23、值表達(dá)式,這些都屬于數(shù)值表達(dá)式。,2.3.1 算術(shù)運(yùn)算符及算術(shù)表達(dá)式 Java中常用的算術(shù)運(yùn)算符如下: +加運(yùn)算符 -減運(yùn)算符 *乘運(yùn)算符 /除運(yùn)算符 %取模運(yùn)算(除運(yùn)算的余數(shù)) +增量運(yùn)算符 -減量運(yùn)算符,【例2.3】測(cè)試運(yùn)算符及表達(dá)式,程序輸出如圖2.3所示。源程序代碼如下: /程序文件名稱為NumberOper.java public class NumberOper public static void main(String args) /變量初始化 int a = 30; int b = 20; /定義結(jié)果變量 int r1,r2,r3,r4,r5,r6,r7,r8,r9; /計(jì)算。
24、結(jié)果 r1 = a + b;,r2 = a-b; r3 = a * b; r4 = a / b; r5 = a % b; r6 = a +; r7 = b-; r8 = + a; r9 = - b; /輸出結(jié)果 System.out.println(a = + a + b = + b); /a,b的值 System.out.println(a+b = + r1); System.out.println(a-b = + r2);,System.out.println(a*b = + r3); System.out.println(a/b = + r4); System.out.println(a。
25、%b = + r5); System.out.println(a+ = + r6); System.out.println(b- = + r7); System.out.println(+a = + r8); System.out.println(-b = + r9); ,圖2.3 程序輸出結(jié)果,2.3.2 關(guān)系運(yùn)算符 關(guān)系運(yùn)算符用于比較兩個(gè)數(shù)據(jù)之間的大小關(guān)系,關(guān)系運(yùn)算表達(dá)式返回布爾值,即“真”或“假”。Java中的常用關(guān)系運(yùn)算符如下: = =等于 ! =不等于 大于 =大于等于 =小于等于,【例2.4】編寫程序,測(cè)試關(guān)系運(yùn)算符及其表達(dá)式,程序輸出如圖2.4所示。源程序代碼如下:,/程序文件名。
26、稱為TestRelation.java public class TestRelation public static void main(String args) /變量初始化 int a = 30; int b = 20; /定義結(jié)果變量 boolean r1,r2,r3,r4,r5,r6; /計(jì)算結(jié)果,r1 = a = b; r2 = a != b; r3 = a b; r4 = a = b; r6 = a b = + r3); System.out.println(a=b = + r5); System.out.println(a=b = + r6); ,圖2.4 程序輸出結(jié)果,2.3。
27、.3 布爾邏輯運(yùn)算符,表2.3 布爾運(yùn)算符及規(guī)則,例如: Boolean a = false; Boolean b = true; a boolean b = true; /定義結(jié)果變量 boolean r1,r2,r3,r4,r5,r6; /計(jì)算結(jié)果,r1 = !a; r2 = a ,圖2.5 程序輸出結(jié)果,2.3.4 位運(yùn)算符 Java中的常用位運(yùn)算符如下: 位求反 int b = 2; /定義結(jié)果變量 int r1,r2;,/計(jì)算結(jié)果 r1 = a b; r2 = a b = + r1); System.out.println(ab = + r2); ,圖2.6 程序輸出結(jié)果,2.3.5。
28、 賦值運(yùn)算符 賦值運(yùn)算符分為簡(jiǎn)單運(yùn)算符和復(fù)雜運(yùn)算符。簡(jiǎn)單運(yùn)算符指“=”,而復(fù)雜運(yùn)算符是指算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符中的雙目運(yùn)算符后面再加上“=”。表2.4列出Java常用的賦值運(yùn)算符及其等價(jià)表達(dá)式。,表2.4 賦值運(yùn)算符及其等價(jià)表達(dá)式,2.3.6 其它操作符及其表達(dá)式 三目運(yùn)算符(?:)相當(dāng)于條件判斷,表達(dá)式x?y:z用于判斷x是否為真,如果為真,表達(dá)式的值為y,否則表達(dá)式的值為z。 例如: int x = 5; int a = (x3)?5:3; 則a的值為5。如果x = 2,則a的值為3。,對(duì)象運(yùn)算符(instanceof)用來判斷一個(gè)對(duì)象是否屬于某個(gè)指定的類或其子類的實(shí)例,如果是,。
29、返回真(true),否則返回假(false)。 例如: boolean b = userObject instanceof Applet 用來判斷userObject類是否是Applet類的實(shí)例。,2.3.7 優(yōu)先級(jí),表2.5 運(yùn)算符優(yōu)先級(jí),2.4 流 程 控 制,流程控制分為三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 分支結(jié)構(gòu)包括單分支語句(if-else語句)和多分支語句(switch語句); 循環(huán)結(jié)構(gòu)包括次數(shù)循環(huán)語句(for語句)和條件循環(huán)語句(while語句)。,2.4.1 分支語句 分支語句分為兩類:單分支語句和多選語句。 1. if-else語句 if-else語句的基本格式為:。
30、 if(布爾表達(dá)式) 語句或塊1; else 語句或塊2; ,【例2.7】測(cè)試if-else語句,如果x10,則輸出x的值,并提示結(jié)果正確,否則輸出x= 10,提示結(jié)果不正確。程序輸出結(jié)果如圖2.7所示。源程序代碼如下: /程序文件名稱為TestIf.java public class TestIf /聲明全局變量x static int x; public static void main(String args) x = 12; if(x10) ,System.out.println(x = + x + 結(jié)果正確); else System.out.println(x = 10 + 結(jié)果不。
31、正確); change(); System.out.println(修改x的值之后); if(x10) System.out.println(x = + x + 結(jié)果正確); else System.out.println(x = 10 + 結(jié)果不正確); ,/change方法:修改x的值 public static void change() x = 5; ,圖2.7 程序輸出結(jié)果,2. switch語句 switch語句的基本格式為: switch(表達(dá)式1) case 表達(dá)式2: 語句或塊2; break; case表達(dá)式3: 語句或塊3; break; case 表達(dá)式4: 語句或塊4。
32、; break; default: 語句或塊5; break; ,其中: (1) 表達(dá)式1的值必須與整型兼容。 (2) case分支要執(zhí)行的程序語句。 (3) 表達(dá)式2、3、4是可能出現(xiàn)的值。 (4) 不同的case分支對(duì)應(yīng)著不同的語句或塊序列。 (5) break表示跳出這一分支。,【例2.8】測(cè)試switch語句,當(dāng)x=1、2、3時(shí),分別打印1、2、3,x不為這三個(gè)值時(shí),打印x的值。程序輸出結(jié)果如圖2.8所示。源程序代碼如下: /程序文件名稱為TestSwitch.java public class TestSwitch public static void main(String arg。
33、s) /聲明變量x int x; x = 12;,System.out.println(x=12時(shí)打印的值); choose(x); x = 3; System.out.println(x=3時(shí)打印的值); choose(x); /choose方法:switch語句結(jié)構(gòu) public static void choose(int x) switch(x) ,case 1: System.out.println(1); break; case 2: System.out.println(2); break; case 3: System.out.println(3); break; defaul。
34、t: System.out.println(x); ,圖2.8 程序輸出結(jié)果,2.4.2 for循環(huán)語句 for循環(huán)語句實(shí)現(xiàn)已知次數(shù)的循環(huán),其基本格式為: for(初始化表達(dá)式;測(cè)試表達(dá)式;步長(zhǎng)) 語句或塊; ,其執(zhí)行順序如下: (1) 首先運(yùn)行初始化表達(dá)式。 (2) 然后計(jì)算測(cè)試表達(dá)式,如果表達(dá)式為true,執(zhí)行語句或塊;如果表達(dá)式為false,退出for循環(huán)。 (3) 最后執(zhí)行步長(zhǎng)。,【例2.9】用for循環(huán)統(tǒng)計(jì)1100(包括100)之間數(shù)的總和。程序輸出結(jié)果如圖2.9所示。源程序代碼如下: /程序文件名稱為TestFor.java public class TestFor public 。
35、static void main(String args) int sum = 0; for(int i = 1; i=100; i+) sum += i; System.out.println(1到100(包括100)的數(shù)的總和為: + sum); ,圖2.9 程序輸出結(jié)果,2.4.3 while循環(huán)語句 while循環(huán)語句實(shí)現(xiàn)受條件控制的循環(huán),其基本格式為: while(布爾表達(dá)式) 語句或塊; 當(dāng)布爾表達(dá)式為true時(shí),執(zhí)行語句或塊,否則跳出while循環(huán)。,上面for循環(huán)語句的例子改為while語句后如下所示: int sum = 0; int i = 1; while (i=100)。
36、 sum += i; i+; System.out.println(1到100(包括100)的數(shù)的總和為: + sum);,2.4.4 do語句 do語句實(shí)現(xiàn)受條件控制的循環(huán),其基本格式為: do 語句或塊; while(布爾表達(dá)式),先執(zhí)行語句或塊,然后再判斷布爾表達(dá)式。與while語句不同,當(dāng)布爾表達(dá)式一次都不為true時(shí),while語句一開始判斷就跳出循環(huán),不執(zhí)行語句或塊,而在do語句中則要執(zhí)行一次。上面那個(gè)例子改為do循環(huán)為: int sum = 0; int i = 1; do sum += i; i+; while (i=100); System.out.println(1到100。
37、(包括100)的數(shù)的總和為: + sum);,3種循環(huán)結(jié)構(gòu)如何選擇,要考慮幾個(gè)因素 首先分析業(yè)務(wù)問題是否是用循環(huán)來實(shí)現(xiàn) 分析業(yè)務(wù)問題判斷我們是否已經(jīng)預(yù)先知道循環(huán)次數(shù) 如果預(yù)先知道循環(huán)次數(shù):用for循環(huán) 如果預(yù)先不知道次數(shù):用while循環(huán) 若至少要執(zhí)行一次循環(huán):用do.while循環(huán) 3種不同的循環(huán)結(jié)構(gòu)其實(shí)可以相互轉(zhuǎn)化,按照上面的規(guī)則來選擇可以簡(jiǎn)化編程,跳轉(zhuǎn)語句 Break label:在switch語句中,break語句用來跳過分支中的其它語句 ;在循環(huán)語句中,break用來跳出當(dāng)前的循環(huán)語句 Continue label:continue語句只用于循環(huán)結(jié)構(gòu),用來結(jié)束本次循環(huán),即跳過循環(huán)體中。
38、位于continue語句后面的尚未執(zhí)的語句 Return 表達(dá)式:return語句用于從當(dāng)前方法中退出 Label:是指標(biāo)號(hào),只起到對(duì)語句標(biāo)識(shí)的作用,2.5 數(shù)組,數(shù)組 數(shù)組(array)是相同類型變量的集合。 數(shù)組變量是引用類型的變量,聲明數(shù)組變量并不分配內(nèi)存空間。 聲明一個(gè)數(shù)組實(shí)質(zhì)是要確定數(shù)組名、數(shù)組的維數(shù)和數(shù)組元素的數(shù)據(jù)類型 。,2.5.1 一維數(shù)組,一、一維數(shù)組定義 語法格式有兩種: 數(shù)組元素類型 數(shù)組名; 或 數(shù)組元素類型 數(shù)組名 如:int intSno或int intSno intSno:為數(shù)組名是符合Java標(biāo)識(shí)符定義規(guī)則的用戶標(biāo)識(shí)符。 Int:表示數(shù)組元素的數(shù)據(jù)類型為整型 方。
39、括號(hào):數(shù)組的標(biāo)志,Java語言中聲明數(shù)組時(shí)不能指定其長(zhǎng)度。 int array6; ,二、初始化 可以通過直接指定初值的方式來完成,也可以用new操作符來完成。 1直接指定初值的方式 例 int a1=23,-9,38,8,65;,數(shù)組a1的初始化,2用關(guān)鍵字new初始化數(shù)組 用關(guān)鍵字new初始化數(shù)組,只為數(shù)組分配存儲(chǔ)空間而不對(duì)數(shù)組元素賦初值。用關(guān)鍵字new來初始化數(shù)組有兩種方式: (1) 先聲明數(shù)組,再初始化數(shù)組。格式如下: 類型標(biāo)識(shí)符 數(shù)組名 ; 數(shù)組名=new 類型標(biāo)識(shí)符數(shù)組長(zhǎng)度; 其中,第一條語句是數(shù)組的聲明語句,第二條語句是初始化語句。,int a ; a=new int9;,(2)。
40、 在聲明數(shù)組的同時(shí)用new關(guān)鍵字初始化數(shù)組。格式如下: 類型標(biāo)識(shí)符 數(shù)組名 =new 類型標(biāo)識(shí)符數(shù)組長(zhǎng)度; 或 類型標(biāo)識(shí)符 數(shù)組名=new 類型標(biāo)識(shí)符數(shù)組長(zhǎng)度; 例如: int a=new int10;,新創(chuàng)建的數(shù)組對(duì)象,其元素根據(jù)類型被設(shè)置為默認(rèn)的初始值。 數(shù)值類型為0 字符類型為u0000 布爾類型為false 引用類型為null,每個(gè)數(shù)組都有一個(gè)屬性length獲取它的長(zhǎng)度,例如:a.length 指明數(shù)組a的長(zhǎng)度(元素個(gè)數(shù));,三、數(shù)組元素引用 數(shù)組名數(shù)組下標(biāo) 其中:數(shù)組下標(biāo)的取值從0開始,下標(biāo)值可以是整數(shù)型常量或整數(shù)型變量表達(dá)式。 對(duì)intSno數(shù)組來說下面兩條賦值語句是合法的: i。
41、ntSno4=32; intSno3+2=86; 但intSno6=12;是錯(cuò)誤的。,增強(qiáng)的for循環(huán)(JDK 1.5),JDK 1.5引入一個(gè)新的for循環(huán),可以不用下標(biāo)就可以依次訪問數(shù)組元素。語法: for(elementType value : arrayRefVar) 例如 for(int i = 0; i myList.length; i+) sum += myListi; for(double value : myList) sum += value; ,【示例程序c6_1.java】 數(shù)組的聲明、初始化和其長(zhǎng)度的測(cè)定。 public class c6_1 public stati。
42、c void main(String arg ) int i; double a1 ;/ 放在變量后面聲明 char a2; / 放在變量前面聲明 a1=new double8;/為a1分配8個(gè)double型元素的存儲(chǔ)空間(64字節(jié)) a2=new char8; /為a2分配8個(gè)char型元素的存儲(chǔ)空間(16字節(jié)),int a3 =new int8;/在聲明數(shù)組時(shí)初始化數(shù)組, 為a3分配32字節(jié) byte a4=new byte8; /在聲明數(shù)組時(shí)初始化數(shù)組,為a4分配8字節(jié) char a5 =A,B,C,D,E,F,H,I;/直接指定初值方式 /下面各句測(cè)定各數(shù)組的長(zhǎng)度,/以下各句引用數(shù)組中。
43、的每一個(gè)元素,為各元素賦值 for(i=0;i8;i+) a1i=100.0+i; a3i=i; a2i=(char)(i+97);/將整型轉(zhuǎn)換為字符型 System.out.println(a1.length=+a1.length); System.out.println(a2.length=+a2.length); System.out.println(a3.length=+a3.length); System.out.println(a4.length=+a4.length); System.out.println(a5.length=+a5.length);,/下面各句打印各數(shù)組元素 。
44、System.out.println(ta1ta2ta3ta4ta5); System.out.println(tdoubletchartinttbytetchar); for(i=0;i8;i+) System.out.println(t+a1i+t+a2i+t+ a3i+t+a4i+t+a5i); ,該程序的運(yùn)行結(jié)果如下: a1.length=8 a2.length=8 a3.length=8 a4.length=8 a5.length=8,a1 a2 a3 a4 a5 double char int byte char 100.0 a 0 0 A 101.0 b 1 0 B 102.0 。
45、c 2 0 C 103.0 d 3 0 D 104.0 e 4 0 E 105.0 f 5 0 F 106.0 g 6 0 H 107.0 h 7 0 I,數(shù)組下標(biāo)的靈活使用 【示例程序c6_2.java】 用數(shù)組求解Fibonacci數(shù)列的前20項(xiàng),即使用數(shù)組下標(biāo)表達(dá)式求解數(shù)學(xué)上的迭代問題。,public class c6_2 public static void main(String args) int i; int f =new int20;/創(chuàng)建數(shù)組f,使其可存儲(chǔ)20個(gè)整型數(shù)據(jù) f0=1;f1=1; for(i=2;i20;i+) fi=fi-2+fi-1;/數(shù)組元素的下標(biāo)使用循環(huán)變。
46、量 for(i=0;i20;i+) if(i%5=0)System.out.println(n); System.out.print(t+fi); ,運(yùn)行結(jié)果是: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,【示例程序c6_3.java】 設(shè)數(shù)組中的數(shù)值是由小到大存放的,編寫二分查找程序。 import java.io.*; class FindSearch int binarySearch(int arr ,int searchValue) int low=0;/ low是第一個(gè)數(shù)組元素的下標(biāo) int 。
47、high=arr.length-1;/ high是最后一個(gè)數(shù)組元素的下標(biāo) int mid=(low+high)/2; / mid是中間那個(gè)數(shù)組元素的下標(biāo) while(low=high /要找的數(shù)可能在數(shù)組的后半部分中,else high=mid-1; /要找的數(shù)可能在數(shù)組的前半部分中 mid=(low+high)/2; if(lowhigh) mid=-1; return mid;/ mid是數(shù)組元素下標(biāo),若為-1則表示不存在要查的元素 public class c6_3 public static void main(String args)throws IOException, Buffe。
48、redReader keyin=new BufferedReader(new InputStreamReader(System.in); int i,k,search,mid; String c1; int arr =2,4,7,18,25,34,56,68,89; System.out.println(打印原始數(shù)據(jù)); for(i=0;iarr.length;i+) System.out.print( +arri); System.out.println(n); System.out.println(請(qǐng)輸入要查找的整數(shù)); c1=keyin.readLine( );,search=Integ。
49、er.parseInt(c1); FindSearch p1=new FindSearch( ); mid=p1.binarySearch(arr,search); if(mid=-1) System.out.println(沒找到!); else System.out.println(所查整數(shù)在數(shù)組中的位置下標(biāo)是:+mid); ,運(yùn)行結(jié)果: 打印原始數(shù)據(jù) 2 4 7 18 25 34 56 68 89 請(qǐng)輸入要查找的整數(shù) 68 所查整數(shù)在數(shù)組中的位置下標(biāo)是:7,四、復(fù)制數(shù)組,直接使用賦值語句不能實(shí)現(xiàn)數(shù)組的復(fù)制,結(jié)果是兩個(gè)數(shù)組引用變量指向同一個(gè)數(shù)組對(duì)象。 復(fù)制數(shù)組的方法 使用循環(huán)來復(fù)制每個(gè)元素。
50、 使用System.arraycopy方法 使用數(shù)組的clone方法,可以把一個(gè)數(shù)組變量拷貝給另一個(gè),這時(shí)兩個(gè)變量引用同一個(gè)數(shù)組,如: int aa=1,2,3,4,5; int bb=aa;,aa,bb,Java.lang.System類的arraycopy()方法提供了數(shù)組元素復(fù)制功能: int source=1,2,3; int dest =5,6,7,8,9; / 復(fù)制源數(shù)組中從下標(biāo)0開始的source.length個(gè)元素到 / 目的數(shù)組,從下標(biāo)0的位置開始存儲(chǔ)。 System.arraycopy(source, 0, dest, 0, source.length);,System.a。
51、rraycopy(source, 0, dest, 0, source.length);,source,dest,source,dest,五、向方法傳遞數(shù)組,可以將數(shù)組變量作為實(shí)參傳遞給方法。 基本數(shù)據(jù)類型傳遞的是實(shí)際值的拷貝,修改形參,不影響實(shí)參。 數(shù)組引用變量中傳遞的是對(duì)象的引用,修改形參,將改變實(shí)參引用的數(shù)組對(duì)象。 也可以從方法中返回?cái)?shù)組。,日常生活中處理的許多數(shù)據(jù),從邏輯上看是由若干行、若干列組成的。例如,矩陣、行列式、二維表格等。圖6.8給出了一個(gè)簡(jiǎn)單的矩陣。為適應(yīng)存放這樣一類數(shù)據(jù),人們?cè)O(shè)計(jì)出了一種如圖6.9所示的數(shù)據(jù)結(jié)構(gòu)二維數(shù)組。,2.5.2 二 維 數(shù) 組,矩陣,二維數(shù)組,一、聲。
52、明 二維數(shù)組的聲明與一維數(shù)組類似,只是需要給出兩對(duì)方括號(hào),其格式如下: 類型說明符 數(shù)組名 ; 或 類型說明符 數(shù)組名;,例如:聲明數(shù)組名為arr的二維整型數(shù)組: int arr ; 或 int arr; 其中:類型說明符可以是Java的基本類型和引用類型;數(shù)組名是用戶遵循標(biāo)識(shí)符命名規(guī)則給出的一個(gè)標(biāo)識(shí)符;兩個(gè)方括號(hào)中,前面的方括號(hào)表示行,后面的方括號(hào)表示列。,二、初始化 1用new操作符初始化數(shù)組 用new操作符來初始化數(shù)組有兩種方式:,(1) 先聲明數(shù)組再初始化數(shù)組。 數(shù)組名=new 類型說明符數(shù)組長(zhǎng)度 ; 或 數(shù)組名=new 類型說明符數(shù)組長(zhǎng)度 數(shù)組長(zhǎng)度; 其中:對(duì)數(shù)組名、類型說明符和數(shù)組。
53、長(zhǎng)度的要求與一維數(shù)組一致。,例如: int arra ; /聲明二維數(shù)組 arra=new int34;/初始化二維數(shù)組 上述兩條語句聲明并創(chuàng)建了一個(gè)3行4列的數(shù)組arra。也就是說arra數(shù)組有3個(gè)元素,而每一個(gè)元素又都是長(zhǎng)度為4的一維數(shù)組。實(shí)際上共有12個(gè)元素,共占用12*4=48個(gè)字節(jié)的連續(xù)存儲(chǔ)空間。這里的語句: arra=new int34;,實(shí)際上相當(dāng)于下述4條語句: arra=new int3 ;創(chuàng)建一個(gè)有3個(gè)元素的數(shù)組,且每個(gè)元素也是一個(gè)數(shù)組。 arra0=new int4;創(chuàng)建arra0元素的數(shù)組,它有4個(gè)元素。 arra1=new int4;創(chuàng)建arra1元素的數(shù)組,它有4個(gè)。
54、元素。 arra2=new int4;創(chuàng)建arra2元素的數(shù)組,它有4個(gè)元素。 也等價(jià)于: arra=new int3 for(int i=0;i3;i+) arrai=new int4;,也就是說,在初始化二維數(shù)組時(shí)也可以只指定數(shù)組的行數(shù)而不給出數(shù)組的列數(shù),每一行的長(zhǎng)度由二維數(shù)組引用時(shí)決定。但不能只指定列數(shù)而不指定行數(shù)。 上述語句的作用如圖6.11所示。,語句“arra=new int34;”的作用,(2) 在聲明數(shù)組時(shí)初始化數(shù)組。格式如下: 類型說明符 數(shù)組名=new 類型說明符數(shù)組長(zhǎng)度 ; 或 類型說明符 數(shù)組名 =new 類型說明符數(shù)組長(zhǎng)度 數(shù)組長(zhǎng)度; 例如: int arr=new 。
55、int4 ; int arr =new int43; 但是,不指定行數(shù)而指定列數(shù)是錯(cuò)誤的。例如,下面的初始 化是錯(cuò)誤的。 int arr=new int 4;,2直接指定初值的方式 在數(shù)組聲明時(shí)對(duì)數(shù)據(jù)元素賦初值就是用指定的初值對(duì)數(shù)組初始化。例如: int arr1=3, -9,6,8,0,1,11,9,8 ; 此語句聲明并初始化數(shù)組arr1,它有3個(gè)元素,每個(gè)元素又都是有3個(gè)元素的一維數(shù)組。 用指定初值的方式對(duì)數(shù)組初始化時(shí),各子數(shù)組元素的個(gè)數(shù)可以不同。例如: int arr1=3, -9,8,0,1,10,11,9,8;,它等價(jià)于: int arr1=new int3 ; int ar10=3。
56、,-9; int ar11=8,0,1; int ar12=10,11,9,8;,測(cè)定數(shù)組的長(zhǎng)度及數(shù)組賦值 與一維數(shù)組一樣,也可以用.length成員方法測(cè)定二維數(shù)組的長(zhǎng)度,即元素的個(gè)數(shù)。只不過當(dāng)使用“數(shù)組名.length”的形式測(cè)定的是數(shù)組的行數(shù);而使用“數(shù)組名i.length”的形式測(cè)定的是該行的列數(shù)。例如,若有如下的初始化語句: int arr1=3, -9,8,0,1,10,11,9,8 ; 則arr1.length的返回值是3,表示數(shù)組arr1有3行或3個(gè)元素。而arr12.length的返回值是4,表示arr12的長(zhǎng)度為4,即有4個(gè)元素。,【示例程序c6_11.java】 在程序中。
57、測(cè)定數(shù)組的長(zhǎng)度。 public class c6_11 public static void main(String arg ) int i,j; int len1 =new int2; int len2 =new int2; int a1=1,4,8,9,3,2,2; int a2 =90,3,9,12; int a1len=a1.length; /將a1數(shù)組的長(zhǎng)度賦給a1len int a2len=a2.length; /將a2數(shù)組的長(zhǎng)度賦給a2len,System.out.println(a1.length=+a1.length); for(i=0;i2;i+) len1i=a1i.le。
58、ngth; /將a1數(shù)組的子數(shù)組的長(zhǎng)度賦給len1i System.out.println(a1 .length=+len1i); for(i=0;i2;i+) for(j=0;jlen1i;j+) System.out.print( +a1ij); System.out.println(n); ,System.out.println(a2.length=+a2.length); /賦a2數(shù)組的子數(shù)組的長(zhǎng)度 for(i=0;i2;i+) len2i=a2i.length; System.out.println(a2 .length=+len2i); /打印a2數(shù)組的值 for(i=0;i2;i。
59、+) for(j=0;jlen2i;j+) System.out.print( +a2ij); System.out.println(n); ,a2=a1;/將a1數(shù)組賦給a2 System.out.println(a1.length=+a1.length); /賦a1數(shù)組的子數(shù)組的長(zhǎng)度 for(i=0;i2;i+) len1i=a1i.length; System.out.println(a1 .length=+len1i); /打印a1數(shù)組的值 for(i=0;i2;i+) for(j=0;jlen1i;j+) System.out.print( +a1ij); System.out.pr。
60、intln(n); ,System.out.println(a2.length=+a2.length); /賦a2數(shù)組的子數(shù)組的長(zhǎng)度 for(i=0;i2;i+) len2i=a2i.length; System.out.println(a2 .length=+len2i); /打印a2數(shù)組的值 for(i=0;i2;i+) for(j=0;jlen2i;j+) System.out.print( +a2ij); System.out.println(n); System.out.println(n); ,該程序的運(yùn)行結(jié)果是:,數(shù)組名作為成員方法的參數(shù) 與一維數(shù)組類似,二維數(shù)組的數(shù)組名也可以作。
61、為參數(shù)傳遞給成員方法。下面通過兩個(gè)例題說明這個(gè)問題。 【示例程序c6_12.java】 編程實(shí)現(xiàn)在矩陣(用二維數(shù)組表示)中找最大數(shù)。 class Maxvalue int maxvl(int arr1 ) int i,k,max; int len=arr1.length,len1;,max=arr100; for(i=0;imax) max=arr1ik; return max; public class c6_12 ,public static void main(String args) int maxx; int arr =1,3,7,6,78,0,42,5,-98,7,10,-1; M。
62、axvalue p1=new Maxvalue( ); maxx=p1.maxvl(arr); System.out.println(max=+maxx); 運(yùn)行結(jié)果: max=78,【示例程序c6_13.java】 兩個(gè)矩陣相加。 class AddClass void add(int arA ,int arB ,int arC ) int i,k,len1; int len=arA.length; for(i=0;ilen;i+) len1=arAi.length; for(k=0;klen1;k+) arCik=arAik+arBik; ,public class c6_13 publi。
63、c static void main(String args) int i,k; int arA =1,3,7,6,78,0,42,5,-98,7,10,-1; int arB =1,3,7,6,78,0,42,5,-98,7,10,-1; int arC =new int34; int len=arA.length,len1; AddClass p1=new AddClass( ); p1.add(arA,arB,arC); System.out.println(tAttBttC); for(i=0;ilen;i+), len1=arAi.length; for(k=0;klen1;k+) 。
64、System.out.print( +arAik);/打印第i行A矩陣 System.out.print(t); for(k=0;klen1;k+) System.out.print( +arBik);/打印第i行B矩陣 System.out.print(t); for(k=0;klen1;k+) System.out.print( +arCik);/打印第i行C矩陣 System.out.println(n); ,運(yùn)行結(jié)果: A B C 1 3 7 6 1 3 7 6 2 6 14 12 78 0 42 5 78 0 42 5 156 0 84 10 -98 7 10 -1 -98 7 10 -1 -196 14 20 -2。
總結(jié)
以上是生活随笔為你收集整理的描述java源程序构成_Java第二章Java程序设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 华为oj题java单词博弈_【华为OJ】
- 下一篇: 加分二叉树 java_P1040 加分二
