一切都是对象---JAVA编程思想
一切都是對象
“如果我們說另一種不同的語言,那么我們就會發覺一個有些不同的世界。”——Luduing Wittgerstein(1889-1951)
盡管Java是基于C++的,但是相比之下,Java是一種更“純粹”的面向對象設計語言。
Java語言假設我們只進行面向對象的程序設計;而C++不同,因為C++是C的一個超集,所以,C++在某些方面顯得過于復雜。
2.1 用引用操縱對象
程序員必須注意將要處理的數據是什么類型。你是直接操縱元素,還是用某種基于特殊語法的間接表示(例如C和C++這里的指針)來操作對象?
這一切在Java里都得到了簡化。一切都被視為對象,因此可采用單一固定的語法。盡管一切都看做對象,但操縱的標識符實際上是對象的一個“引用”。形如:String s中的s就是引用。
2.2 必須由你創建所有對象
一旦創建了一個引用,就希望它能與一個新的對象相關聯。通常用new操作符來實現這一目的。形如:String s = new String("");這種形式。
程序運行時,對象是怎么進行放置安排的呢?特別是內存是怎樣分配的呢?
有五種不同的地方可以存儲數據:
以上都在說“引用”對象,我們看一個特例:基本類型
為什么要存在基本類型呢?
因為new將對象存儲在“堆”里,用new創建一個小的、簡單的變量,往往不是很有效。因此,對于這些類型,Java采用與C和C++相同的方法。也就是說,不用new來創建變量,而是創建一個并非是引用的“自動”變量。這個變量直接存儲“值”,并置于堆棧中,因此更加高效。
Java的基本數據類型所占存儲空間的大小:
這里指出:Boolean只有true或flase,以及Java SE5的自動包裝,還有高精度數字BigInteger和BigDecimal的類型。
BigInteger支持任意精度的整數。
BigDecimal支持任何進度的定點數。
Java中的數組
幾乎所有的程序都支持數組。在C和C++中使用數組是危險的,因為C和C++中的數組就是內存塊。如果一個程序要訪問其自身內存塊之外的數組,或在數組初始化前使用內存(程序中常見的錯誤),都會產生難以預料的后果(改天可以試試,嘿嘿)。
Java的主要目標之一是安全性。Java會確保數組被初始化,并且會檢查數組下標是否越界。雖然這種范圍檢查是以每個數組上少量的內存開銷及運行時的下標檢查為代價的。但換來的是安全性和效率的提高,因此付出的代價是值得的。
創建一個數組對象時,實際上就是創建了一個引用數組,并且每個引用都會自動的被初始化為一個特定值null。
2.3 永遠不需要銷毀對象
大多數程序設計語言中,變量生命周期的概念,占據了程序設計工作中非常重要的部分。
作用域,大多數過程語言都有作用域(scope)的概念。作用域決定了在其內定義的變量名的可見性和生命周期。在C、C++和Java中,作用域由花括號的位置決定。
對象的作用域,Java對象不具備和基本類型一樣的生命周期。當用new創建一個Java對象時,它可以存活于作用域之外。如下:
{String s = new String(""); }引用s在作用域終點就消失了。然而,s指向的String對象仍繼續占據內存空間。
事實證明,由new創建的對象,只要你需要,就會一直保留下去。這樣,許多C++編程問題在Java中就完全消失了。在C++中,你不僅必須要確保對象的保留時間與你需要這些對象的時間一樣長,而且還必須在你使用完它們之后,將其銷毀。
不過這樣就帶來了一個問題。靠什么才能防止這些對象填滿內存空間,進而阻塞你的程序呢?沒錯,就是我們的垃圾回收器,它用來釋放那些不會再被引用的對象,將內存空間提供給新的對象使用。
2.4 創建新的數據類型:類
用class這個關鍵字,有方法和字段。不做闡述!!
注意:局部變量沒有默認初始化(也就是方法內的變量),成員變量(也就是字段)有默認初始化。
2.5 方法、參數和返回值
調用方法,通常被稱為發送消息給對象。
參數列表和返回值,不做闡述!
2.6 構建一個Java程序
名字可見性,Java采用一種全新的方法來避免類名或者函數名互相沖突。就是增加一個包名(package關鍵字),一般我們將包名設為我們的域名,如(com.baidu.www,是反著寫)(因為域名是唯一的)。
運用其他構件,我需要引入別人的庫?那就需要用到import 你需要引入庫的包名(例如,import java.util.*)。
static關鍵字,有些面向對象語言采用類數據和類方法。類數據和類方法是作為整個類存在的,而不是類的某個特定對象存在的(類與對象都直接使用靜態成員和靜態方法)。
2.9 編碼風格
“駝峰風格”,類名的首字母大寫;如果類名由幾個單詞構成,那么把它們連在一起并且每個單詞首字母大寫。字段名與類名相似,除了第一個單詞的首字母不大寫以外,其他都單詞首字母都大寫。
本章完
總結
以上是生活随笔為你收集整理的一切都是对象---JAVA编程思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字社交圈里的白酒“新”消费——腾讯20
- 下一篇: 中国企业海外人才发展白皮书