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

正文內(nèi)容

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

2025-06-01 04:42 本頁(yè)面
 

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