【正文】
rn ()*2。因此,在參數(shù)列表中必須指定每個所傳遞對象的類型及名字。在上面的例子中,消息是 f(),對象是 a。 例如 ,假設(shè)有一個方法 f(),不帶任何參數(shù),返回類型是 int。方法只有通過對象才能被調(diào)用,且這個對象必須能執(zhí)行這個方法調(diào)用。下面是它最基本的形式: ReturnType methodName(/*Argument list*/){ /* Method body*/ } 返回類型描述的是在調(diào)用方法之后從方法返回的值。實際上,繼續(xù)把它看作是函數(shù)也無妨。如果忘記了這么做, Java 會在編譯時返回一個錯誤。 然而上述確保初始化的方法并不適用于“局部”變量(即非某個類的字段)。如果想了解成員方法的運行機制,就得先了解參數(shù)和返回值的概念,稍后將對此作簡略描述。 想修改的數(shù)據(jù)也有可能位于對象所包含的其他對象中。 可以給字段賦值,但首先必須知道如何引用一個對象的成員。下面是一個具有某 些字段的類: Class DataOnly{ int i。 字段和方法 一旦定義了一個類(在 Java 中你所做的全部工作就是定義類,產(chǎn)生那些類的對象,以及發(fā)送消息給這些對象),就可以在類中設(shè)置兩種類型的元素:字段(有時被稱作數(shù)據(jù)成員)和方法(有時被稱作成員函數(shù))。因此,你還不能用它做太多的事情。 創(chuàng)建新的數(shù)據(jù)類型:類 如果一切都是對象,那么是什么決定了某一類對象的外觀與行為呢?換句話說,是什么確定了對象的類型?你可能期望有一個名為“ type” 的關(guān)鍵字 ,當(dāng)然它必須還要有相應(yīng) 的含義。隨后,釋放這些對象的內(nèi)存空間,以便供其他新的對象使用。 這樣便帶來一個有趣的問題。在后繼章節(jié)中,讀者將會看到:在程序執(zhí)行過程中,怎樣傳遞和復(fù)制引用。所以假如你采用代碼 { String s = new String(“ a string” )。所以,在 C和 C++里將一個較大作用域的變量“隱藏”起來的做法,在 Java 里是不允許的。由于 Java 是一種自由格式( freeform)的語言,所以,空格、制表符、換行都不會影響程序的執(zhí)行結(jié)果。 //both x amp。作用域決定了在其內(nèi)定義的變量名的可見性和生命周期。 數(shù)組將在以后的章節(jié)中詳細(xì)討論。在使用任何引用前,必須為其指定一個對象;如果試圖使用一個還是 null 的引用,在運行時將會報錯。這種范圍檢查,是以每個數(shù)組上少量的內(nèi)存開銷及運行時的下標(biāo)檢查為代價的。在 C 和 C++中使用數(shù)組是很危險的,因為 C 和C++中的數(shù)組就是內(nèi)存塊。也就是說,在運算中,可以準(zhǔn)確地表示任何大小的整數(shù)值,而不會丟失任何信息。 只不過必須以方 法調(diào)用方式取代運算符方式來實現(xiàn)。 高精度數(shù)字 Java 提供了兩個用于高精度計算的類: BigInteger 或 BigDecimal。例如: Char c = ‘ x’ 。這種所占存儲空間大小的不變性是 Java 程序比用其他大多數(shù)語言編寫的程序更具可移植性的原因。也就是說,不用 new 來創(chuàng)建變量,而是創(chuàng)建一個并非是引用的“自動”變量。 特例:基本 類型 在程序設(shè)計中經(jīng)常用到一系列類型,他們需要特殊對待。即使程序中止運行,他們?nèi)钥杀3肿约旱臓顟B(tài)不變。若數(shù)據(jù)完全獨立于一個程序之外,則程序不運行時仍可存在,并在程序的控制范圍之外。常數(shù)值通常直接置于程序代碼內(nèi)部。要求創(chuàng)建一個對象時,只需要用 new 命令編制相關(guān)的代碼即可。 ( 3)堆。這是一種特別快、特別有效的數(shù)據(jù)保存方式,僅次于寄存器。我們對此沒有直接的控制權(quán),也不可能在自己的程序里找到寄存器存在的任何蹤跡 (另一方面, C 和C++允許您向編譯器建議寄存器的分配方式) 。特別要注意的是內(nèi)存的分配。 Java 配套提供了數(shù)量 眾 多的現(xiàn)成類型。 New 的意思是:“把我變成這些對象的一種新類型”。 然而,這里用到了 Java 語言的一個特性 :字串可以用加引號的文本 初始化。 但這里創(chuàng)建的只是句柄,并不是對象。如果要在房間里四處走走,并想保持對電視機的控制,那么手上拿著的是遙控板,而非電 視機。在其他 Java 參考書里,還可看到有的人將其稱作一個“引用”,甚至一個“指針”。有些時候,程序員必須時刻留意準(zhǔn)備處理的是什么類型。也就是說,正式用它設(shè)計之前,必 須先將自己的思想轉(zhuǎn)入一個面向?qū)ο蟮氖澜纾ǔ窃缫蚜?xí)慣了這個世界的思維方式)。但在 Java 中,設(shè)計者覺得這種雜合并不像在 C++里那么重要。 畢業(yè)設(shè)計 (論文 )外文資料翻譯 系 : 信息工程學(xué)院 專 業(yè): 計算機科學(xué)與技術(shù) 姓 名: xxxxxx 學(xué) 號: xxxxxxxxx 外文出處: 附 件: ; 。 無論 C++還是 Java 都屬于 雜合語言 。 Java 語言首先便假定了我們只希望進行面向?qū)ο蟮某绦蛟O(shè)計。 用 句柄操縱對象 每種編程語言都有自己的數(shù)據(jù)處理方式。但要注意,盡管一切都“看作”對象,但操縱的標(biāo)識符實際是指向一個對象的“句柄”( Handle)。但一旦需要“換頻道”或者“關(guān)小聲音”,我們實際操縱的是遙控板(句柄),再有遙控板自己操縱電視機(對象)。所以如果想容納一個詞或句子,可創(chuàng)建一個 String 句柄 : String s。因此,一種更安全的做法是:創(chuàng)建一個句柄時,記住無論如何都進行初始化: String s = “ zyp” 。通常用 new 關(guān)鍵字達到這一目標(biāo)。 當(dāng)然,字串( String)并非唯一的類型。 存儲 到什么地方 程序運行時,我們最好對數(shù)據(jù)保存到什么地方做到心中有數(shù)。然而,寄存器的數(shù)量十分有限,所以寄存器是根據(jù)需要由編譯器分配。堆棧指針若向下移 , 會創(chuàng)建新的內(nèi)存;若向上移,則會釋放那些內(nèi)存。這一限制無疑影響了程序的靈活性,所以盡管有些Java 數(shù)據(jù)要保存在堆棧里 —— 特別是對象句柄,但 Java 對象并不 存儲于 其中。因此,用堆保存數(shù)據(jù)時會得到更大的靈活性。 ( 4) 常量 存儲。 ( 5)非 RAM 存儲。而對于持久化 對象,對象保存在磁盤中。 Java 提 供了對 輕量級持久化的支持,而諸如 JDBC 和 Hibernate 這樣的機制提供了更加復(fù)雜的對數(shù)據(jù)庫中存儲和讀取對象信息的支持。因此,對于這些類型, Java 采取與 C 和 C++相同的方法。他們的大小并不像其他大多數(shù)語言那樣隨機器硬件架構(gòu)的變化而變化?;绢愋途哂械陌b器類,使得可以在堆中創(chuàng)建一個非基本對象,用來表示對應(yīng)的基本類型。 包裝基本類型的原因?qū)⒃谝院蟮恼鹿?jié)中說明。也就是說,能作用于 int 或 float 的操作,也能作用于 BigInteger 或 Big Decimal。 BigInteger 支持任意精度的整數(shù)。 Java 中的數(shù)組 幾乎所有的程序設(shè)計語言都支持?jǐn)?shù)組。 Java 確保數(shù)組會被初始化,而且不能在它的范圍之外被訪問。一旦 Java 看到 null,就知道這個引用還沒有指向某個對象。同樣,編譯器也能確保這種數(shù)組的初始化,因為它會將這種數(shù)組所占的內(nèi)存全部置零。 作用域 大多數(shù) 過程型語言都有作用域( scope)的概念。 //Only x available { int q = 96。 縮排格式使 Java 代碼更易于閱讀。 //illegal } } 編譯器將會報告變量 x已經(jīng)定義過。當(dāng)用 new 創(chuàng)建一個 Java 對象時,它可以存活于作用域之外。在這一 小段代碼中,我們無法在這個作用域之后訪 問這個對象,因為 對它唯一的引用已超出了作用域的范圍。在 C++中,你不僅必須要確保對象的保留時間與你需要這些對象的時間一樣長,而且還必須在你使用完它們之后,將其銷毀。 Java 有一個垃圾回收器,用來監(jiān)視用 new 創(chuàng)建的所有對象,并辨別那些不會再被引用的對象。這樣做就消除了這類編程問題(即“內(nèi)存泄漏”), 這是由于程序員忘記釋放內(nèi)存而產(chǎn)生的問題。例如: class ATypeName {/*Class body goes here*/} 這就引入了一種新的類型,盡管類主體僅包含一條注釋語句(星號和斜杠以及其中的內(nèi)容就是注釋,本章后面再討論)。 但是,在定義它的所有方法之前,還沒有辦法能讓它去做更多的事情(也就是說,不能向 它發(fā)送任何有意義的消息)。 每個對象都有用來存儲其字段的空間;普通字段不能在對象間共享。 } 盡管這個類除了存儲數(shù)據(jù)之外什么也不能做,但是仍舊可以像下面這樣創(chuàng)建它的一個對象; DataOnly data = new DataOnly()。 = false。 DataOnly 類除了保存數(shù)據(jù)外沒別的用處,因為它沒有任何成員方法。所以最好明確地對變量進行初始化。所以在使用 x前,應(yīng)先 對其賦一個適當(dāng)?shù)闹怠? 方法、參數(shù)和返回值 許多程序設(shè)計語言(像 C 和 C++)用函數(shù)這個術(shù)語來描述命名子程序;而在 Java 里卻常用方法這個術(shù)語來表示“做某些事情的方式”。方法的基本組成部分包括:名稱、參數(shù)、返回值和方法體。 Java 中的方法只能作為類的一部分來創(chuàng)建。如: (arg1,arg2,arg3)。 這種調(diào)用方法的行為通常被稱為發(fā)送消息給對象。正如你可能料想的那樣,這些信息像 Java 中的其他信息一樣,采用的都是對象形式。 假設(shè)某個方法接受 String 為其參數(shù),下面是其具體定義,它必須置于某個類的定義內(nèi)才能被正確編譯。一旦將 s 傳遞給此方法,就可以把他當(dāng)作其他對象一樣進行處理(可以給它傳遞消息)。在這個例子中,返回值是通過計算 ()*2 這個表達式得到的。} void nothing(){return。 到此為止,讀者或許覺得:程序視乎只是一系列帶有方法的對象組合,這些方法以其他對象為參數(shù),并發(fā)送消息給其他對象。 the reason C++ is hybrid is to support backward patibility with the C language. Because C++ is a superset of the C language, it includes many of that language?s undesirable features, which can make some aspects of C++ overly plicated. The Java language assumes that you want to do only objectoriented programming. This means that before you can begin you must shift your mindset into an objectoriented world (unless it?s already there). The benefit of this initial effort is the ability to program in a language that is simpler to learn and to use than many other OOP languages. In this chapter you?ll see the basic ponents of a Java program and learn that (almost) everything in Java is an object. You manipulate objects with references Each programming language has its own means of manipulating elements in memory. Sometimes the programmer must be constantly aware of what type of manipulation is going on. Are you manipulating the element directly, or are you dealing with some kind of indirect representation (a pointer in C or C++) that must be treated with a special syntax? All this is simplified in Java. You treat everything as an object, using a single consistent syntax. Although you treat everything as an object, the identifier you manipulate is actually a “reference” to an object. You might imagine a television (the object) and a remote control 1(the reference)