java類的引用和對象的區(qū)別 java用類創(chuàng)建一個對象什么時候用new什么時候不用?
java用類創(chuàng)建一個對象什么時候用new什么時候不用?看到樓上的回答,特地寫代碼測試了一下,結(jié)果發(fā)現(xiàn)execSQL似乎不是靜態(tài)方法。java的對象都是在堆上分配內(nèi)存的,所以要用new。SQLiteDa
java用類創(chuàng)建一個對象什么時候用new什么時候不用?
看到樓上的回答,特地寫代碼測試了一下,結(jié)果發(fā)現(xiàn)execSQL似乎不是靜態(tài)方法。
java的對象都是在堆上分配內(nèi)存的,所以要用new。SQLiteDatabase database; 只是聲明一個對象引用而已,且沒有初始化。下面直接調(diào)用database.execSQL(SQL)應(yīng)該會報錯的吧。如果你初始化成SQLit
Java中的“引用”和C 中的“指針”有什么區(qū)別?
1.類型:引用其值為地址的數(shù)據(jù)元素,java封裝了的地址,可以轉(zhuǎn)成字符串查看,長度可以不必關(guān)心。C 指針是一個裝地址的變量,長度一般是計算機字長,可以認為是個int?! ?/p>
2.所占內(nèi)存: 引用聲明時沒有實體,不占空間。C 指針如果聲明后會用到才會賦值,如果用不到不會分配內(nèi)存?! ?/p>
3.類型轉(zhuǎn)換:引用的類型轉(zhuǎn)換,也可能不成功,拋異,或者IDE就不能通過。C 指針只是個內(nèi)存地址,指向那里,對程序來說還都是一個地址,但可能所指的地址不是程序想要的!
4.初始值:引用初始值為java關(guān)鍵字null。C 指針是INT,如不初始化指針,那他的值就不是固定的了?! ?/p>
5.計算:引用是不可以計算的。C 指針是INT,所以他可以計算,所以經(jīng)常用指針來代替數(shù)組下標?! ?/p>
6.控制:引用不可以計算,所以他只能在自己程序里,可以被控制。C 指針是內(nèi)存地址,也可以計算,所以他有可能指向了一個不歸自己程序使用的內(nèi)存地址,對于其他程序來說是很危險的,對自己程序來說也是不容易被控制的?! ?/p>
7.內(nèi)存泄露:JAVA引用不會產(chǎn)生內(nèi)存泄露。C 指針是容易產(chǎn)生內(nèi)存泄露的,所以程序員要小心使用,及時回收?! ?/p>
8.作為參數(shù):JAVA的方法參數(shù)只是傳值,引用做為參數(shù)使用時候,回給函數(shù)內(nèi)引用的值的COPY,所以在函數(shù)內(nèi)交換兩個引用參數(shù)是沒意義的,因為函數(shù)只交換的參數(shù)的COPY值,但在函數(shù)內(nèi)改變一個引用參數(shù)的屬性是有意義的,因為引用參數(shù)的COPY所引用的對象是和引用參數(shù)是同一個對象。C 指針做為參數(shù)給函數(shù)使用,實際上就是他所指的地址在被函數(shù)操作,所以函數(shù)內(nèi)用指針參數(shù)的操作都將直接作用到指針所指向的地址(變量,對象,函數(shù),等等)?! ?/p>
9.操作符和聲明:java里用