出處:http://blog.csdn.net/b271737818/archive/2009/02/24/3931913.aspx
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的引用。只要記得引用無大小,安全,不可計算,強轉時要小心就好了
posted on 2011-02-14 20:49
luis 閱讀(233)
評論(0) 編輯 收藏 引用