java中的引用和C++中的指標的區別

來源:互聯網
上載者:User

1.類型:引用其值為地址的資料元素,java封裝了的地址,可以轉成字串查看,長度可以不必關心。C++指標是一個裝地址的變數,長度一般是電腦字長,可以認為是個int。

2.所佔記憶體: 引用聲明時沒有實體,不佔空間。C++指標如果聲明後會用到才會賦值,如果用不到不會分配記憶體。

3.類型轉換:引用的類型轉換,也可能不成功,拋異,或者IDE就不能通過。C++指標只是個記憶體位址,指向那裡,對程式來說還都是一個地址,但可能所指的地址不是程式想要的!

4.初始值:引用初始值為java關鍵字null。C++指標是INT,如不初始化指標,那他的值就不是固定的了。

5.計算:引用是不可以計算的。C++指標是INT,所以他可以計算,所以經常用指標來代替數組下標。

6.控制:引用不可以計算,所以他只能在自己程式裡,可以被控制。C++指標是記憶體位址,也可以計算,所以他有可能指向了一個不歸自己程式使用的記憶體位址,對於其他程式來說是很危險的,對自己程式來說也是不容易被控制的。

7.記憶體泄露:JAVA引用不會產生記憶體泄露。C++指標是容易產生記憶體泄露的,所以程式員要小心使用,及時回收。

8.作為參數:JAVA的方法參數只是傳值,引用做為參數使用時候,回給函數內引用的值的COPY,所以在函數內交換兩個引用參數是沒意義的,因為函數只交換的參數的COPY值,但在函數內改變一個引用參數的屬性是有意義的,因為引用參數的COPY所引用的對象是和引用參數是同一個對象。 C++指標做為參數給函數使用,實際上就是他所指的地址在被函數操作,所以函數內用指標參數的操作都將直接作用到指標所指向的地址(變數,對象,函數,等等)。

9.操作符和聲明:java裡用"."。C++指標用"->" 用"*"聲明指標。(似乎這條沒什麼用!)

10.本質:java中的引用和C++中的指標本質上都是想通過一個叫做引用或者指標的東西,找到要操作的目標(變數 對象等),方便在程式裡操作。所不同的是JAVA的辦法更安全,方便些,但沒有了C++的靈活,高效。

java中的引用和C++中的指標,他們最好不要混在一起,也不要認為是一回事,只不過他們的作用有些相似,總叫人不自覺的對比。但在我們寫 JAVA程式的時候最好忘記C++的指標,寫C++程式的時候,也不要老惦記著JAVA的引用。只要記得引用無大小,安全,不可計算,強轉時要小心就好了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.