Ⅰ java引用 與 C 的指針
數組就是指針,是固定的指針,不能變更的指針。
·引用只能在定義的時候賦值,或者作為函數的參數
·引用定義的數據與沒有引用前的數據是同一數據,不同的名稱,相當於給舊數據引新名稱
·引用一旦定義,就不能改變,只能在定義時指定,並且其他所有的地方都不能去改變引用關系
當然,指針與引用之間的關系並非是一講半講的內容能夠交待得很透切.
我卻認為JAVA的使用相對安全,而且這也是大多數人認為的。
Ⅱ java的引用和c裡面的指針有何不同String直接賦值和String new出來的有何區別
你好!你的問題太長了,而且,我沒有抓住重點。
所以就你題目來進行部分解答,希望對你有所幫助。
java的引用和c裡面的指針有何不同?
這個我也說不好,java的引用 想當於C的指針,是在JVM堆中的一個地址指向。
如果要說不同,的話,就是我們不能對JVM做什麼,只能對它存儲的值進行操作。
而C是可以對內存進行操作的。
String直接賦值和String new出來的有何區別?
String str = "hello";
String str = new String("hello");
這兩個,在結果上沒有區別。
細微的區別就是 java重寫了「」 這個符號 "" 與 new String();這是等同的。
"hello" 是在 堆 中創建了一個對象,並直接賦值。
new String("hello"); 是創建了兩個對象。
"hello" 創建 了第一個對象。 new String(str) 利用第一個對象的值,創建了第二個對象。
Ⅲ java的引用和c++的指針的區別
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的引用。只要記得 引用無大小,安全,不可計算,強轉時要小心就好了。
Ⅳ 什麼是java引用 和C++里的指針和引用有什麼區別
個人感覺Java引用使用上和C++的指針差不多。Java引用可以為null,指針也可以。java引用和C++的指針一般都要new一個對象才能用。
不過語法上又像C++的引用,可以直接用成員訪問符,僅此而已。
其實C++的指針和引用本身區別也沒有多少,引用這個概念就是從C語言,指針擴展來的。
Ⅳ Java引用和C++指針的區別
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的引用。只要記得
引用無大小,安全,不可計算,強轉時要小心就好了。
參考
http://blog.csdn.net/b271737818/article/details/3931913
Ⅵ Java中的對象類型的引用到底是不是指針
java中並沒有指針的概念,指針是C和C++裡面的概念。 在java中,指針已經被其他的語法所取代,學習起來更加輕松。 以下是java中指針的體現: 比如: Person p = new Person(); p叫做Person類的一個引用,或者是地址。這個和C中的指針地址概念是一...
Ⅶ java中引用類型的變數與c中指針變數的區別
區別應該很多,理解這些區別應該是建立在對C的指針和對Java引用類型的高度理解之上2的。
這里說下自己的理解:java中的引用類型可以看成是C中指針概念的封裝。C中指針是一個數值,可以進行各種運算(算術、邏輯、位),但是在java中,這些功能被封裝,是無法使用的。
根據本題的其他回答更新:java中的參數傳遞是按值傳遞當傳遞的是基礎類型的值時,那麼會將此值復制一份傳遞,當傳遞的是引用類型時候,將會把此引用類型的指針 值復制一份傳遞。比如:public void test(Person p){....}方法中對p的操作,是直接對P在內容中對應的數據直接操作,而不是將P對應的內容中的數據復制一份傳遞到test方法中。
Ⅷ Java中的「引用」和C++中的「指針」有什麼區別
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的引用。只要記得
引用無大小,安全,不可計算,強轉時要小心就好了。
Ⅸ java的引用就是C或者C++里說的指針嗎
個人感覺java引用使用上和c++的指針差不多。java引用可以為null,指針也可以。java引用和c++的指針一般都要new一個對象才能用。
不過語法上又像c++的引用,可以直接用成員訪問符,僅此而已。
其實c++的指針和引用本身區別也沒有多少,引用這個概念就是從c語言,指針擴展來的。
Ⅹ java引用與C語言指針的區別是什麼
java引用與C語言指針的區別有以下幾方面:
1、現象
指針在運行時可以改變其所指向的值,而引用一旦和某個對象綁定後就不再改變,總是指向最初的對象。
2、編譯
程序在編譯時分別將指針和引用添加到符號表上,符號表上記錄的是變數名及變數所對應地址。指針變數在符號表上對應的地址值為指針變數的地址值,而引用在符號表上對應的地址值為引用對象的地址值。符號表生成後就不會再改,因此指針可以改變指向的對象(指針變數中的值可以改),而引用對象不能改。
3、類型
引用其值為地址的數據元素,java封裝了的地址,可以轉成字元串查看,長度可以不必關心;C指針是一個裝地址的變數,長度一般是計算機字長,可以認為是個int。
4、內存佔用
所佔內存:引用聲明時沒有實體,不佔空間。C指針如果聲明後會用到才會賦值,如果用不到不會分配內存。
5、內存溢出
JAVA引用的使用許可權比較小,不會產生內存溢出。C指針是容易產生內存溢出的,所以程序員要小心使用,及時回收。
6、本質
JAVA中的引用和C中的指針本質上都是想通過一個別名,找到要操作的目標(變數對象等),方便在程序里操作。所不同的是JAVA的辦法更安全,使用更加方便些,但沒有了C的靈活,高效。