freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

外文資料翻譯--一切都是對象(已修改)

2025-06-01 04:42 本頁面
 

【正文】 畢業(yè)設(shè)計 (論文 )外文資料翻譯 系 : 信息工程學(xué)院 專 業(yè): 計算機(jī)科學(xué)與技術(shù) 姓 名: xxxxxx 學(xué) 號: xxxxxxxxx 外文出處: 附 件: ; 。 指導(dǎo)教師評語: 簽名: 2020 年 月 日 (用外文寫 ) 附件 1:外文資料翻譯譯文 一切都是對象 “ 如 果我們說另一種不同的語言,那么我們就會發(fā)覺一個有些不同的世界”。 — Ludwig Wittgenstein(18891951) “盡管以 C++為基礎(chǔ),但 Java 是一種更純粹的面向?qū)ο蟪绦蛟O(shè)計語言”。 無論 C++還是 Java 都屬于 雜合語言 。但在 Java 中,設(shè)計者覺得這種雜合并不像在 C++里那么重要。雜合語言允許采用多種編程風(fēng)格;之所以說 C++是一種雜合語言,是因為它支持與 C語言的向后兼容能力。由于 C++是 C的一個 超集 ,所以包含的許多特性都是后者不具備的,這些特性使 C++在某些地方顯得過于復(fù)雜。 Java 語言首先便假定了我們只希望進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計。也就是說,正式用它設(shè)計之前,必 須先將自己的思想轉(zhuǎn)入一個面向?qū)ο蟮氖澜纾ǔ窃缫蚜?xí)慣了這個世界的思維方式)。只有做好這個準(zhǔn)備工作,與其他 OOP 語言相比,才能體會到 Java 的易學(xué)易用。在本章,我們將探討 Java 程序的基本組件,并體會為什么說 Java 乃至 Java 程序內(nèi)的一切都是對象。 用 句柄操縱對象 每種編程語言都有自己的數(shù)據(jù)處理方式。有些時候,程序員必須時刻留意準(zhǔn)備處理的是什么類型。您曾利用一些特殊語法直接操作過對象,或處理過一些間接表示的對象嗎( C或 C++里的指針)? 所有這些在 Java 里都得到了簡化,任何東西都可看作對象。因此 ,我們可采用一種統(tǒng)一的語法,任何地方均可照搬不誤。但要注意,盡管一切都“看作”對象,但操縱的標(biāo)識符實(shí)際是指向一個對象的“句柄”( Handle)。在其他 Java 參考書里,還可看到有的人將其稱作一個“引用”,甚至一個“指針”??蓪⑦@一情形想象成用遙控板(句柄)操縱電視機(jī)(對象)。只要握住這個遙控板,就相當(dāng)于掌握了與電視機(jī)連接的通道。但一旦需要“換頻道”或者“關(guān)小聲音”,我們實(shí)際操縱的是遙控板(句柄),再有遙控板自己操縱電視機(jī)(對象)。如果要在房間里四處走走,并想保持對電視機(jī)的控制,那么手上拿著的是遙控板,而非電 視機(jī)。 此外,即使沒有電視機(jī),遙控板亦可獨(dú)立存在。也就是說,只是由于擁有一個句柄,并不表示必須有一個對象同它連接。所以如果想容納一個詞或句子,可創(chuàng)建一個 String 句柄 : String s。 但這里創(chuàng)建的只是句柄,并不是對象。若此時向 s 發(fā)送一條消息,就會獲得一個錯誤(運(yùn)行期)。 這是由于 s 實(shí)際并未與任何東西連接(即“沒有電視機(jī)”)。因此,一種更安全的做法是:創(chuàng)建一個句柄時,記住無論如何都進(jìn)行初始化: String s = “ zyp” 。 然而,這里用到了 Java 語言的一個特性 :字串可以用加引號的文本 初始化。 通常,必須為對象使用一種更通用的初始化 方法 。 有對象都必須創(chuàng)建 創(chuàng)建句柄時,我們希望它用一個新對象連接。通常用 new 關(guān)鍵字達(dá)到這一目標(biāo)。 New 的意思是:“把我變成這些對象的一種新類型”。所以在上面的例子中,可以說: String s = new String(“ asdf” )。 它不僅指出“ 給我一個新的字符串 ”,也通過提供一個初始字符串 ,指出了“如何生成這個新字串”。 當(dāng)然,字串( String)并非唯一的類型。 Java 配套提供了數(shù)量 眾 多的現(xiàn)成類型。對我們來講,最重要的就是記住能自行創(chuàng)建類型。事 實(shí)上,這應(yīng)是 Java 程序設(shè)計的一項基本操作,是繼續(xù)本書后余部分學(xué)習(xí)的基礎(chǔ)。 存儲 到什么地方 程序運(yùn)行時,我們最好對數(shù)據(jù)保存到什么地方做到心中有數(shù)。特別要注意的是內(nèi)存的分配。有六個地方都可以保存數(shù)據(jù): ( 1)寄存器。這是最快的保存區(qū)域,因為它位于 不同于其他存儲區(qū)的地方 —— 處理器內(nèi)部。然而,寄存器的數(shù)量十分有限,所以寄存器是根據(jù)需要由編譯器分配。我們對此沒有直接的控制權(quán),也不可能在自己的程序里找到寄存器存在的任何蹤跡 (另一方面, C 和C++允許您向編譯器建議寄存器的分配方式) 。 ( 2)堆棧。駐留于常規(guī) RAM(隨機(jī)訪問存儲器)區(qū)域,但可通過它的“堆棧指針”獲得處理的直接支持。堆棧指針若向下移 , 會創(chuàng)建新的內(nèi)存;若向上移,則會釋放那些內(nèi)存。這是一種特別快、特別有效的數(shù)據(jù)保存方式,僅次于寄存器。創(chuàng)建程序時, Java 編譯器必須準(zhǔn)確地知道堆棧內(nèi)保存的所有數(shù)據(jù)的“長度”以及“存在時間”。這是由于它必須生成相應(yīng)的代碼,以便向上和向下移動指針。這一限制無疑影響了程序的靈活性,所以盡管有些Java 數(shù)據(jù)要保存在堆棧里 —— 特別是對象句柄,但 Java 對象并不 存儲于 其中。 ( 3)堆。一種 通用 的內(nèi)存池(也在 RAM 區(qū)域), 用于存放所有 的 Java 對象。和堆棧不 同,“內(nèi)存堆”或“堆”( Heap)最吸引人的地方在于編譯器不必知道要從堆里分配多少存儲空間,也不必知道存儲的數(shù)據(jù)要在堆里停留多長時間。因此,用堆保存數(shù)據(jù)時會得到更大的靈活性。要求創(chuàng)建一個對象時,只需要用 new 命令編制相關(guān)的代碼即可。執(zhí)行這些代碼時,會在堆里自動進(jìn)行數(shù)據(jù)的保存。當(dāng)然,為達(dá)到這種靈 活性,必然付出一定的代價:在堆里分配存儲空間時會花掉更長的時間(如果確實(shí)可以在 Java 中像在 C++中一樣在棧中創(chuàng)建對象)。 ( 4) 常量 存儲。常數(shù)值通常直接置于程序代碼內(nèi)部。這樣做是安全的,因為他 們永遠(yuǎn)都不會改變。有的常數(shù)需要嚴(yán)格地保護(hù),所以可考慮將他們置入只讀存儲器( ROM) 。 ( 5)非 RAM 存儲。若數(shù)據(jù)完全獨(dú)立于一個程序之外,則程序不運(yùn)行時仍可存在,并在程序的控制范圍之外。其中兩個最重 要的例子便是“ 流式對象”和“持久化對象”。對于流式對象,對象會轉(zhuǎn)化成字節(jié)流,通常會發(fā)給另一臺機(jī)器。而對于持久化 對象,對象保存在磁盤中。即使程序中止運(yùn)行,他們?nèi)钥杀3肿约旱臓顟B(tài)不變。對于這些類型的數(shù)據(jù)存儲,一個特別有用的技巧就是它們能存在于其他媒體中。一旦需要,甚至能將他們恢復(fù)成普通的、基于 RAM 的對象。 Java 提 供了對 輕量級持久化的支持,而諸如 JDBC 和 Hibernate 這樣的機(jī)制提供了更加復(fù)雜的對數(shù)據(jù)庫中存儲和讀取對象信息的支持。 特例:基本 類型 在程序設(shè)計中經(jīng)常用到一系列類型,他們需要特殊對待??梢园阉麄兿胂癯伞盎尽鳖愋汀V蕴厥鈱Υ?,是因為 new 將對象存儲在“堆”里,故用 new 創(chuàng)建一個對象 ——特別是小的、簡單的變量, 往往不是很有效。因此,對于這些類型, Java 采取與 C 和 C++相同的方法。也就是說,不用 new 來創(chuàng)建變量,而是創(chuàng)建一個并非是引用的“自動”變量。這個變量直接存儲“值”,并置于堆棧中, 因此更加高效。 Java 要確定每種基本類型所占存儲空間的大小。他們的大小并不像其他大多數(shù)語言那樣隨機(jī)器硬件架構(gòu)的變化而變化。這種所占存儲空間大小的不變性是 Java 程序比用其他大多數(shù)語言編寫的程序更具可移植性的原因。 所有數(shù)值類型都有正負(fù)號,所以不要去尋找無符號的數(shù)值類型。 Boolean 類型所占存儲空間的大小沒有明確指定,僅定義為能夠 取 字面值true 或 false。基本類型具有的包裝器類,使得可以在堆中創(chuàng)建一個非基本對象,用來表示對應(yīng)的基本類型。例如: Char c = ‘ x’ 。 Character ch = new Character(c)。 也可以這樣用: Character ch = new Character(‘ x’ )。 包裝基本類型的原因?qū)⒃谝院蟮恼鹿?jié)中說明。 高精度數(shù)字 Java 提供了兩個用于高精度計算的類: BigInteger 或 BigDecimal。雖然它們大體上屬于“包裝器類”的范疇,但二者都沒有對應(yīng)的基本類型。 不過,這兩個類包含的方法,提供的操作與對基本類型所能執(zhí)行的操作相識。也就是說,能作用于 int 或 float 的操作,也能作用于 BigInteger 或 Big Decimal。 只不過必須以方 法調(diào)用方式取代運(yùn)算符方式來實(shí)現(xiàn)。由于這么做復(fù)雜了許多,所以運(yùn)算速度會比較慢。在這里,我們以速度換取了精度。 BigInteger 支持任意精度的整數(shù)。也就是說,在運(yùn)算中,可以準(zhǔn)確地表示任何大小的整數(shù)值,而不會丟失任何信息。 BigDecimal 支持任何精度的定點(diǎn)數(shù),例如,可以用它進(jìn)行精確的貨幣計算。 關(guān)于調(diào)用這兩個類的構(gòu)造器和方法的詳細(xì)信息,請查閱 JDK 文檔。 Java 中的數(shù)組 幾乎所有的程序設(shè)計語言都支持?jǐn)?shù)組。在 C 和 C++中使用數(shù)組是很危險的,因為 C 和C++中的數(shù)組就是內(nèi)存塊。如果一個程序要訪問 其自身內(nèi)存塊之外的數(shù)組,或在數(shù)組初始化前使用內(nèi)存(程序中常見的錯誤),都會產(chǎn)生難以預(yù)料的后果。 Java 的主要目標(biāo)之一是安全性,所以許多在 C和 C++里困擾程序員的問題在 Java 里不會再出現(xiàn)呢。 Java 確保數(shù)組會被初始化,而且不能在它的范圍之外被訪問。這種范圍檢查,是以每個數(shù)組上少量的內(nèi)存開銷及運(yùn)行時的下標(biāo)檢查為代價的。但由此換來的是安全性和效率的提高,因此付出的代價是值得的(并且 Java 有時可以優(yōu)化這些操作)。 當(dāng)創(chuàng)建一個數(shù)組對象時,實(shí)際上就是創(chuàng)建了一個引用數(shù)組,并且每個引用都會自動初始化為一個特定值,該值 擁有自己的關(guān)鍵字 null。一旦 Java 看到 null,就知道這個引用還沒有指向某個對象。在使用任何引用前,必須為其指定一個對象;如果試圖使用一個還是 null 的引用,在運(yùn)行時將會報錯。因此,常犯的數(shù)組錯誤在 Java 中就可以避免。 還可以創(chuàng)建用來存放基本數(shù)據(jù)類型的數(shù)組。同樣,編譯器也能確保這種數(shù)組的初始化,因為它會將這種數(shù)組所占的內(nèi)存全部置零。 數(shù)組將在以后的章節(jié)中詳細(xì)討論。 永遠(yuǎn)不需要銷毀對象 在大多數(shù)程序設(shè)計語言中,變量生命周期的概念,占據(jù)了程序設(shè)計工作中非常重要的 部 分 。變量需要存活多長時間?如果 想要銷毀對象,那什么時刻進(jìn)行呢?變量生命周期的混亂往往會導(dǎo)致大量的程序 bug,本節(jié)將介紹 Java 是怎樣替我們完成所有的清理工作,從而大大簡化這個問題的。 作用域 大多數(shù) 過程型語言都有作用域( scope)的概念。作用域決定了在其內(nèi)定義的變量名的可見性和生命周期。在 C、 C++和 Java 中,作用域由花括號的位置決定。例如: { int x = 12。 //Only x available { int q = 96。 //both x amp。 q available } //only x available //q is “ out of scope” } 在作用域里定義的變量只可用于作用域結(jié)束之前。 任何位于“ //”之后到行末的文字都是注釋。 縮排格式使 Java 代碼更易于閱讀。由于 Java 是一種自由格式( freeform)的語言,所以,空格、制表符、換行都不會影響程序的執(zhí)行結(jié)果。 盡管 以下 代碼在 C和 C++中是合法的,但是在 Java 中卻不能這樣寫: { int x = 12。 { int x = 96。 //illegal } } 編譯器將會報告變量 x已經(jīng)定義過。所以,在 C和 C++里將一個較大作用域的變量“隱藏”起來的做法,在 Java 里是不允許的。因為 Java 設(shè)計者認(rèn)為這樣做會導(dǎo)致程序混亂。 對象的作用域 Java 對象不具備和基本類型一樣的生命周期。當(dāng)用 new 創(chuàng)建一個 Java 對象時,它可以存活于作用域之外。所以假如你采用代碼 { String s = new String(“ a string” )。 // End of scope } 引用 s在作用域終點(diǎn)就消失了。然而, s 指向的 String 對象仍繼續(xù)占據(jù)內(nèi)存空間。在這一 小段代碼中,我們無法在這個作用域之后訪 問這個對象,因為 對它唯一的引用已超出了作用域的范圍。在后繼章節(jié)中,讀者將會看到:在程序執(zhí)行過程中,怎樣傳遞和復(fù)制引用。 事實(shí) 證明,由 new 創(chuàng)建的對象,只要你需要,就會一直保留下去。這樣,許多 C++編程問題在 Java 中就完全消失了。在 C++中,你不僅必須要確保對象的保留時間與你需要這些對象的時間一樣長,而且還必須在你使用完它們之后,將其銷毀。 這樣便帶來一個有趣的問題。如果 Java 讓對象繼續(xù)存在,那么靠什
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1