Java語言與C++語言差異在哪里?
Java語言與C++語言是目前最流行的編程語言。兩者的編程思想雖然有一定的共同性,但是在很多方面仍然存在著比較大的差異。如兩者在作用域上仍然存在著很大的差異。下面筆者就分析一下這兩門語言在作用域上的差異,以幫助大家進一步認識Java語言的優(yōu)勢。
差異一:變量作用域的不同。
作用域就決定了其定義的變量名的可見性與生命周期。在C++語言(包括其衍生出來的其他語言)與Java語言中,都是用一定花括號來代表一個作用域的。如上面的代碼,就表示有兩個作用域。外面一對花括號代表一級作用域;里面一對花括號代表二級作用域,依次類推。通常情況下,一級作用域中定義的變量,對其下級作用率都是有效的。也就是說,其下級作用域可以直接引用上級作用域中定義的變量。但是在二級作用域中,可以更改一級作用率中設(shè)置的變量值,不過這個更改只在二級作用域內(nèi)部有效。如上面這個代碼,在二級作用域中可以再定義一個y變量,重新賦值。注意,其實在二級作用域中定義的變量與一級作用域中定義的變量,雖然名字相同,但是他們不是同一個變量。如果此時在一級作用域外,有其他代碼引用這個y變量的話,則其的值仍然是3.14,而不會是3.15。也就是說,在二級作用域中定義的變量,只在其內(nèi)部有效。對于上級作用域是沒有絲毫影響的。也就是說,在作用域中定義的變量只在其作用域內(nèi)有效。出了其作用域外,其內(nèi)部設(shè)置的變量就全部無效了。
這個作用域的設(shè)置其實Java語言與C++語言是類似的。但是在細節(jié)上Java語言又多了一條限制。如上表的代碼所示,雖然在上面的代碼中變量y在兩個不同的作用域中定義,照理來說是兩者是互不干涉,可以共存。但是在Java編譯器中,是不允許有這種情況存在的。把上面這個代碼在Java編譯器中編譯的話,編譯器會通知程序開發(fā)人員,說這個變量y已經(jīng)定義過。然后編譯會以錯誤告終。雖然在C++語言中在不同級別的作用域中定義名字相同的變量是允許的,而在Java語言中則不行,這并不代表在變量的作用域上有所不同。其實從本質(zhì)上來說,兩者變量的作用域是相同的。只是對于Java語言來說,其又多加了一條限制。在Java語言中,即使作用域不同,其定義的變量名字也不能夠相同。這主要是為了提高Java代碼的可讀性,防止混淆才定義了這條規(guī)則。
差異二:對象作用域的差異。
Java語言與C++語言一樣,都是面向?qū)ο蟮恼Z言。不過兩者在實現(xiàn)機制上有很大的不同。就拿對象的作用域來說,就有很大的差異。這也導致了兩個面向?qū)ο蟮恼Z言在實現(xiàn)細節(jié)上的巨大差異。
首先Java程序員需要明白的是,Java對象作用域與變量的作用域是不同的。如上面的分析,變量的作用域只在作用域內(nèi)部有效。如在二級作用域內(nèi)定義的變量,超出了二級作用域,那么就無效了。但是對象則不同,其可以存在于作用域之外。如現(xiàn)在在某個作用域內(nèi)定義了一個name_full對象。當脫離這個作用域的時候,這個對象的引用是消失了。但是剛才創(chuàng)建的這個對象仍然實實在在的保存在內(nèi)存中。在Java程序的運行過程中,只要通過傳遞或者復制對象引用的手段,那么在其他作用域內(nèi)仍然可以訪問這個對象。也就是說,只要我們有這個需要,那么在某個作用域內(nèi)創(chuàng)建的對象其會一直存在并可以在作用域外的其他任何一個地方進行訪問。當然前提是要通過復制或者傳遞等手段把對象引用傳遞到其他的作用域中。這就是Java對象與Java變量在作用域上最大的不同。
本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學習技巧、就業(yè)案例、招生詳情等問題,可以對在線咨詢老師進行一對一問答!
- 上一篇:嵌入式軟件測試的八大方法
- 下一篇:IP地址常見功能解析
推薦資訊
- 大學生宅家14年餓死,反思學歷教育... 2012-04-22
- 北大青鳥鄭州電腦培訓學校適合哪... 2020-06-15
- 2020年大學畢業(yè)學什么專業(yè)技術(shù)好... 2020-08-08
- 鄭州北大青鳥學校在什么位置... 2021-07-09
- 鄭州北大青鳥,圓90后IT夢想... 2012-12-17
熱點資訊
- 電腦溫度多少是正常的情況呢?... 2018-09-07
- 四個策略及簡單的防護方法... 2018-09-07
- 對硬盤進行雙分區(qū)有什么好處... 2018-09-07
- 文件加密的幾個簡單方法... 2018-09-07
- 計算機小技巧,80G硬盤巧變變成... 2018-09-07