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