亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chapter3.htm

?? Thinking In Java第二版(中文)
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Thinking in Java | Chinese Version by Trans Bot</title>

<meta name="Microsoft Theme" content="inmotion 111, default"></head>

<body background="../_themes/inmotion/inmtextb.gif" tppabs="http://member.netease.com/%7etransbot/Thinking%20in%20Java/_themes/inmotion/inmtextb.gif" bgcolor="#FFFFCC" text="#000000" link="#800000" vlink="#996633" alink="#FF3399">

<p>第3章 控制程序流程<br>
<br>
“就象任何有感知的生物一樣,程序必須能操縱自己的世界,在執行過程中作出判斷與選擇。”<br>
<br>
在Java里,我們利用運算符操縱對象和數據,并用執行控制語句作出選擇。Java是建立在C++基礎上的,所以對C和C++程序員來說,對Java這方面的大多數語句和運算符都應是非常熟悉的。當然,Java也進行了自己的一些改進與簡化工作。<br>
<br>
3.1 使用Java運算符<br>
運算符以一個或多個自變量為基礎,可生成一個新值。自變量采用與原始方法調用不同的一種形式,但效果是相同的。根據以前寫程序的經驗,運算符的常規概念應該不難理解。<br>
加號(+)、減號和負號(-)、乘號(*)、除號(/)以及等號(=)的用法與其他所有編程語言都是類似的。<br>
所有運算符都能根據自己的運算對象生成一個值。除此以外,一個運算符可改變運算對象的值,這叫作“副作用”(Side 
Effect)。運算符最常見的用途就是修改自己的運算對象,從而產生副作用。但要注意生成的值亦可由沒有副作用的運算符生成。<br>
幾乎所有運算符都只能操作“主類型”(Primitives)。唯一的例外是“=”、“==”和“!=”,它們能操作所有對象(也是對象易令人混淆的一個地方)。除此以外,String類支持“+”和“+=”。<br>
<br>
3.1.1 優先級<br>
運算符的優先級決定了存在多個運算符時一個表達式各部分的計算順序。Java對計算順序作出了特別的規定。其中,最簡單的規則就是乘法和除法在加法和減法之前完成。程序員經常都會忘記其他優先級規則,所以應該用括號明確規定計算順序。例如:<br>
A = X + Y - 2/2 + Z;<br>
為上述表達式加上括號后,就有了一個不同的含義。<br>
A = X + (Y - 2)/(2 + Z);<br>
<br>
3.1.2 賦值<br>
賦值是用等號運算符(=)進行的。它的意思是“取得右邊的值,把它復制到左邊”。右邊的值可以是任何常數、變量或者表達式,只要能產生一個值就行。但左邊的值必須是一個明確的、已命名的變量。也就是說,它必須有一個物理性的空間來保存右邊的值。舉個例子來說,可將一個常數賦給一個變量(A=4;),但不可將任何東西賦給一個常數(比如不能4=A)。<br>
對主數據類型的賦值是非常直接的。由于主類型容納了實際的值,而且并非指向一個對象的句柄,所以在為其賦值的時候,可將來自一個地方的內容復制到另一個地方。例如,假設為主類型使用“A=B”,那么B處的內容就復制到A。若接著又修改了A,那么B根本不會受這種修改的影響。作為一名程序員,這應成為自己的常識。<br>
但在為對象“賦值”的時候,情況卻發生了變化。對一個對象進行操作時,我們真正操作的是它的句柄。所以倘若“從一個對象到另一個對象”賦值,實際就是將句柄從一個地方復制到另一個地方。這意味著假若為對象使用“C=D”,那么C和D最終都會指向最初只有D才指向的那個對象。下面這個例子將向大家闡示這一點。<br>
這里有一些題外話。在后面,大家在代碼示例里看到的第一個語句將是“package 
03”使用的“package”語句,它代表本書第3章。本書每一章的第一個代碼清單都會包含象這樣的一個“package”(封裝、打包、包裹)語句,它的作用是為那一章剩余的代碼建立章節編號。在第17章,大家會看到第3章的所有代碼清單(除那些有不同封裝名稱的以外)都會自動置入一個名為c03的子目錄里;第4章的代碼置入c04;以此類推。所有這些都是通過第17章展示的CodePackage.java程序實現的;“封裝”的基本概念會在第5章進行詳盡的解釋。就目前來說,大家只需記住象“package 
03”這樣的形式只是用于為某一章的代碼清單建立相應的子目錄。<br>
為運行程序,必須保證在classpath里包含了我們安裝本書源碼文件的根目錄(那個目錄里包含了c02,c03c,c04等等子目錄)。<br>
對于Java后續的版本(1.1.4和更高版本),如果您的main()用package語句封裝到一個文件里,那么必須在程序名前面指定完整的包裹名稱,否則不能運行程序。在這種情況下,命令行是:<br>
java c03.Assignment<br>
運行位于一個“包裹”里的程序時,隨時都要注意這方面的問題。<br>
下面是例子:<br>
<br>
97-98頁程序<br>
<br>
Number類非常簡單,它的兩個實例(n1和n2)是在main()里創建的。每個Number中的i值都賦予了一個不同的值。隨后,將n2賦給n1,而且n1發生改變。在許多程序設計語言中,我們都希望n1和n2任何時候都相互獨立。但由于我們已賦予了一個句柄,所以下面才是真實的輸出:<br>
1: n1.i: 9, n2.i: 47<br>
2: n1.i: 47, n2.i: 47<br>
3: n1.i: 27, n2.i: 27<br>
看來改變n1的同時也改變了n2!這是由于無論n1還是n2都包含了相同的句柄,它指向相同的對象(最初的句柄位于n1內部,指向容納了值9的一個對象。在賦值過程中,那個句柄實際已經丟失;它的對象會由“垃圾收集器”自動清除)。<br>
這種特殊的現象通常也叫作“別名”,是Java操作對象的一種基本方式。但假若不愿意在這種情況下出現別名,又該怎么操作呢?可放棄賦值,并寫入下述代碼:<br>
n1.i = n2.i;<br>
這樣便可保留兩個獨立的對象,而不是將n1和n2綁定到相同的對象。但您很快就會意識到,這樣做會使對象內部的字段處理發生混亂,并與標準的面向對象設計準則相悖。由于這并非一個簡單的話題,所以留待第12章詳細論述,那一章是專門討論別名的。其時,大家也會注意到對象的賦值會產生一些令人震驚的效果。<br>
<br>
1. 方法調用中的別名處理<br>
將一個對象傳遞到方法內部時,也會產生別名現象。<br>
<br>
99頁上程序<br>
在許多程序設計語言中,f()方法表面上似乎要在方法的作用域內制作自己的自變量Letter 
y的一個副本。但同樣地,實際傳遞的是一個句柄。所以下面這個程序行:<br>
y.c = 'z';<br>
實際改變的是f()之外的對象。輸出結果如下:<br>
1: x.c: a<br>
2: x.c: z<br>
別名和它的對策是非常復雜的一個問題。盡管必須等至第12章才可獲得所有答案,但從現在開始就應加以重視,以便提早發現它的缺點。<br>
<br>
3.1.3 算術運算符<br>
Java的基本算術運算符與其他大多數程序設計語言是相同的。其中包括加號(+)、減號(-)、除號(/)、乘號(*)以及模數(%,從整數除法中獲得余數)。整數除法會直接砍掉小數,而不是進位。<br>
Java也用一種簡寫形式進行運算,并同時進行賦值操作。這是由等號前的一個運算符標記的,而且對于語言中的所有運算符都是固定的。例如,為了將4加到變量x,并將結果賦給x,可用:x+=4。<br>
下面這個例子展示了算術運算符的各種用法:<br>
<br>
100-101頁程序<br>
<br>
我們注意到的第一件事情就是用于打印(顯示)的一些快捷方法:prt()方法打印一個String;pInt()先打印一個String,再打印一個int;而pFlt()先打印一個String,再打印一個float。當然,它們最終都要用System.out.println()結尾。<br>
為生成數字,程序首先會創建一個Random(隨機)對象。由于自變量是在創建過程中傳遞的,所以Java將當前時間作為一個“種子值”,由隨機數生成器利用。通過Random對象,程序可生成許多不同類型的隨機數字。做法很簡單,只需調用不同的方法即可:nextInt(),nextLong(),nextFloat()或者nextDouble()。<br>
若隨同隨機數生成器的結果使用,模數運算符(%)可將結果限制到運算對象減1的上限(本例是99)之下。<br>
<br>
1. 一元加、減運算符<br>
一元減號(-)和一元加號(+)與二元加號和減號都是相同的運算符。根據表達式的書寫形式,編譯器會自動判斷使用哪一種。例如下述語句:<br>
x = -a;<br>
它的含義是顯然的。編譯器能正確識別下述語句:<br>
x = a * -b;<br>
但讀者會被搞糊涂,所以最好更明確地寫成:<br>
x = a * (-b);<br>
一元減號得到的運算對象的負值。一元加號的含義與一元減號相反,雖然它實際并不做任何事情。<br>
<br>
3.1.4 自動遞增和遞減<br>
和C類似,Java提供了豐富的快捷運算方式。這些快捷運算可使代碼更清爽,更易錄入,也更易讀者辨讀。<br>
兩種很不錯的快捷運算方式是遞增和遞減運算符(常稱作“自動遞增”和“自動遞減”運算符)。其中,遞減運算符是“--”,意為“減少一個單位”;遞增運算符是“++”,意為“增加一個單位”。舉個例子來說,假設A是一個int(整數)值,則表達式++A就等價于(A 
= A + 1)。遞增和遞減運算符結果生成的是變量的值。<br>
對每種類型的運算符,都有兩個版本可供選用;通常將其稱為“前綴版”和“后綴版”。“前遞增”表示++運算符位于變量或表達式的前面;而“后遞增”表示++運算符位于變量或表達式的后面。類似地,“前遞減”意味著--運算符位于變量或表達式的前面;而“后遞減”意味著--運算符位于變量或表達式的后面。對于前遞增和前遞減(如++A或--A),會先執行運算,再生成值。而對于后遞增和后遞減(如A++或A--),會先生成值,再執行運算。下面是一個例子:<br>
<br>
102-103頁程序<br>
<br>
該程序的輸出如下:<br>
<br>
103頁下程序<br>
<br>
從中可以看到,對于前綴形式,我們在執行完運算后才得到值。但對于后綴形式,則是在運算執行之前就得到值。它們是唯一具有“副作用”的運算符(除那些涉及賦值的以外)。也就是說,它們會改變運算對象,而不僅僅是使用自己的值。<br>
遞增運算符正是對“C++”這個名字的一種解釋,暗示著“超載C的一步”。在早期的一次Java演講中,Bill 
Joy(始創人之一)聲稱“Java=C++--”(C加加減減),意味著Java已去除了C++一些沒來由折磨人的地方,形成一種更精簡的語言。正如大家會在這本書中學到的那樣,Java的許多地方都得到了簡化,所以Java的學習比C++更容易。<br>
<br>
3.1.5 關系運算符<br>
關系運算符生成的是一個“布爾”(Boolean)結果。它們評價的是運算對象值之間的關系。若關系是真實的,關系表達式會生成true(真);若關系不真實,則生成false(假)。關系運算符包括小于(&lt;)、大于(&gt;)、小于或等于(&lt;=)、大于或等于(&gt;=)、等于(==)以及不等于(!=)。等于和不等于適用于所有內建的數據類型,但其他比較不適用于boolean類型。<br>
<br>
1. 檢查對象是否相等<br>
關系運算符==和!=也適用于所有對象,但它們的含義通常會使初涉Java領域的人找不到北。下面是一個例子:<br>
<br>
104頁上程序<br>
<br>
其中,表達式System.out.println(n1 == n2)可打印出內部的布爾比較結果。一般人都會認為輸出結果肯定先是true,再是false,因為兩個Integer對象都是相同的。但盡管對象的內容相同,句柄卻是不同的,而==和!=比較的正好就是對象句柄。所以輸出結果實際上先是false,再是true。這自然會使第一次接觸的人感到驚奇。<br>
若想對比兩個對象的實際內容是否相同,又該如何操作呢?此時,必須使用所有對象都適用的特殊方法equals()。但這個方法不適用于“主類型”,那些類型直接使用==和!=即可。下面舉例說明如何使用:<br>
<br>
104頁下程序<br>
<br>
正如我們預計的那樣,此時得到的結果是true。但事情并未到此結束!假設您創建了自己的類,就象下面這樣:<br>
<br>
104-105頁程序<br>
<br>
此時的結果又變回了false!這是由于equals()的默認行為是比較句柄。所以除非在自己的新類中改變了equals(),否則不可能表現出我們希望的行為。不幸的是,要到第7章才會學習如何改變行為。但要注意equals()的這種行為方式同時或許能夠避免一些“災難”性的事件。<br>
大多數Java類庫都實現了equals(),所以它實際比較的是對象的內容,而非它們的句柄。<br>
<br>
3.1.6 邏輯運算符<br>
邏輯運算符AND(&amp;&amp;)、OR(||)以及NOT(!)能生成一個布爾值(true或false)——以自變量的邏輯關系為基礎。下面這個例子向大家展示了如何使用關系和邏輯運算符。<br>
<br>
105-106頁程序<br>
<br>
只可將AND,OR或NOT應用于布爾值。與在C及C++中不同,不可將一個非布爾值當作布爾值在邏輯表達式中使用。若這樣做,就會發現嘗試失敗,并用一個“//!”標出。然而,后續的表達式利用關系比較生成布爾值,然后對結果進行邏輯運算。<br>
輸出列表看起來象下面這個樣子:<br>
<br>
106頁下程序<br>
<br>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产综合色视频| 欧美久久久久久久久中文字幕| 日韩精品中文字幕在线一区| 亚洲欧美另类在线| 国产乱码精品一区二区三区五月婷 | 久久久久99精品一区| 午夜精品一区在线观看| 91麻豆国产在线观看| 久久久精品免费网站| 天堂资源在线中文精品| 色欲综合视频天天天| 欧美激情一区二区三区不卡| 免费观看日韩av| 欧美日韩国产高清一区二区三区| 亚洲色图在线播放| 国产精品99久久久久久有的能看 | 在线精品视频一区二区| 国产精品无遮挡| 韩国av一区二区三区在线观看| 宅男噜噜噜66一区二区66| 亚洲精品国久久99热| 暴力调教一区二区三区| 久久久精品综合| 久久99国内精品| 日韩精品中文字幕一区二区三区| 亚洲国产精品久久久男人的天堂 | 国产成人自拍在线| 精品国产99国产精品| 秋霞电影网一区二区| 欧美日韩在线亚洲一区蜜芽| 亚洲一区在线视频观看| 91蝌蚪国产九色| 亚洲欧洲成人精品av97| 成人丝袜高跟foot| 中文字幕欧美日本乱码一线二线 | 五月天激情综合| 在线观看www91| 一区二区免费视频| 欧美最猛性xxxxx直播| 亚洲九九爱视频| 欧美综合久久久| 亚洲国产综合色| 欧美日韩中字一区| 午夜久久久影院| 欧美一区中文字幕| 麻豆精品精品国产自在97香蕉| 欧美一区二区免费视频| 毛片一区二区三区| 精品久久久久久久久久久久包黑料 | 香蕉成人啪国产精品视频综合网| 欧美日韩在线免费视频| 日日骚欧美日韩| 欧美一区日韩一区| 久久国产乱子精品免费女| 精品国产乱码久久久久久久久| 久久99久久99小草精品免视看| 久久欧美一区二区| 国产xxx精品视频大全| 国产精品美日韩| 色婷婷久久久亚洲一区二区三区| 亚洲欧美另类久久久精品| 欧美在线免费观看视频| 偷拍日韩校园综合在线| 精品乱码亚洲一区二区不卡| 丰满岳乱妇一区二区三区| 亚洲天堂成人网| 欧美日韩一区二区在线观看| 蜜桃精品在线观看| 久久久久久久网| 91亚洲精华国产精华精华液| 午夜精品一区二区三区免费视频 | 久久精品这里都是精品| 成人免费不卡视频| 亚洲欧美电影一区二区| 在线综合视频播放| 国产一区二区精品久久| 中文字幕在线播放不卡一区| 色呦呦国产精品| 老色鬼精品视频在线观看播放| 国产亚洲综合在线| 在线观看成人小视频| 日本不卡一区二区| 国产精品天美传媒沈樵| 在线观看视频一区二区| 极品美女销魂一区二区三区| 国产精品久久久久久福利一牛影视| 欧美日韩一区 二区 三区 久久精品| 久久99热国产| 亚洲精品少妇30p| 日韩美女主播在线视频一区二区三区| 成人黄色免费短视频| 日韩精品乱码av一区二区| 国产精品色哟哟| 欧美日韩视频一区二区| 福利电影一区二区| 水野朝阳av一区二区三区| 欧美精彩视频一区二区三区| 欧美午夜精品久久久久久超碰| 国内精品国产成人| 一区二区成人在线观看| 久久精品人人爽人人爽| 欧美日韩高清一区| 床上的激情91.| 日本不卡一二三| 亚洲免费观看高清在线观看| 精品国产91亚洲一区二区三区婷婷| 91黄色免费观看| 国产高清久久久| 日韩在线播放一区二区| 中文字幕亚洲欧美在线不卡| 亚洲一区二区av在线| 久久久精品欧美丰满| 在线综合视频播放| 99re在线视频这里只有精品| 国内成人免费视频| 午夜精品久久久久久久99水蜜桃| 国产精品电影一区二区三区| 欧美精品一区二区三区四区 | 高清成人在线观看| 日韩中文字幕区一区有砖一区 | 午夜精品福利视频网站| 综合网在线视频| 国产日韩欧美精品综合| 日韩精品一区二区三区视频播放 | 精品粉嫩aⅴ一区二区三区四区| 欧洲亚洲国产日韩| 成人亚洲一区二区一| 黑人精品欧美一区二区蜜桃 | 亚洲免费观看在线视频| 久久久综合网站| 日韩欧美国产高清| 欧美日韩成人在线| 一本一道综合狠狠老| 成人国产精品免费观看视频| 国产一区二区在线观看视频| 日韩精品一二区| 一区二区三区精品在线| 亚洲视频免费在线| 中文在线免费一区三区高中清不卡| 欧美大白屁股肥臀xxxxxx| 欧美精品久久久久久久多人混战| 色域天天综合网| 91麻豆文化传媒在线观看| 高清不卡一区二区| 国产福利一区二区三区视频| 狠狠色丁香久久婷婷综合丁香| 青椒成人免费视频| 亚洲国产欧美另类丝袜| 一区二区三区中文免费| 亚洲免费在线电影| 自拍偷拍国产精品| 日韩理论片网站| 亚洲欧洲在线观看av| 中文字幕一区av| 亚洲视频每日更新| 亚洲精品视频一区| 一区二区三区蜜桃网| 亚洲欧洲中文日韩久久av乱码| 国产精品福利电影一区二区三区四区| 欧美极品美女视频| 国产精品久线观看视频| 一色桃子久久精品亚洲| 中文字幕亚洲视频| 亚洲男人的天堂在线观看| 综合亚洲深深色噜噜狠狠网站| 亚洲三级小视频| 亚洲激情男女视频| 亚洲图片欧美一区| 三级影片在线观看欧美日韩一区二区 | 青青草国产成人av片免费| 日本美女一区二区三区视频| 蜜臀av一区二区在线免费观看| 毛片av中文字幕一区二区| 韩国一区二区视频| 国产成人免费在线视频| 波多野结衣亚洲| 91影院在线免费观看| 欧美午夜精品一区二区蜜桃| 51精品国自产在线| 精品国产区一区| 中文字幕一区在线| 亚洲一区二区在线免费看| 日韩成人免费看| 国产精品1024久久| 97精品视频在线观看自产线路二| 日本道免费精品一区二区三区| 欧美日韩亚洲综合| 日韩精品中文字幕一区| 中文字幕高清不卡| 亚洲一区欧美一区| 美女国产一区二区| 岛国一区二区在线观看| 欧美在线你懂的| 日韩精品一区在线观看| 国产欧美精品一区aⅴ影院| 亚洲最新视频在线观看| 另类小说一区二区三区| 成人av免费在线| 欧美日韩成人在线| 国产亚洲成aⅴ人片在线观看 |