【正文】
r numeric types are signed, so don?t look for unsigned size of the boolean type is not explicitly specified。However, this uses a special Java feature: Strings can be initialized with quoted text. Normally, you must use a more general type of initialization for objects. You must create all the objects When you create a reference, you want to connect it with a new object. You do so, in general, with the new operator. The keyword new says, “Make me a new one of these objects.” So in the preceding example, you can say:String s = new String(asdf)。 附件 2:外文 原文 Everything Is an Object “If we spoke a different language, we would perceive a some what different world.” Ludwig Wittgenstein (18891951)Although it is based on C++, Java is more of a “pure” objectoriented language. Both C++ and Java are hybrid languages, but in Java the designers felt that the hybridization was not as important as it was in C++. A hybrid language allows multiple programming styles。大體上確實(shí)是這樣,但在以后章節(jié)中,讀者將會(huì)學(xué)到怎樣在一個(gè)方法內(nèi)進(jìn)行判斷,做一些更細(xì)致的底層工作。但如果返回類型不是 void,那么無論在何處返回,編譯器都會(huì)強(qiáng)制返回一個(gè)正確類型的返回值。} void nothing2(){} 若返回類型是 void,return 關(guān)鍵字的作用只是用來推出方法。} double naturalLogBase(){return 。 你可以定義方法返回任意想要的類型, 如果不想返回任何值,可以指示此方法返回 void(空)。其次,如果此方法產(chǎn)生一個(gè)值,這個(gè)值要放在 return 語(yǔ)句后面。在這里, s 的 length()方法被調(diào)用,它是 String 類提供的方法之一,會(huì)返回字符串 包含的字符數(shù)。此方法的參數(shù)類型是 String,參數(shù)名是 s。 Int storage(String s){ Return ()*2。如果參數(shù)被設(shè)為 String 類型,則必須傳遞一個(gè) String 對(duì)象;否則,編譯器將拋出錯(cuò)誤。因此,在參數(shù)列表中必須指定每個(gè)所傳遞對(duì)象的類型及名字。 參數(shù)列表 方法的參數(shù)列表指定要傳遞給方法什么樣的信息。在上面的例子中,消息是 f(),對(duì)象是 a。 返回值的類型必須要與 x的類型兼容。 例如 ,假設(shè)有一個(gè)方法 f(),不帶任何參數(shù),返回類型是 int。通過對(duì)象調(diào)用方法時(shí),需要先列出對(duì)象名,緊接著句點(diǎn),然后是方法名和參數(shù)列表。方法只有通過對(duì)象才能被調(diào)用,且這個(gè)對(duì)象必須能執(zhí)行這個(gè)方法調(diào)用。方法名和參數(shù)列表(它們合起來被稱為“方法簽名”)唯一地標(biāo)識(shí)出某個(gè)方法。下面是它最基本的形式: ReturnType methodName(/*Argument list*/){ /* Method body*/ } 返回類型描述的是在調(diào)用方法之后從方法返回的值。 Java 的方法決定了一個(gè)對(duì)象能 夠接收什么樣的消息。實(shí)際上,繼續(xù)把它看作是函數(shù)也無妨。(許多 C++編譯器會(huì)對(duì)未初始化變 量給予警告,而 Java 則視為是錯(cuò)誤)。如果忘記了這么做, Java 會(huì)在編譯時(shí)返回一個(gè)錯(cuò)誤。 那么變量 x 得到的可能是任意值(與 C和 C++中一樣),而不會(huì)被自動(dòng)初始化為零。 然而上述確保初始化的方法并不適用于“局部”變量(即非某個(gè)類的字段)。但是,這些初始值對(duì)你的程序來說,可能是不正確的,甚至是不合法的。如果想了解成員 方法的運(yùn)行機(jī)制,就得先了解參數(shù)和返回值的概念,稍后將對(duì)此作簡(jiǎn)略描述。例如: = 100。 想修改的數(shù)據(jù)也有可能位于對(duì)象所包含的其他對(duì)象中。 = 。 可以給字段賦值,但首先必須知道如何引用一個(gè)對(duì)象的成員。 Boolean b。下面是一個(gè)具有某 些字段的類: Class DataOnly{ int i。如果字段是對(duì)某個(gè)對(duì)象的引用,那么必須初始化該 引用,以便使其與一個(gè)實(shí)際的對(duì)象(如前所述,使用 new 來實(shí)現(xiàn))相關(guān)聯(lián)。 字段和方法 一旦定義了一個(gè)類(在 Java 中你所做的全部工作就是定義類,產(chǎn)生那些類的對(duì)象,以及發(fā)送消息給這些對(duì)象),就可以在類中設(shè)置兩種類型的元素:字段(有時(shí)被稱作數(shù)據(jù)成員)和方法(有時(shí)被稱作成員函數(shù))。 ATypeName a = new ATypeName()。因此,你還不能用它做太多的事情。 class 這個(gè)關(guān)鍵字(以后會(huì)頻繁使用,本書以后就不再用粗體字表示)之后緊跟著的是新類型的名稱。 創(chuàng)建新的數(shù)據(jù)類型:類 如果一切都是對(duì)象,那么是什么決定了某一類對(duì)象的外觀與行為呢?換句話說,是什么確定了對(duì)象的類型?你可能期望有一個(gè)名為“ type” 的關(guān)鍵字 ,當(dāng)然它必須還要有相 應(yīng)的含義。你只需要?jiǎng)?chuàng)建對(duì)象,一旦不再需要,他們就會(huì)自行消失。隨后,釋放這些對(duì)象的內(nèi)存空間,以便供其他新的對(duì)象使用。這也是 Java 神奇之 所在。 這樣便帶來一個(gè)有趣的問題。這樣,許多 C++編程問題在 Java 中就完全消失了。在后繼章節(jié)中,讀者將會(huì)看到:在程序執(zhí)行過程中,怎樣傳遞和復(fù)制引用。然而, s 指向的 String 對(duì)象仍繼續(xù)占據(jù)內(nèi)存空間。所以假如你采用代碼 { String s = new String(“ a string” )。 對(duì)象的作用域 Java 對(duì)象不具備和基本類型一樣的生命周期。所以,在 C和 C++里將一個(gè)較大作用域的變量“隱藏”起來的做法,在 Java 里是不允許的。 { int x = 96。由于 Java 是一種自由格式( freeform)的語(yǔ)言,所以,空格、制表符、換行都不會(huì)影響程序的執(zhí)行結(jié)果。 任何位于“ //”之后到行末的文字都是注釋。 //both x amp。例如: { int x = 12。作用域決定了在其內(nèi)定義的變量名的可見性和生命周期。變量需要存活多長(zhǎng)時(shí)間?如 果想要銷毀對(duì)象,那什么時(shí)刻進(jìn)行呢?變量生命周期的混亂往往會(huì)導(dǎo)致大量的程序 bug,本節(jié)將介紹 Java 是怎樣替我們完成所有的清理工作,從而大大簡(jiǎn)化這個(gè)問題的。 數(shù)組將在以后的章節(jié)中詳細(xì)討論。 還可以創(chuàng)建用來存放基本數(shù)據(jù)類型的數(shù)組。在使用任何引用前,必須為其指定一個(gè)對(duì)象;如果試圖使用一個(gè)還是 null 的引用,在運(yùn)行時(shí)將會(huì)報(bào)錯(cuò)。 當(dāng)創(chuàng)建一個(gè)數(shù)組對(duì)象時(shí),實(shí)際上就是創(chuàng)建了一個(gè)引用數(shù)組,并且每個(gè)引用都會(huì)自動(dòng)初始化為一個(gè)特定值,該 值擁有自己的關(guān)鍵字 null。這種范圍檢查,是以每個(gè)數(shù)組上少量的內(nèi)存開銷及運(yùn)行時(shí)的下標(biāo)檢查為代價(jià)的。 Java 的主要目標(biāo)之一是安全性,所以許多在 C和 C++里困擾程序員的問題在 Java 里不會(huì)再出現(xiàn)呢。在 C 和 C++中使用數(shù)組是很危險(xiǎn)的,因?yàn)?C 和C++中的數(shù)組就是內(nèi)存塊。 關(guān)于調(diào)用這兩個(gè)類的構(gòu)造器和方法的詳細(xì)信息,請(qǐng)查閱 JDK 文檔。也就是說,在運(yùn)算中,可以準(zhǔn)確地表示任何大小的整數(shù)值,而不會(huì)丟失任何信息。在這里,我們以速度換取了精度。 只不過必須以 方法調(diào)用方式取代運(yùn)算符方式來實(shí)現(xiàn)。 不過,這兩個(gè)類包含的方法,提供的操作與對(duì)基本類型所能執(zhí)行的操作相識(shí)。 高精度數(shù)字 Java 提供了兩個(gè)用于高精度計(jì)算的類: BigInteger 或 BigDecimal。 也可以這樣用: Character ch = new Character(‘ x’ )。例如: Char c = ‘ x’ 。 Boolean 類型所占存儲(chǔ)空間的大小沒有明確指定,僅定義為能夠 取 字面值true 或 false。這種所占存儲(chǔ)空間大小的不變性是 Java 程序比用其他大多數(shù)語(yǔ)言編寫的程序更具可移植性的原因。 Java 要確定每種基本類型所占存儲(chǔ)空間的大小。也就是說,不用 new 來創(chuàng)建變量,而是創(chuàng)建一個(gè)并非是引用的“自動(dòng)”變量。之所以特殊對(duì)待,是因?yàn)?new 將對(duì)象存儲(chǔ)在“堆”里,故用 new 創(chuàng)建一個(gè)對(duì)象 ——特別是小的、簡(jiǎn)單的變量, 往往不是很有效。 特例:基本 類型 在程序設(shè)計(jì)中經(jīng)常用到一系列類型,他們需要特殊對(duì)待。一旦需要,甚至能將他們恢復(fù)成普通的、基于 RAM 的對(duì)象。即使程序中止運(yùn)行,他們?nèi)钥杀3肿约旱臓顟B(tài)不變。對(duì)于流式對(duì)象,對(duì)象會(huì)轉(zhuǎn)化成字節(jié)流,通常會(huì)發(fā)給另一臺(tái)機(jī)器。若數(shù)據(jù)完全獨(dú)立于一個(gè)程序之外,則程序不運(yùn)行時(shí)仍可存在,并在程序的控制范圍之外。有的常數(shù)需要嚴(yán)格地保護(hù),所以可考慮將他們置入只讀存儲(chǔ)器( ROM) 。常數(shù)值通常直接置于程序代碼內(nèi)部。當(dāng)然,為達(dá)到這種靈 活性,必然付出一定的代價(jià):在堆里分配存儲(chǔ)空間時(shí)會(huì)花掉更長(zhǎng)的時(shí)間(如果確實(shí)可以在 Java 中像在 C++中一樣在棧中創(chuàng)建對(duì)象)。要求創(chuàng)建一個(gè)對(duì)象時(shí),只需要用 new 命令編制相關(guān)的代碼即可。和堆棧不同,“內(nèi)存堆”或“堆”( Heap)最吸引人的地方在于編譯器不必知道要從堆里分配多少存儲(chǔ)空間,也不必知道存儲(chǔ)的數(shù)據(jù)要在堆里停留多長(zhǎng)時(shí)間。 ( 3)堆。這是由于它必須生成相應(yīng)的代碼,以便向上和向下移動(dòng)指針。這是一種特別快、特別有效的數(shù)據(jù)保存方式,僅次于寄存器。駐留于常 規(guī) RAM(隨機(jī)訪問存儲(chǔ)器)區(qū)域,但可通過它的“堆棧指針”獲得處理的直接支持。我們對(duì)此沒有直接的控制權(quán),也不可能在自己的程序里找到寄存器存在的任何蹤跡 (另一方面, C 和C++允許您向編譯器建議寄存器的分配方式) 。這是最快的保存區(qū)域,因?yàn)樗挥?不同于其他存儲(chǔ)區(qū)的地方 —— 處理器內(nèi)部。特別要注意的是內(nèi)存的分配。 事實(shí)上,這應(yīng)是 Java 程序設(shè)計(jì)的一項(xiàng)基本操作,是繼續(xù)本書后余部分學(xué)習(xí)的基礎(chǔ)。 Java 配套提供了數(shù)量 眾 多的現(xiàn)成類型。 它不僅指出“ 給我一個(gè)新的字符串 ”,也通過提供一個(gè)初始字符串 ,指出了“如何生成這個(gè)新字串”。 New 的意思是:“把我變成這些對(duì)象的一種新類型”。 有對(duì)象都必須創(chuàng)建 創(chuàng)建句柄時(shí),我們希望它用一個(gè)新對(duì)象連接。 然而,這里用到了 Java 語(yǔ)言的一個(gè)特性 :字串可以用加引號(hào)的文本 初始化 。 這是由于 s 實(shí)際并未與任何東西連接(即“沒有電視機(jī)”)。 但這里創(chuàng)建的只是句柄,并不是對(duì)象。也就是說,只是由于擁有一個(gè)句柄,并不表示必須有一個(gè)對(duì)象同它連接。如果要在房間里四處走走,并想保持對(duì)電視機(jī)的控制,那么手上拿著的是遙控板,而非 電視機(jī)。只要握住這個(gè)遙控板,就相當(dāng)于掌握了與電視機(jī)連接的通道。在其他 Java 參考書里,還可看到有的人將其稱作一個(gè)“引用”,甚至一個(gè)“指針”。因 此,我們可采用一種統(tǒng)一的語(yǔ)法,任何地方均可照搬不誤。有些時(shí)候,程序員必須時(shí)刻留意準(zhǔn)備處理的是什么類型。在本章,我們將探討 Java 程序的基本組件,并體會(huì)為什么說 Java 乃至 Java 程序內(nèi)的一切都是對(duì)象。也就是說,正式用它設(shè)計(jì)之前, 必須先將自己的思想轉(zhuǎn)入一個(gè)面向?qū)ο蟮氖澜纾ǔ窃缫蚜?xí)慣了這個(gè)世界的思維方式)。由于 C++是 C的一個(gè) 超集 ,所以包含的許多特性都是后者不具備的,這些特性使 C++在某些地方顯得過于復(fù)雜。但在 Java 中,設(shè)計(jì)者覺得這種雜合并不像在 C++里那么重要。 — Ludwig Wittgenstein(18891951) “盡管以 C++為基礎(chǔ),但 Java 是一種更純粹的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言”。 畢業(yè)設(shè)計(jì) (論文 )外文資料翻譯 系 : 信息工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名: xxxxxx 學(xué) 號(hào): xxxxxxxxx 外文出處: 附 件: ; 。 指導(dǎo)教師評(píng)語(yǔ): 簽名: 2021 年 月 日 (用外文寫 ) 附件 1:外文資料翻譯譯文 一切都是對(duì)象 “ 如 果我們說另一種