1. 程式人生 > >java物件的宣告與例項化

java物件的宣告與例項化

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)); 
	}
}