Java程序設(shè)計教程第4版習(xí)題解答與實(shí)驗(yàn)指導(dǎo)第18章_第1頁
Java程序設(shè)計教程第4版習(xí)題解答與實(shí)驗(yàn)指導(dǎo)第18章_第2頁
Java程序設(shè)計教程第4版習(xí)題解答與實(shí)驗(yàn)指導(dǎo)第18章_第3頁
Java程序設(shè)計教程第4版習(xí)題解答與實(shí)驗(yàn)指導(dǎo)第18章_第4頁
Java程序設(shè)計教程第4版習(xí)題解答與實(shí)驗(yàn)指導(dǎo)第18章_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java程序設(shè)計好用教程

(第4版)

習(xí)題解答及試驗(yàn)指導(dǎo)

葉核亞編著

2019年11月

書目

“Java程序設(shè)計”課程教學(xué)要求.............................1

第1章Java概述...........................................4

第2章Java語言基礎(chǔ).......................................6

第3章類的封裝、繼承和多態(tài)..............................27

第4章接口、內(nèi)部類和JavaAPI基礎(chǔ)......................45

第5章異樣處理..........................................51

第6章圖形用戶界面......................................53

第7章多線程............................................59

第8章輸入/輸出流和文件操作............................62

“Java程序設(shè)計”課程教學(xué)要求

1.課程性質(zhì)、目的和任務(wù)

程序設(shè)計是高等學(xué)校計算機(jī)學(xué)科及電子信息學(xué)科各專業(yè)本科的核

心專業(yè)基礎(chǔ)課程,是培育學(xué)生軟件設(shè)計實(shí)力的重要課程。在計算機(jī)學(xué)

科的本科教學(xué)中,起著特別重要的作用。

"Java程序設(shè)計”是計算機(jī)科學(xué)及技術(shù)專業(yè)本科的專業(yè)基礎(chǔ)限選

課,開設(shè)本課程的目的是:進(jìn)行程序設(shè)計和面對對象方法的基礎(chǔ)訓(xùn)練;

運(yùn)用Java編程技術(shù),設(shè)計解決操作系統(tǒng)、網(wǎng)絡(luò)通信、數(shù)據(jù)庫等多種

實(shí)際問題的應(yīng)用程序。

本課程通過全面、系統(tǒng)地介紹Java語言的基礎(chǔ)學(xué)問、運(yùn)行機(jī)制、

多種編程方法和技術(shù),使學(xué)生理解和駕馭面對對象的程序設(shè)計方法,

理解和駕馭網(wǎng)絡(luò)程序的特點(diǎn)和設(shè)計方法,建立起堅固扎實(shí)的理論基

礎(chǔ),培育綜合應(yīng)用程序的設(shè)計實(shí)力。

本課程的先修課程包括:C/C++程序設(shè)計I、C/C++程序設(shè)計H、

數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫原理等。

2.教學(xué)基本要求

本課程的基本要求如下。

①了解Java語言特點(diǎn),理解JavaApplication應(yīng)用程序的運(yùn)行

原理和方法。駕馭在JDK環(huán)境中編譯和運(yùn)行程序的操作,熟識在

MyEclipse集成開發(fā)環(huán)境中,編輯、編譯、運(yùn)行和調(diào)試程序的操作。

②駕馭Java語言中語句、數(shù)組、引用類型等基本語法成分的運(yùn)

用方法,通過類、接口、內(nèi)嵌類型、包、異樣處理等機(jī)制表達(dá)和實(shí)現(xiàn)

面對對象程序設(shè)計思想。

③駕馭Java的多種好用技術(shù),包括圖形用戶界面、多線程、文

件操作和流、運(yùn)用URL和Socket進(jìn)行網(wǎng)絡(luò)通信等。

@熟識JavaJDBC數(shù)據(jù)庫應(yīng)用的設(shè)計方法。

⑤熟識基于JSP的Web應(yīng)用設(shè)計方法。

重點(diǎn):面對對象概念,圖形用戶界面,線程,流及文件操作,Socket

通信。

難點(diǎn):繼承和多態(tài),線程同步,流及文件操作,Socket通信,JDBC,

JSPo

3.學(xué)時安排

本課程學(xué)時為64學(xué)時,其中講課48學(xué)時,試驗(yàn)16學(xué)時。學(xué)時安

排見下表。

試合

章節(jié)(或內(nèi)容)

驗(yàn)計

Java概述22

Java語言基礎(chǔ)44

類的封裝、繼承和多態(tài)628

接口、內(nèi)部類和JavaAPI

426

基礎(chǔ)

異樣處理22

圖形用戶界面628

多線程426

輸入/輸出流和文件操作628

網(wǎng)絡(luò)通信628

數(shù)據(jù)庫應(yīng)用224

Web應(yīng)用426

綜合應(yīng)用設(shè)計22

合計481664

4.試驗(yàn)教學(xué)目標(biāo)及基本要求

"Java程序設(shè)計”是理論及實(shí)踐相結(jié)合的課程,不僅要求學(xué)生駕

馭基礎(chǔ)學(xué)問,理解基本原理,更要在實(shí)踐環(huán)節(jié)中培育軟件設(shè)計的基本

技能。實(shí)踐性環(huán)節(jié)是鞏固所學(xué)理論學(xué)問、積累程序設(shè)計閱歷的必不行

少的重要環(huán)節(jié),是提高程序設(shè)計實(shí)力和計算機(jī)操作技能的有力保障。

試驗(yàn)和課程設(shè)計等都是加強(qiáng)程序設(shè)計訓(xùn)練所必需的實(shí)踐環(huán)節(jié)。

課程試驗(yàn)要求是,嫻熟運(yùn)用一種Java開發(fā)環(huán)境(如MyEclipse),

駕馭編譯、運(yùn)行和調(diào)試Java程序的操作,針對不同狀況進(jìn)行軟件測

試,完善程序并提高程序性能。

試驗(yàn)類型有驗(yàn)證和設(shè)計兩種。驗(yàn)證型試驗(yàn)的要求是,仿制已有例

題,驗(yàn)證面對對象程序設(shè)計的理論和方法,理解基本原理;設(shè)計型試

驗(yàn)的要求是,應(yīng)用圖形用戶界面、線程、Applet,文件操作和流、網(wǎng)

第1章Java概述

本章教學(xué)內(nèi)容及要求如下:

①了解Java語言特點(diǎn),理解JavaApplication應(yīng)用程序的運(yùn)行

原理和方法,理解由Java虛擬機(jī)支持的程序運(yùn)行機(jī)制。

②駕馭在JDK環(huán)境中編譯和運(yùn)行程序的操作,熟識在MyEclipse

集成開發(fā)環(huán)境中編輯、編譯、運(yùn)行和調(diào)試程序的操作。

重點(diǎn):駕馭在JDK和MyEclipse環(huán)境中編譯和運(yùn)行Java

Application應(yīng)用程序的操作。

1.1了解Java

1-1Java具有哪些適合在Internet環(huán)境中運(yùn)行的特點(diǎn)?

【答】跨平臺特性、完全面對對象和簡潔性、牢靠性、平安性、

多線程、支持分布式網(wǎng)絡(luò)應(yīng)用等。

1-2什么是跨平臺特性?Java怎樣實(shí)現(xiàn)跨平臺特性?

【答】跨平臺特性是指一個應(yīng)用程序能夠運(yùn)行于不同的操作系統(tǒng)

平臺。Java采納虛擬機(jī)技術(shù)支持跨平臺特性,不同的操作系統(tǒng)上運(yùn)行

不同版本的Java虛擬機(jī)。

1-3Java源程序文件編譯后生成什么文件?程序的運(yùn)行機(jī)制是怎

樣的?

【答】Java將源程序文件(*.java)中的每個類編譯生成一個字

節(jié)碼文件(.class),由Java虛擬機(jī)說明執(zhí)行字節(jié)碼文件。

1-4Java應(yīng)用程序有哪兩種形式?它們的運(yùn)行方式有什么不同?

【答】Java應(yīng)用程序有兩種:Application和Applet。

Application是能夠獨(dú)立運(yùn)行的應(yīng)用程序,有限制臺和圖形用戶界

面兩種運(yùn)行方式。

Applet是可以嵌入Web頁面的最小應(yīng)用,它不能獨(dú)立運(yùn)行,必需

嵌入超文本(*.html)中,由閱讀器中的Java說明器說明執(zhí)行。

1.2JDK

1-5環(huán)境變量path和classpath的作用分別是什么?

【答】path供應(yīng)可執(zhí)行文件(.exe)的路徑;classpath供應(yīng)類

文件(.class)的路徑。

1-6什么是包?為什么須要包機(jī)制?

【答】包(package)是類的集合。包是Java區(qū)分類名字空間的

機(jī)制。一個包中的多個類之間不能重名,不同包中的類名則可以相同。

【習(xí)1.1】為例L2的Line類增加以下方法:

publicdoublelength()//

返回直線長度

inta=start.x-end.x,b=start.y-end.y;

returnMath,sqrt(a*a+b*b);

//Math,sqrt(x)返回x的平方根

1-7Java對源程序文件中的聲明語句及文件其命名規(guī)則有什么要

求?

【答】在一個Java源程序文件(*.java)中,可以運(yùn)用package

語句聲明包,運(yùn)用import語句導(dǎo)入包,之后運(yùn)用class或interface

聲明多個類或接口。其中,聲明為public權(quán)限的類或接口只能有一

個,且文件名必需及該類名相同。

1-8程序中的錯誤有哪幾種?分別在什么時刻被發(fā)覺?

【答】語法錯、語義錯、邏輯錯。編譯時能夠發(fā)覺語法錯,運(yùn)行

時能夠發(fā)覺語義錯,運(yùn)行時不能發(fā)覺邏輯錯。

第2章Java語言基礎(chǔ)

本章教學(xué)內(nèi)容及要求如下:

①駕馭Java語言的基本語法成分,包括標(biāo)識符及關(guān)鍵字、數(shù)據(jù)

類型、運(yùn)算符、表達(dá)式、變量聲明等語言成分,駕馭分支、循環(huán)等流

程限制語句的語法和運(yùn)用。特殊留意及C/C++的不同之處。

②駕馭數(shù)組類型的聲明和動態(tài)內(nèi)存申請,駕馭以基本數(shù)據(jù)類型和

類的兩種方式聲明和運(yùn)用字符串。

③駕馭Java語言的方法聲明和調(diào)用規(guī)則,駕馭基本類型和引用

類型作為方法參數(shù)和返回值的傳遞規(guī)則。

④駕馭MyEclipse程序調(diào)試技術(shù)。

重點(diǎn):數(shù)組的引用模型;運(yùn)用靜態(tài)方法,引用類型作為方法的參

數(shù)和返回值。

難點(diǎn):位運(yùn)算,二進(jìn)制;遞歸算法。MyEclipse程序調(diào)試技術(shù)。

2.1語言成分

1.數(shù)據(jù)類型、變量及運(yùn)算

2-1Java語言的基本數(shù)據(jù)類型有哪些?引用數(shù)據(jù)類型有哪些?

【答】基本數(shù)據(jù)類型有:整數(shù)類型byte、short>int>long,浮

點(diǎn)數(shù)類型float、double,字符類型char,布爾類型boolean;引用

數(shù)據(jù)類型包括數(shù)組(array)、類(class)和接口(interface)。

2-2及C++語言相比,Java語言的變量和常量聲明有什么差別?

【答】Java語言沒有全局變量,(成員)局部變量含義及變量聲明

格式及C++相同。

Java語言沒有宏替換,運(yùn)用最終變量概念代替C++中的常量和宏

替換。運(yùn)用final關(guān)鍵字聲明最終變量,只能賦值一次,這樣既增加

了常量功能,又避開全局變量和宏替換的副作用。

2-3Java語言的運(yùn)算分哪些類型?及C++語言相比,運(yùn)算符及運(yùn)

算含義有哪些變更?

【答】Java語言有算術(shù)運(yùn)算、關(guān)系運(yùn)算、位運(yùn)算、邏輯運(yùn)算、賦

值運(yùn)算、強(qiáng)制類型轉(zhuǎn)換、條件運(yùn)算、括號運(yùn)算、點(diǎn)運(yùn)算、new、+字符

串連接運(yùn)算和instanceof運(yùn)算等,其中十字符串連接和instanceof

運(yùn)算符是Java新增的,此外,放棄了C++的sizeof運(yùn)算符。

及C++語言相比,Java語言的語法更為嚴(yán)謹(jǐn),將-C++中某些簡潔引

起混淆的語法做了修訂,編譯時也將嚴(yán)格進(jìn)行檢查。在Java語言中,

運(yùn)算符及運(yùn)算含義有變更的說明如下。

①沒有賦值功能的表達(dá)式不能作為語句。例如:

inti=0;

i+1;〃編譯錯“無效

的賦值運(yùn)算”

②逗號是分隔符,僅用于分隔表達(dá)式,不是運(yùn)算符,不能出現(xiàn)在

表達(dá)式中。例如:

for(inti=0,j=0;i<n&&j<n;i++,j+[)//正

確,逗號是分隔符

intx=0,y=0;〃正確,逗號

是分隔符

System.out.printin(/,/z+(x=l,y=2));//編譯

錯,表達(dá)式不能包含逗號

x=l,y=2;//編譯錯,逗

號僅用于分隔表達(dá)式,不是運(yùn)算符

x=l;y=2;〃正確

③Java語言增加boolean類型用于邏輯運(yùn)算,其值不是0或1。

例如:

booleanb=0;〃編譯錯“不

能將int類型轉(zhuǎn)換成boolean類型”

關(guān)系運(yùn)算、邏輯運(yùn)算和instanceof運(yùn)算的結(jié)果都是boolean類型。

整數(shù)不能進(jìn)行邏輯運(yùn)算。

Java語言嚴(yán)格區(qū)分boolean及int類型,運(yùn)算類型不能混淆。

boolean類型及整數(shù)類型或其他類型不能進(jìn)行算術(shù)運(yùn)算、關(guān)系運(yùn)算、

邏輯運(yùn)算。例如:

booleanb=false+0;〃編譯錯

"boolean類型及int類型不能進(jìn)行+運(yùn)算”

if、while等語句中的條件表達(dá)式不能是賦值運(yùn)算,否則產(chǎn)生編譯

錯。

if(i=0)〃編譯錯,

i=0運(yùn)算結(jié)臬是int類型,而不是boolean

while(i=0)//編譯錯

④字符串連接運(yùn)算符(+)自動將其他類型變量值轉(zhuǎn)換成字符串

類型。

2-整數(shù)運(yùn)算的數(shù)據(jù)類型及數(shù)據(jù)溢出

2-4表達(dá)式(byte)127+(byte)127的運(yùn)算結(jié)果是,其

數(shù)據(jù)類型是o

【答】254,int

K說明IJava的整數(shù)默認(rèn)是int類型,byte類型只是形式上的,

取相應(yīng)int值的最低1個字節(jié)。全部byte和short整數(shù)運(yùn)算仍舊是

int類型運(yùn)算,運(yùn)算結(jié)果是int類型,當(dāng)運(yùn)算結(jié)果在byte數(shù)據(jù)范圍內(nèi)

時,也可視作byte類型。

2-5已知Integer.MAX_VALUE值為2147483647,表達(dá)式

Integer.MAX_VALUE+1的運(yùn)算結(jié)果是0

【答】-2147483648,即0x80000000

K說明IInteger.MAX_VALUE值為0x7fffffff,

0x7fffffff+l=0x80000000,數(shù)據(jù)溢出。運(yùn)算過程如圖2.1所示。

圖2.1int整數(shù)數(shù)據(jù)溢出

2-6設(shè)intmin=Integer.MIN_VALUE;,表達(dá)式min+min的運(yùn)算結(jié)

果是o

【答】0

K說明1Integer.MIN_VALUE值為0x80000000,

0x80000000+0x80000000=0,數(shù)據(jù)溢出。

2?7設(shè)intmin=Integer.MIN_VALUE;,表達(dá)式(long)(min+min)

的運(yùn)算結(jié)果是O

【答】0

K說明』Integer.MIN_VALUE值為0x80000000,

0x80000000+0x80000000=0,數(shù)據(jù)溢出。強(qiáng)制類型轉(zhuǎn)換,只是把0強(qiáng)

制轉(zhuǎn)換成long類型。

2-8設(shè)intmin=Integer.MINVALUE;,表達(dá)式

(long)min+(long)min的運(yùn)算結(jié)果是。

【答】Oxffffffff00000000,或-4294967296。

K說明》Integer.MIN_VALUE值為0x80000000,先強(qiáng)制轉(zhuǎn)換成long

類型,值為0xffffffff80000000,再作為long類型運(yùn)算,數(shù)據(jù)不溢

出。

2-9設(shè)intmin=Integer.MIN_VALUE;longg=min+min;,則g的

值是。

【答】0

K說明1min+min作為int類型運(yùn)算,數(shù)據(jù)溢出。

2-10設(shè)intmin=Integer.MINVALUE;longg=min;g+=min;,則

g的值是O-

【答】Oxffffffff00000000,或-4294967296。

K說明Ilongg=min;賦值將min自動擴(kuò)容到long類型,再運(yùn)算,

long數(shù)據(jù)不溢出。

3.整數(shù)位運(yùn)算

2-11表達(dá)式125&10的值是,表達(dá)式125|10的值

是O

【答】8,127

K說明』int整數(shù)二進(jìn)制位運(yùn)算,運(yùn)算過程如圖2.2所示。

圖2.2int整數(shù)二進(jìn)制位運(yùn)算

4.浮點(diǎn)數(shù)運(yùn)算

2-12設(shè)doublex,將x按四舍五入方式強(qiáng)制轉(zhuǎn)換成int類型的表

達(dá)式的是o

【答】(int)(x+0.5)

5.字符類型及運(yùn)算

2-13Java語言的char字符類型及C/C++語言相比有什么差別?

【答】兩者字符常量表示形式相同,都是用單引號將字符括起來

作為字符常量。

不同之處如下:

①C/C++語言的char類型表示ASCH字符,包括數(shù)字、字母、符

號等,字長為1字節(jié),取值范圍為0?127;一個漢字用2字節(jié)表示。

②Java語言的char類型表示Unicode字符,包括ASCII字符和

漢字等,一個ASCH字符和漢字均占用2字節(jié),取值范圍為\u0000?

\uFFFF(即0?65535)。

2-14表達(dá)式’£+1的運(yùn)算結(jié)果是,(char)('a'+l)

的運(yùn)算結(jié)果是O

【答】98,'b'

K說明加har也是數(shù)值類型,可將char看成是2字節(jié)無符號整數(shù),

范圍是0?65535。

1是int類型,4字節(jié)。'a'+1進(jìn)行的是算術(shù)運(yùn)算,操作數(shù)的數(shù)據(jù)

類型相容,結(jié)果取較長的int數(shù)據(jù)類型,'a'+1運(yùn)算含義為將'a'的

ASCH碼97加lo

(char)('a'+1)將98強(qiáng)制轉(zhuǎn)換成char類型,結(jié)果為'b'。

2-15設(shè)charchl=108,ch2=73;,以下語句有什么錯誤?如何改

正?

chl=chl+ch2;

【答】編譯錯,不能將int轉(zhuǎn)換成char。改正如下:

chl=(char)(chl+ch2);

K說明力及byte和short類型存儲和運(yùn)算原理相同,char也是以

int存儲和運(yùn)算的,在0?65535范圍內(nèi)的整數(shù)可看成一個Unicode字

符的編碼,因此能夠以字符顯示。兩個char作為數(shù)值參與算術(shù)運(yùn)算

時,仍舊是int類型運(yùn)算,運(yùn)算結(jié)果是int類型。所以,不能賦值給

char變量。

2.2流程限制語句

2-16Java語言的語句及C/C++語言有什么差別?

【答】Java語言語句的語法同C/C++語言,Java語言不支持goto

語句。

【習(xí)2.1]理解Java的字符類型。

①以下程序段輸出ASCH碼可打印字符表。

System,out.printin("ASCII碼可打印字符(\\u0021?

\\u007e)表〃);

for(charch=,\u002T;ch<=,\u007e,;ch++)

//輸出ASCII碼可打印字符手〃

{System.out.print(ch+〃〃);

if(ch%32==0)

System,out.printin();

程序運(yùn)行結(jié)果如下:

ASCII碼可打印字符(\u0021~\u007e)表

!〃#$%&'()*+,-./0123456789:;<

=>?@

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]

八、

abcdefghijklmnopqrstuvwxyz{|}

②修改上述程序段的for語句表達(dá)式如下,輸出Unicode漢字字

符表。

for(charch=,\u4e00,;ch〈二'\u9fa5';ch++)

//Unicode漢字字符表‘一'?'畬第

③Unicode字符的取值范圍是0?65535(\u0000-\uffff),反

之,并不是0?65535之中每個值都對應(yīng)一個字符,標(biāo)準(zhǔn)輸出語句輸

出沒有對應(yīng)字符的編碼時,輸出結(jié)果是問號“?二例如,128沒有對

應(yīng)字符,以下欲輸出編碼為128的字符,輸出結(jié)果是問號。

System,out.printin((char)128);

〃輸出“?”

2-17指出下列程序段中的錯誤以及出錯緣由。

ints=0;

for(inti=0;i<10;i++)

s+=i;

i++;

【答】最終一句產(chǎn)生編譯錯。變量i的作用域在for語句中,在

for語句之外則不能運(yùn)用。

2.3數(shù)組

1.一維數(shù)組

2-18及C/C++的數(shù)組相比,Java的數(shù)組做了哪些改進(jìn)?具有怎樣

的優(yōu)越性?

【答】①Java數(shù)組都是動態(tài)數(shù)組,在聲明數(shù)組變量之后,運(yùn)用

new運(yùn)算符申請數(shù)組存儲空間。

②供應(yīng)length屬性表示數(shù)組長度。

③Java的數(shù)組是引用數(shù)據(jù)類型,兩個數(shù)組變量之間的賦值是引用

賦值,傳遞地址等引用特性,沒有申請新的存儲空間。

④Java將嚴(yán)格檢查數(shù)組元素下標(biāo)范圍,程序運(yùn)行時,假如a[i]

的下標(biāo)i取值超出0?a.length-l范圍,則作為錯誤處理,產(chǎn)生“數(shù)

組下標(biāo)越界”異樣,程序運(yùn)行終止。

⑤數(shù)組名不作指針運(yùn)用。

2-19以下數(shù)組聲明錯誤的是o

(A)int[]a;(B)inta[3];(C)inta[]={l,2,3);

(D)inta[]=newint[3];

【答】B

K說明工Java數(shù)組是動態(tài)數(shù)組,聲明數(shù)組變量時不須要接線指定

數(shù)組長度,只有運(yùn)用new運(yùn)算符申請數(shù)組存儲空間時才須要指定數(shù)組

長度。

2-20設(shè)inta[]=newint[5],b[]=a;執(zhí)行語句b[0]=99;后,a

中各元素值為o

【答】{99,0,0,0,0}

K說明》Java的數(shù)組是引用數(shù)據(jù)類型,兩個數(shù)組變量之間的賦值

是引用賦值,即兩個數(shù)組變量引用同一個數(shù)組,修改其中某一元素將

同時變更另一數(shù)組變量的相應(yīng)元素,如圖2.3所示。

圖2.3數(shù)組的引用模型

2.二維數(shù)組

2-21畫出下列程序段表示mat存儲結(jié)構(gòu)示意圖,并寫出其中數(shù)據(jù)。

intn=5,k=l;

intmat口[]=newint[n][];

for(inti=0;i<n;i++)

{mat[i]=newint[n-i];

for(intj=0;j<n-i;j++)

mat[i][j]=k++;

【答】上三角形二維數(shù)組存儲結(jié)構(gòu)及初值如圖2.4所示。

圖2.4上三角形二維數(shù)組的存儲結(jié)構(gòu)

2.4靜態(tài)方法

2-22Java類中的方法及C/C++中的函數(shù)有什么差別?

【答】①Java類中的方法都是類的成員方法,沒有C/C++中的全

局函數(shù)。

②Java類的成員方法中,不能用*或&聲明參數(shù),方法體中不能用

static聲明局部變量。

2-23Java方法的參數(shù)能夠作為輸出型參數(shù)嗎?

【答】Java方法的參數(shù)傳遞原則及賦值原則相同,依據(jù)參數(shù)類型

不同分二種狀況:

①基本數(shù)據(jù)類型參數(shù)是輸入型參數(shù),形式參數(shù)只能接收實(shí)際參數(shù)

賦值,形式參數(shù)變更后值不能作用于實(shí)際參數(shù),可以聲明返回值向?qū)?/p>

際參數(shù)傳遞運(yùn)算結(jié)果值。

②引用數(shù)據(jù)類型參數(shù)是輸出型參數(shù),形式參數(shù)接收實(shí)際參數(shù)的引

用賦值,即形式參數(shù)和實(shí)際參數(shù)引用同一個引用類型數(shù)據(jù)(數(shù)組或?qū)?/p>

象),任何通過形式參數(shù)對引用數(shù)據(jù)的更改都將作用于實(shí)際參數(shù)。

【習(xí)2.2】下標(biāo)和相等的數(shù)字方陣。

輸出下列下標(biāo)和相等的數(shù)字方陣(當(dāng)n=4時)。

126712510

3581343611

49121498712

1011151616151413

本題目的:二維數(shù)組作為方法的參數(shù)或返回值。

【答】二維數(shù)組中,每一條斜線上各元素的下標(biāo)和相等,算法描

述如圖2.5所示。

圖2.5下標(biāo)和相等的數(shù)字方陣算法描述

方法聲明如下,實(shí)現(xiàn)省略。

publicclassUpmat

〃輸出下標(biāo)和相等的數(shù)字方陣,n指定階數(shù),up指定方向,

返回二維數(shù)組

publicstaticint[][]upmat(intn,booleanup)

publicstaticint「]Hupmat(intn)

〃默認(rèn)方向向上。方法重載

publicstaticvoidprint(intmat[][])

//輸出二維數(shù)組,二維數(shù)組作為參數(shù)

2.5字符串

1.字符串概念

2-24Java的String字符串有哪些特點(diǎn)?比C/C++的字符數(shù)組有

哪些優(yōu)越之處?

【答】①Java的字符串常量表示形式同C/C++,是由雙引號括起

來的字符序列,其中可包含轉(zhuǎn)義字符,如〃hello!〃、〃漢字\n〃、〃〃(空

串)等。字符串只能在同一行內(nèi),不能換行。

②Java的String字符串是一個類,屬于引用數(shù)據(jù)類型。

java.lang.String類供應(yīng)構(gòu)造串對象、求串長length。、取字符

charAt(i)求子串substring()>推斷相等equals(),比較大小

compareTo()等操作。compareTo()方法說明詳見教材第4章

Comparable接口,更多方法說明詳見教材附錄E。

String類表示常量字符串,不供應(yīng)插入、刪除子串操作。

③String及一般類不同的是,具有某些基本數(shù)據(jù)類型的特性。

Java為String類重載了賦值和連接運(yùn)算。例如:

Stringstr=〃abc〃;〃字符串變

量能夠賦值為字符串常量

str=〃abc〃+〃xyz〃;//將兩個字

符串首尾相接連起來,結(jié)果為〃abcxyz〃

str+=〃xyz〃;〃十=定義為字符

串變量在原串基礎(chǔ)上連接另一個字符串

〃i=〃+10//Java自動將其他

類型值轉(zhuǎn)換為字符串,結(jié)果為〃i=L0〃

@Java的字符串對象不是字符數(shù)組,所以,不能以數(shù)組下標(biāo)格式

str[i]對指定位置的字符進(jìn)行操作。例如,以下語句有語法錯:

str[l]=,a);〃語法錯誤,沒

有str[l]表示方式

⑤C/C++語言采納字符數(shù)組表示字符串,以形式對字符串

str的第/個字符進(jìn)行存取操作,并在庫文件string,h中供應(yīng)諸如

strlenO>strcpy()strcmp()>strcat()等函數(shù)實(shí)現(xiàn)字符串操作。

這種表示方式是不健壯、擔(dān)心全的,它沒有對數(shù)組所運(yùn)用的存儲空間

進(jìn)行限制,也沒有對數(shù)組下標(biāo)進(jìn)行越界檢查,會產(chǎn)生更改字符串結(jié)束

符〃\0〃等錯誤,strcpy(char*strl,char*str2)函數(shù)甚至可以將一

個長字符串復(fù)制到一個短字符串的字符數(shù)組中,字符數(shù)組運(yùn)用超出其

預(yù)定范圍的存儲空間,非法占用本不屬于它的存儲空間,導(dǎo)致隨意更

改其他變量值等嚴(yán)峻錯誤,strcat(char*strl,char*str2)函數(shù)存

在同樣問題。

2-25怎樣將數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換成字符串?

【答】將數(shù)值及空串進(jìn)行字符串連接運(yùn)算,例如:

inti=123;

Strings=i+〃〃;〃字符串

連接運(yùn)算,運(yùn)算結(jié)果類型為String

2-26設(shè)char設(shè)=97;,表達(dá)式〃\〃(char)〃+(ch+O)+〃='〃+ch+〃'\”

的運(yùn)算結(jié)果是o

【答】〃(char)97='a'"

K說明Ucharch=97,即charch='a';。

ch+O進(jìn)行的是算術(shù)運(yùn)算,操作數(shù)的數(shù)據(jù)類型相容,結(jié)果取較長的

數(shù)據(jù)類型,因此,當(dāng)charch=97時,ch+O結(jié)果為int類型的97。其

后表達(dá)式各項(xiàng)進(jìn)行字符串連接運(yùn)算,得到結(jié)果。

Java不支持程序員對運(yùn)算符重載功能。但Java自己將“+”運(yùn)算

符重載為字符串連接運(yùn)算,并且自動將其他類型轉(zhuǎn)換成Stringo

重載是多態(tài)的一種形式,以下兩個表達(dá)式都是“+”運(yùn)算,依據(jù)操

作數(shù)類型的不同,能夠區(qū)分所進(jìn)行的不同運(yùn)算:

ch+O〃整數(shù)加法運(yùn)

算,運(yùn)算結(jié)果類型為int

ch+〃〃〃字符串連接運(yùn)

算,運(yùn)算結(jié)果類型為String

2-27能否以s[i]格式讀寫JavaString字符串中的字符?為什

么?

【答】Java的字符串不是字符數(shù)組。Java沒有供應(yīng)s[i]格式表示

字符串中指定字符。緣由分析:假如Java重載口運(yùn)算符供應(yīng)s[i]格

式,則s[i]格式表示可讀寫,即可通過以下兩種方式對字符串中指定

字符進(jìn)行讀取和質(zhì)值用作,例如:

Strings二〃abc〃;

charch=s[0];〃讀取串中

指定元素值

s[0]='x';〃寫,對串中

指定元素賦值

而String類是常量字符串,只能讀不能寫字符。因此,String類

供應(yīng)charAt⑴方法讀取第i個字符,功能同讀取s[i],而沒有供應(yīng)

寫字符方法,java.lang.StringBuffer類有setCharAt(i,ch)方法設(shè)

置第i個字符為cho

通過聲明方法對對象屬性進(jìn)行讀寫操作,符合類的封裝概念,詳

見教材第3章封裝概念。

2-28怎樣比較兩個字符?怎樣比較兩個字符串?有幾種比較字

符串的方法?

【答】char字符是基本數(shù)據(jù)類型,可以運(yùn)用二和!二運(yùn)算符比較是

否相等,也可運(yùn)用也〉二、<、〈=運(yùn)算符比較大小。

String字符串是類,供應(yīng)equals(obj)方法推斷是否相等,返回

boolean類型。供應(yīng)compareTo(cobj)比較大小,返回int類型,當(dāng)

返回0時,表示兩者相等;當(dāng)返回正數(shù)時,表示當(dāng)前對象大;當(dāng)返回

負(fù)數(shù)時,表示當(dāng)前對象小,說明詳見教材第4章Comparable接口。

2-29怎樣將數(shù)值按指定格式轉(zhuǎn)換成字符串?

【答】String聲明如下靜態(tài)方法format()返回指定格式的字符串:

publicstaticStringformat(Stringformat,Object...

args)〃返回format才旨定格式的字符電

其中,格式字符串format定義為:

機(jī)參數(shù)索弓1$][寬度][.精度]變換類型

〈變換類型〉取值有:b(boolean),c(字符)、C(字母大寫)、

d(十進(jìn)制整數(shù))、o(八進(jìn)制整數(shù))、x(十六進(jìn)制整數(shù))、e(浮點(diǎn)數(shù)

指數(shù)形式)、f(浮點(diǎn)數(shù)小數(shù)形式)、s(字符串字母小寫)、S(字符串

字母大寫)。參數(shù)索引指定第幾個參數(shù),省略時為默認(rèn)次序。當(dāng)指定

寬度不足時,以實(shí)際寬度顯示;可用變量指定寬度。例如:

String,format(z/%4d/z,1)〃結(jié)果為

“1”。寬度為4位,不足時,前補(bǔ)空格

String,format(z,%04dz,,1)〃結(jié)果為

“0001”。寬度不足4位時,前補(bǔ)0

String,format(z,%+4dz,,Integer.MIN_VALUE)〃結(jié)果為

“-2147483648”。+表示總顯示正負(fù)號

〃當(dāng)指定寬度不

足時,以實(shí)際寬度顯示

String,format(〃%,d/z,Integer.MAXVALUE)〃結(jié)果為

“2,147,483,647”。以,逗號作千位分隔

String,format(〃Sum=l+...+%2$d=%l$d”,55,10)〃結(jié)果為

“Sum=1+..?+10=55”

String,format(〃%x〃,0177)//八進(jìn)制整數(shù)

0177的十六進(jìn)制形式為“7f”

String.format0x80000000)〃十六進(jìn)制整數(shù)

0x80000000的八進(jìn)制形式“20000000000”

String,format("%8x〃,127)〃十進(jìn)制整數(shù)

127的十六進(jìn)制形式為“7f”

String,format(〃%08x〃,255)〃十進(jìn)制整數(shù)

255的十六進(jìn)制形式為“OOOOOOff”

String,format(〃%08x〃,-1)〃十進(jìn)制整數(shù)-1

的十六進(jìn)制形式為^ffffffff"

String,format(,,%+08x,/,-1)〃運(yùn)行錯,拋出

異樣,十六進(jìn)制不支持正負(fù)號

String,format(〃%9.2f\1234.56789)//結(jié)果為

“1234.57”。以9位寬度2位小數(shù)表示浮點(diǎn)數(shù)

String,format(z/%ez,,1234.56789)〃結(jié)果為

“L234568e+03”,浮點(diǎn)數(shù)科學(xué)記數(shù)法格式

intn=10;

String,format("%"+n+〃c〃,'')〃返回長度

為n的空格字符串。用變量指定寬度

2.標(biāo)準(zhǔn)輸入

2-30程序運(yùn)行時有哪幾種方式能夠輸入數(shù)據(jù)?怎樣獲得輸入數(shù)

據(jù)?輸入數(shù)據(jù)是什么類型?怎樣獲得輸入數(shù)值數(shù)據(jù)?

【答】輸入數(shù)據(jù)方式有多種:吩咐行參數(shù)、標(biāo)準(zhǔn)輸入和圖形用戶

界面等。

①吩咐行參數(shù)

JDK和MyEclipse均供應(yīng)吩咐行參數(shù)輸入方式,操作吩咐詳見教材

第1章。

程序通過main(Stringargs口)方法的args參數(shù)獲得吩咐行參數(shù)

輸入的以空格分隔的多個字符串,見教材第1章例1.1。

②標(biāo)準(zhǔn)輸入

運(yùn)用標(biāo)準(zhǔn)輸入常量System,in調(diào)用InputStream字節(jié)輸入流類的

read。方法獲得從鍵盤輸入的數(shù)據(jù),要處理異樣。異樣和流的基本概

念詳見教材第5、9章,例見教材例2.10和以下習(xí)2.7。

③圖形用戶界面

從圖形用戶界面的文本行等編輯組件中可獲得輸入數(shù)據(jù),詳見教

材第6章。

上述三種方式輸入的數(shù)據(jù)都是String類型。假如要輸入數(shù)值數(shù)據(jù),

就先輸入字符串,再將字符串轉(zhuǎn)換成數(shù)值。

3.將數(shù)值字符串轉(zhuǎn)換成相應(yīng)數(shù)值

2-31怎樣將數(shù)值字符串轉(zhuǎn)換成其所表示的整數(shù)或浮點(diǎn)數(shù)數(shù)值?

【答】調(diào)用java.lang.Integer類的以下靜態(tài)方法parselnt(s)

將字符串s轉(zhuǎn)換成十進(jìn)制整數(shù)。

publicstaticintparselnt(Strings)throws

NumberFormatException

調(diào)用java.lang.Double類的以下靜態(tài)方法parseDouble(s)將字符

串S轉(zhuǎn)換成浮點(diǎn)數(shù)值。

publicstaticdoubleparseDouble(Strings)throws

NumberFormatException

假如字符串不能轉(zhuǎn)換成整數(shù)或浮點(diǎn)數(shù),將拋出數(shù)值格式異樣。詳

見教材第4?5章。

【習(xí)2.3]獲得實(shí)數(shù)字符串表示的浮點(diǎn)數(shù)值。

本例實(shí)現(xiàn)java.lang.Double類中parseDouble(s)方法,從實(shí)數(shù)字

符串獲得其表示的浮點(diǎn)數(shù)值。給出兩種算法。

①由數(shù)字序列和運(yùn)算符構(gòu)造實(shí)數(shù),語法如圖2.6所示。

圖2.6由數(shù)字序列和運(yùn)算符構(gòu)造實(shí)數(shù)的語法圖

聲明MyDouble類如下,其中parseDouble(String)方法由數(shù)字序

列和運(yùn)算符構(gòu)造實(shí)數(shù)c

publicclassMyDouble

〃返回實(shí)數(shù)字符串表示的浮點(diǎn)數(shù)值,由圖2.6所示數(shù)字序

列和運(yùn)算符語法構(gòu)造實(shí)數(shù)

publicstaticdoubleparseDouble(Strings)

inti=0,sign=s.charAt(0)==,?-1:1;

//sign記住符號位

if(s.charAt(0)='+'||s.charAt(0)==,-’)

//跳過符號位

i++;

doublevalue=0,power=0.1;

//power表示底數(shù)為10的嘉

while(i<s.length()&&s.charAt(i)>=’O'&&

s.charAt(i)〈二'9')〃獲得整數(shù)部分值…

value=value*10+s.charAt(i++)-'0';

if(i<s.iengthO&&s.charAt(i)二二)

//若是小數(shù)點(diǎn)

{i++;

while(i<s.IengthO&&s.charAt(i)>='O'&&

s.charAt(i)<=,9")〃獲得小數(shù)部分宿,,

{value+=(s.charAt⑴-'O')*power;

i++;

power*=0.1;

value*=sign;

if(i<s.IengthO&&(s.charAt(i)==,E?|

s.charAt(i)==,e))〃處理階碼

{i++;

power=(s,charAt(i)二二'一')?0.1:10;

〃階碼的符號位確定指數(shù)的正負(fù)及其運(yùn)算

if(s.charAt(i)==,||s.charAt(i)==,)

i++;

intexp=O;

while(i<s.lengthO&&s.charAt(i)>='O'&&

s.charAt(i)<='9')

exp=exp*10+s.charAt(i++)-'O';

〃獲得指數(shù)的肯定值

for(intj=0;j<exp;j++)

value*二power;

returnvalue"

②由整數(shù)、數(shù)字序列和運(yùn)餐符構(gòu)造實(shí)數(shù),語法如圖2.8所示。

圖2.7由整數(shù)、數(shù)字序列和運(yùn)算符構(gòu)造實(shí)數(shù)的語法圖

在MyDouble類增加toDouble(String)方法如下,由整數(shù)、數(shù)字序

列和運(yùn)算符構(gòu)造實(shí)數(shù)。

〃返回實(shí)數(shù)字符串表示的浮點(diǎn)數(shù)值,由圖2.8所示整數(shù)、數(shù)字

序列和運(yùn)算符語法構(gòu)造實(shí)數(shù)

publicstaticdoubletoDouble(Strings)

〃返回實(shí)數(shù)字符串表示的浮點(diǎn)數(shù)值

int]-s.indexOfC.'),k=s.indexOf('E');

〃找尋小數(shù)點(diǎn)和E

if(k==-l)

k=s.indexOf('e');

if(j==-l&&k==-l)

returnMylnteger.parselnt(s);

//s中沒有小數(shù)和階碼部分,獲得整數(shù)值返回

inti=0,sign=s.charAt(0)?-1:1;

//sign記住符號位

if(s.charAt(0)=二'||s.charAt(0)二二)

//跳過符號位

i++;

doublevalue=0,power=0.1;

//power表示底數(shù)為10的基

if(j!=-l)

//s中有小數(shù)部分...

{value=MyInteger,parselnt(s.substring(i,j));

//獲得正整數(shù)部分值

j++;//

跳過小數(shù)點(diǎn)

while(j<s.length()&&s.charAt(j)〉二'O'&&

s.charAt(j)〈='9,)〃獲得小數(shù)部分值

{value+=(s.charAt(j)0,)*power;

j++;

power*=0.1;

value*=sign;

if(k!=-l)

〃處理階碼

{if(j=T)

//s中沒有小數(shù)部分

value=MyInteger.parselnt(s.substring(0,k));〃獲得整數(shù)

部分值

k++;

power=(s.charAt(k)二二')?0.1:10;

〃階碼的符號位確定指數(shù)的正負(fù)及其運(yùn)算

if(s.charAt(k)==,+,||s.charAt.(k)==,)

k++;

intexp=MyInteger.parselnt(s.substring(k));

〃獲得指數(shù)部分的正整數(shù)值

for(j=0;j<exp;j++)

value*二power;

returnvalue;

程序運(yùn)行結(jié)果如下:

parseDouble(〃-12345.67E-2〃)=-123.45670000000001,

toDouble(〃-12345E2")=-1234500.0

4.將二進(jìn)制形式字符串?dāng)?shù)值字符串轉(zhuǎn)換成相應(yīng)數(shù)值整數(shù)

2-32怎樣從二、八、十六進(jìn)制字符串中讀取整數(shù)值?

【答】調(diào)用java.lang.Integer類的以下方法parselnt(s,radix)

將字符串s轉(zhuǎn)換成radix進(jìn)制整數(shù)。

publicstaticintparselnt(Strings,intradix)throws

NumberFormatException

5.將整數(shù)轉(zhuǎn)換成二、八或十六進(jìn)制形式字符串

2-33怎樣將整數(shù)轉(zhuǎn)換成以二進(jìn)制、八進(jìn)制或十六進(jìn)制形式字符

串?

【答】①String,format(Stringformat,Object...args)方法

返回format指定格式的字符串,〃%。〃、〃%x〃分別指定八進(jìn)制、十六

進(jìn)制整數(shù)格式。

②java.lang.Integer類聲明以下方法,分別返回整數(shù)的二、八、

十六進(jìn)制形式字符串。

publicstaticStringtoBinaryString(inti)

//將i轉(zhuǎn)換成二進(jìn)制字符串

publicstaticStringtoOctalString(inti)

//將i轉(zhuǎn)換成八進(jìn)制字符串

publicstaticStringtoHexString(inti)

//將i轉(zhuǎn)換成十六進(jìn)制字符串

上述方法返回的字符串不包括高位0。例如:

Integer.toBinaryString(128)

〃運(yùn)算結(jié)果為10000000

【習(xí)2.4】整數(shù)的二進(jìn)制問題探討。

在教材例2.10聲明的Mylnteger類中增加toBinaryString(int)

等方法,返回整數(shù)的二、八、十六進(jìn)制形式字符串等功能。本例以下

分別探討采納“除2取余法”和位運(yùn)算的算法設(shè)計問題。

⑴除2取余法

①轉(zhuǎn)換成二進(jìn)制字符串

2-34以下方法有什么錯誤?為什么?

publicstaticStringtoBinaryString(intvalue)

//返回正整數(shù)value的二進(jìn)制字符串,除2取余法

Stringstr二〃〃;

while(value>0)〃除2取

余法,余數(shù)存入str字符串(逆序)

{str=value%2+str;

//value%2+str即(char)(value%2+'O')+str

value/=2;

returnstr;//返

回符串

【答】上述算法僅當(dāng)value>0時正確;當(dāng)valueWO時錯誤,返回

為了適用于負(fù)數(shù),將上述算法修改如下。

2-35以下方法有什么錯誤?為什么?

publicstaticStringtoBinaryString(intvalue)

〃返回整數(shù)value的二進(jìn)制字符串,除2取余法

if(value==0)

return〃0〃;

Stringstr二〃〃;

while(value!=0)//除2取

余法,余數(shù)存入str字符串(逆序)

{str=value%2+str;

value/=2;

returnstr,

【答】上述算法試鹵將除2取余法功能擴(kuò)展到0和負(fù)數(shù),但算法

錯誤,因?yàn)樨?fù)數(shù)采納補(bǔ)碼表示而不是原碼。例如,當(dāng)value-1時,

value%2=-l,str=〃T〃,value/2=0,循環(huán)執(zhí)行一次,返回〃-1〃。而

〃-1〃的二進(jìn)制字符串是〃1111111111111111iiiinir\

為了解決該問題,再修改算法如下。

2-36以下方法有什么錯誤?為什么?

publicstaticStringtoBinaryString(intvalue)

//返回整數(shù)value的二進(jìn)制字符串,除2取余法

if(value==0)

return〃0〃;

Stringstr二〃〃;

while(value!=0)//除2

取余法,余數(shù)存入str字符串(逆序)

{str=(char)(value%2+'O')+str;

value/=2;

returnstr;

【答】上述算法錯誤,value=-l時,value%2結(jié)果為T,

(char)(value%2+'O')結(jié)果為'O'的前一字符),所以不行。

②轉(zhuǎn)換成radix進(jìn)制字符串,2WradixW16

2-37以下方法有什么錯誤?為什么?

〃返回正整數(shù)n的radix進(jìn)制字符串,2<radixW16,采納除

radix取余法

publicstaticStringtoString(intvalue,intradix)

Stringstr=,,z,;

while(value>0)//除

radix取余法,余數(shù)存入str字符串(逆序)

{intbit=value%radix;

str=(bit<=9?bit+'O':bit+'A'TO)+str;

value/-radix;

returnstr,

【答】應(yīng)當(dāng)運(yùn)用以下語句將數(shù)字轉(zhuǎn)換成字符,否則會將數(shù)字的

ASCH碼轉(zhuǎn)換成字符串。例如,將15轉(zhuǎn)換成〃15〃而非〃F〃°

str=(char)(bit<=9?bit+'O':bit+'A'TO)+str;

上述算法的優(yōu)點(diǎn)是radix可為隨意正整數(shù);缺點(diǎn)是僅當(dāng)value>0

時執(zhí)行,當(dāng)valueWO時,返回

(2)位運(yùn)算,轉(zhuǎn)換成二進(jìn)制字符串

①采納字符串連接運(yùn)算

以下聲明toBinaryString(int)方法返回一個int對應(yīng)的32位,

正數(shù)或0的高位以0填充。

算法采納位運(yùn)算,一個int整數(shù)即是一個由32位bit組成的無符

號整數(shù),每次獲得二進(jìn)制的最高位,將其轉(zhuǎn)換為數(shù)字字符,再依次連

接成字符串。算法如下。

publicstaticStringtoBinaryString(intvalue)

//返回整數(shù)value的二進(jìn)制字符串。采納位運(yùn)算

Stringstr二〃〃;

for(inti=0x80000000;i!=0;1>?=1)//從

高位向低位逐位獲得,每右移一位,高位補(bǔ)0

str十=(value&i)==0?'O':'1';〃獲

得各位字符

returnstr,

該算法正確,但將靠0值算作1,該算法不具有擴(kuò)展性,不適合8

和16進(jìn)制。

修改算法如下,每次獲得二進(jìn)制的個位,將其轉(zhuǎn)換為數(shù)字字符,

各位數(shù)字字符按反序連接成字符串。

publicstaticStringtoBinaryString(intvalue)//

返回整數(shù)value的二進(jìn)制字符串

Stringstr=〃〃;

for(inti=0;i<32;i++)//循

環(huán)執(zhí)行32次,高位補(bǔ)0,獲得32個二進(jìn)制位

{str=(value&1)+str;〃將各位余數(shù)字符

按反序連接成字符串。&運(yùn)算符優(yōu)先級低于+

value?>=l;//value右移

一位,高位以0填充,即value除以2

returnstr'

由于String是常量手符串,字符串連接運(yùn)算須要重新申請數(shù)組空

間并復(fù)制原字符串,因此頻繁調(diào)用字符串連接運(yùn)算,效率很低。

②采納字符數(shù)組

為了提高效率,采納字符數(shù)組代替字符串連接運(yùn)算,修改上述算

法如下:

publicstaticStringtoBinaryString(intvalue)

//返回整數(shù)value的二進(jìn)制字符串

char[]buffer=newchar[32];//一

個int有32個二進(jìn)制位

for(inti=buffer.length-1;i>=0;i一一)

//循環(huán)執(zhí)行32次,高位補(bǔ)0

{buffer[i]=(char)((value&1)+'O');//

獲得個位字符存入數(shù)組。&運(yùn)算符優(yōu)先級低于+

溫馨提示

  • 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

提交評論