Java開發筆記(二十七)數值包裝類型

方法的出現緣起優化代碼結構,但它的意義並不侷限於此,正由於有了方法定義,編程語言才更像一門能解決實際問題的工具,而不只僅是隻能用於加減乘除的計算器。在數學的發展過程當中,爲了表示四則運算,人們創造了加減乘除符號,對應Java編程的「+」、「-」、「*」、「/」。可是隨着運算類型的增多,新的運算符號來不及創造了,因而出現了函數形式的運算操做,譬如三角函數sin、cos等等。這種數學函數就是方法的雛形,對於三角函數來講,角度相似方法的輸入參數,而函數值相似方法的輸出參數。
自從有了方法,大部分的算術計算均可以使用方法來表達,不過基本數值類型如int、long等因爲設計上的緣故,它們的變量並不能直接調用方法;所以Java另外爲基本類型定義了對應的包裝類型,經過包裝變量才能調用相關的算術方法。下面是基本數值類型與包裝數值類型的關係說明:
字節型byte,對應包裝字節類型Byte
短整型short,對應包裝短整類型Short
整型int,對應包裝整型Integer
長整型long,對應包裝長整類型Long
浮點型flotat,對應包裝浮點類型Flota
雙精度型double,對應包裝雙精度類型Double
包裝類型與基本類型同樣,首先要聲明包裝變量,然乎對該變量進行賦值。給包裝變量賦值(或稱初始化)有三種方式,分別介紹以下:
一、直接經過等號把具體數字賦值給包裝變量,代碼示例以下:html

		// 初始化包裝變量的第一種方式:直接用等號賦值
		Integer oneInteger = 1;

 

二、調用Integer的valueOf方法完成指定數字的賦值,這裏可將Integer換成該數字想要表達的包裝類型,具體賦值代碼見下:java

		// 初始化包裝變量的第二種方式:調用包裝類型的valueOf方法
		Integer oneInteger = Integer.valueOf(1);

 

三、使用關鍵字new建立新的包裝變量,形如「new 包裝類型名稱(具體數字)」,下面是該方式的賦值代碼例子:程序員

		// 初始化包裝變量的第三種方式:使用關鍵字new建立新變量
		Integer oneInteger = new Integer(1);

 

話說包裝變量的初始化方式爲啥這麼多呢?彷彿孔乙己號稱茴香豆的茴字有四種寫法。其實無論設計師仍是程序員,你們都是人,有的喜歡簡單點,有的但願嚴謹點,有的邋里邋遢,有的循規蹈矩,所謂蘿蔔青菜各有所愛,衆口難調罷了。因此給包裝變量賦值的寫法,也只好一一照顧衆人的口味,既有簡單直白的寫法,也有意思明瞭的寫法,還有面向對象的寫法,總有一款適合你。
既然能夠把基本類型的變量直接賦值給包裝變量,那麼反過來可否直接將包裝變量賦值給基本變量呢?很遺憾這個操做是不容許的,而且也不能使用基本類型之間的強制類型轉換,只能經過指定方法得到對應的基本變量數值。例如,要想把包裝變量賦值給整型變量,則需調用該包裝變量的intValue方法。依此類推,從包裝變量獲取字節數值、短整數值、長整數值、浮點數值、雙精度數值,就得分別調用包裝變量的byteValue方法、shortValue方法、longValue方法、floatValue方法、doubleValue方法。下面是將包裝變量賦值給各類基本類型變量的代碼例子:編程

		// 初始化包裝變量的第一種方式:直接用等號賦值
		Integer oneInteger = 1;
		System.out.println("oneInteger="+oneInteger);
		// 把包裝變量轉換成字節變量,須要調用包裝變量的byteValue方法
		byte oneByte = oneInteger.byteValue();
		System.out.println("oneByte="+oneByte);
		// 把包裝變量轉換成短整變量,須要調用包裝變量的shortValue方法
		short oneShort = oneInteger.shortValue();
		System.out.println("oneShort="+oneShort);
		// 把包裝變量轉換成整型變量,須要調用包裝變量的intValue方法
		int oneInt = oneInteger.intValue();
		System.out.println("oneInt="+oneInt);
		// 把包裝變量轉換成長整變量,須要調用包裝變量的longValue方法
		long oneLong = oneInteger.longValue();
		System.out.println("oneLong="+oneLong);
		// 把包裝變量轉換成浮點變量,須要調用包裝變量的floatValue方法
		float oneFloat = oneInteger.floatValue();
		System.out.println("oneFloat="+oneFloat);
		// 把包裝變量轉換成雙精度變量,須要調用包裝變量的doubleValue方法
		double oneDouble = oneInteger.doubleValue();
		System.out.println("oneDouble="+oneDouble);

 

對於數值包裝變量來講,它們仍舊容許使用四則運算符進行計算操做,包括運算符「+」「-」「*」「/」「%」等等。然而若要判斷兩個包裝變量是否相等,便不可經過雙等號「==」來判斷,而要調用包裝變量的equals方法來校驗。equals方法返回true表示待比較的兩個包裝變量值相等,返回false表示兩個數值不等,調用equals方法的代碼示例以下:編程語言

		// 數值包裝變量的equals方法至關於關係運算符「==」
		boolean equalResult = oneInteger.equals(2);
		System.out.println("equalResult="+equalResult);

 

除了基本的類型轉換與數值運算以外,包裝類型還提供了其它幾種常見的邏輯方法。好比sum方法用來求兩個數字之和,max方法用來求兩個數字的較大值,min方法用來求兩個數字的較小值。另有compare方法用來比較兩個數字的大小,若兩者相等則返回0,前者較小則返回-1,後者較小則返回1。這幾個方法的調用代碼例子以下:函數

		int a = 7, b = 8;
		// 數值包裝類型的sum方法至關於算術運算符「+」
		int sum = Integer.sum(a, b);
		System.out.println("sum="+sum);
		// 數值包裝類型的max方法用來求兩個數字的較大值
		int max = Integer.max(a, b);
		System.out.println("max="+max);
		// 數值包裝類型的min方法用來求兩個數字的較小值
		int min = Integer.min(a, b);
		System.out.println("min="+min);
		// 數值包裝類型的compare方法用來比較兩個數字的大小,兩者相等則返回0,前者較小則返回-1,後者較小則返回1
		int compareResult = Integer.compare(a, b);
		System.out.println("compareResult="+compareResult);

 

更多Java技術文章參見《Java開發筆記(序)章節目錄工具

相關文章
相關標籤/搜索