日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一切都是对象---JAVA编程思想

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一切都是对象---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("");這種形式。

程序運行時,對象是怎么進行放置安排的呢?特別是內存是怎樣分配的呢?

有五種不同的地方可以存儲數據:

  • 寄存器。這是最快的存儲區,因為它位于不同于其他存儲區的地方——處理器內部。但是寄存器的數量及其有限,所以寄存器根據需求進行分配。你不能直接控制,也不能再程序中感覺到寄存器存在的任何跡象(C和C++允許你向編譯器建議寄存器的分配方式)。
  • 堆棧位于通用RAM(隨機訪問存儲器)中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針向下移動,則分配新內存;向上移動,則釋放那些內存。這是一種快速有效的分配存儲方法,僅次于寄存器。創建程序時,Java系統必須知道存儲在堆棧內所有項的確切生命周期,以便上下移動堆棧指針。這一約束限制了程序的靈活性,所以雖然某些Java數據存儲在堆棧中——特別是對象引用,但是Java對象并不存儲在其中
  • 。一種通用的內存池(也位于RAM區),用于存放所有的Java對象。堆不同于堆棧的好處是:編譯器不需要知道存儲的數據在堆里存活多長時間。因此,在堆里分配內存有很大的靈活性。當需要一個對象時,只需用new寫一行簡單的代碼,當執行這行代碼時,會自動在堆里進行存儲分配。當然,為這種靈活性必須要付出相應的代價:用堆進行存儲分配和清理可能比用堆棧進行存儲分配需要更多時間(如果確實可以在Java中像C++中一樣在棧中創建對象,言外之意是說Java沒有像C++一樣在棧中創建對象的本事。當然,基本類型可以在棧中創建)。
  • 常量存儲常量值通常直接存放在程序代碼內部,這樣做是安全的,因為它們永遠不會改變。有時,在嵌入式系統中,常量本身會和其他部分離開,所以在這種情況下,可以選擇將其放在ROM(只讀存儲器)中。
  • 非RAM存儲。如果數據完全存活于程序之外,那么它可以不受程序的任何控制,在程序沒有運行時也可以存在。其中兩個基本的例子就是流對象持久化對象。在流對象中,對象轉化成字節流,通常被發送給另一臺機器。在持久化對象中,對象被存放在磁盤上,因此,即使程序終止,它們仍可以保持自己的狀態。這種存儲方式的技巧在于;把對象轉化成可以存放在其他媒介上的事物,在需要時,可恢復成常規的、基于RAM的對象Java提供了對輕量級持久化的支持,而諸如JDBC和Hibernate這樣的機制提供了更加復雜的對在數據庫中存儲和讀取對象信息的支持。
  • 以上都在說“引用”對象,我們看一個特例:基本類型

    為什么要存在基本類型呢?

    因為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编程思想的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。