java物件的宣告與例項化
阿新 • • 發佈:2018-12-08
Java 在定義類時,只是通知編譯器需要準備多大的記憶體空間,並沒有為它分配記憶體空間。只有用類建立了物件後,才會真正佔用記憶體空間。
1. 宣告物件
物件的宣告和基本型別的資料宣告在形式上是一樣的:
類名 物件名;
物件名也是使用者識別符號,和基本型別的變數遵循同樣的命名規則和使用規則。
宣告一個變數,並不會分配一個完整的物件所需要的記憶體空間,只是將物件名所代表的變數看成是一個引用變數,併為它分配所需記憶體空間,它所佔用的空間遠遠小於一個類的物件所需要的空間。
如此處理,使得Java中宣告一個物件的消耗很小,但也有一個副作用,就是物件不能馬上使用,還需要對它進行例項化。
2. 例項化物件
用new關鍵字建立一個新物件,即進行例項化。格式如下:
new 構造方法([引數列表])
例項化的過程就是為物件分配記憶體空間的過程,此時,物件才成為類的例項。new所執行的具體操作是呼叫相應類中的構造方法(包括祖先類的構造方法),來完成記憶體分配以及變數的初始化工作,然後將分配的記憶體地址返回給所定義的變數。
實質:例項化了就有自己記憶體空間。而沒有例項化就和引用的物件記憶體空間地址相同,指向同一個空間。
import java.math.BigDecimal; import java.text.NumberFormat; public class mathTest{ public static void main(String[] args) { NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立貨幣格式化引用,在棧記憶體中開闢空間 NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用,在棧記憶體中開闢空間 percent.setMaximumFractionDigits(3); //百分比小數點最多3位 BigDecimal loanAmount = new BigDecimal("15000.48"); //建立貸款金額物件,堆記憶體中開闢地址 BigDecimal interestRate = new BigDecimal("0.008"); //建立利率物件,堆記憶體中開闢地址 BigDecimal interest = loanAmount.multiply(interestRate); //相乘 System.out.println("貸款金額:\t" + currency.format(loanAmount)); System.out.println("利率:\t" + percent.format(interestRate)); System.out.println("利息:\t" + currency.format(interest)); } }