- 好好學(xué)Java:從零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)
- 歐陽燊
- 1189字
- 2022-07-27 19:15:01
4.2.1 數(shù)值類型包裝
方法的出現(xiàn)緣于優(yōu)化代碼結(jié)構(gòu),但它的意義并不局限于此,正因?yàn)橛辛朔椒ǘx,編程語言才更像一門能夠解決實(shí)際問題的工具,而不僅僅是用于加減乘除的計算器。在數(shù)學(xué)的發(fā)展過程中,為了表示四則運(yùn)算,人們創(chuàng)造了加減乘除符號,對應(yīng)Java編程的“+”“-”“*”和“/”。但是隨著運(yùn)算類型的增多,新的運(yùn)算符號來不及創(chuàng)造了,于是出現(xiàn)了函數(shù)形式的運(yùn)算操作,譬如三角函數(shù)sin、cos等。這種數(shù)學(xué)函數(shù)就是方法的雛形,對于三角函數(shù)來說,弧度類似方法的輸入?yún)?shù),而函數(shù)值類似方法的輸出參數(shù)。
自從有了方法,大部分的數(shù)學(xué)計算都可以使用方法來表達(dá),不過基本數(shù)值類型如int、long等由于設(shè)計上的緣故,它們的變量并不能直接調(diào)用方法。因此,Java另外為基本類型定義了對應(yīng)的包裝類型,通過包裝變量才能調(diào)用相關(guān)的算術(shù)方法。表4-1是基本數(shù)值類型與包裝數(shù)值類型的關(guān)系說明。
表4-1 基本類型與包裝類型的對照關(guān)系

包裝類型與基本類型一樣,首先要聲明包裝變量,然后對該變量賦值。給包裝變量賦值(或稱初始化)有3種方式,分別介紹如下:
(1)直接通過等號把具體數(shù)字賦值給包裝變量,代碼示例如下:
// 初始化包裝變量的第一種方式:直接用等號賦值 Integer oneInteger=1;
(2)調(diào)用Integer的valueOf方法完成指定數(shù)字的賦值,這里可將Integer換成該數(shù)字想要表達(dá)的包裝類型,具體賦值代碼如下:
// 初始化包裝變量的第二種方式:調(diào)用包裝類型的valueOf方法 Integer oneInteger=Integer.valueOf(1);
(3)使用關(guān)鍵字new創(chuàng)建新的包裝變量,形如“new包裝類型名稱(具體數(shù)字)”。下面是該方式的賦值代碼例子:
// 初始化包裝變量的第三種方式:使用關(guān)鍵字new創(chuàng)建新變量 Integer oneInteger=new Integer(1);
包裝變量的初始化方式為什么這么多呢?仿佛孔乙己號稱茴香豆的茴字有4種寫法。其實(shí)無論是設(shè)計師還是程序員,大家都是人,有的喜歡簡單點(diǎn),有的希望嚴(yán)謹(jǐn)點(diǎn),有的邋里邋遢,有的循規(guī)蹈矩,所謂蘿卜青菜各有所愛,眾口難調(diào)罷了。所以給包裝變量賦值的寫法只好一一照顧眾人的口味,既有簡單直白的寫法,又有意思明了的寫法,還有面向?qū)ο蟮膶懛ǎ傆幸豢钸m合你。
既然可以把基本類型的變量直接賦值給包裝變量,那么反過來能否直接將包裝變量賦值給基本變量呢?很遺憾這個操作是不允許的,并且不能使用基本類型之間的強(qiáng)制類型轉(zhuǎn)換,只能通過指定方法獲得對應(yīng)的基本變量數(shù)值。例如,要想把包裝變量賦值給整型變量,則需調(diào)用該包裝變量的intValue方法。以此類推,從包裝變量獲取字節(jié)數(shù)值、短整數(shù)值、長整數(shù)值、浮點(diǎn)數(shù)值、雙精度數(shù)值,就得分別調(diào)用包裝變量的byteValue方法、shortValue方法、longValue方法、floatValue方法、doubleValue方法。下面是將包裝變量賦值給各種基本類型變量的代碼例子(完整代碼見本章源碼的src\com\method\pack\PackNumber.java):
Integer oneInteger=1; // 初始化包裝變量的第一種方式:直接用等號賦值 System.out.println("oneInteger="+oneInteger); // 把包裝變量轉(zhuǎn)換成字節(jié)變量,需要調(diào)用包裝變量的byteValue方法 byte oneByte=oneInteger.byteValue(); //把包裝變量轉(zhuǎn)換成字節(jié)變量 System.out.println("oneByte="+oneByte); short oneShort=oneInteger.shortValue(); //把包裝變量轉(zhuǎn)換成短整變量 System.out.println("oneShort="+oneShort); int oneInt=oneInteger.intValue(); //把包裝變量轉(zhuǎn)換成整型變量 System.out.println("oneInt="+oneInt); long oneLong=oneInteger.longValue(); //把包裝變量轉(zhuǎn)換成長整變量 System.out.println("oneLong="+oneLong); float oneFloat=oneInteger.floatValue(); //把包裝變量轉(zhuǎn)換成浮點(diǎn)變量 System.out.println("oneFloat="+oneFloat); double oneDouble=oneInteger.doubleValue(); //把包裝變量轉(zhuǎn)換成雙精度變量 System.out.println("oneDouble="+oneDouble);
- iOS Game Programming Cookbook
- Java 開發(fā)從入門到精通(第2版)
- C語言程序設(shè)計教程(第2版)
- 微信公眾平臺開發(fā):從零基礎(chǔ)到ThinkPHP5高性能框架實(shí)踐
- Elasticsearch for Hadoop
- Webpack實(shí)戰(zhàn):入門、進(jìn)階與調(diào)優(yōu)
- UNIX Linux程序設(shè)計教程
- Java Web開發(fā)實(shí)例大全(基礎(chǔ)卷) (軟件工程師開發(fā)大系)
- 青少年學(xué)Python(第2冊)
- Java高并發(fā)編程詳解:深入理解并發(fā)核心庫
- 從零開始:C語言快速入門教程
- Joomla!Search Engine Optimization
- 優(yōu)化驅(qū)動的設(shè)計方法
- C語言王者歸來
- HTML5+CSS3+jQuery Mobile+Bootstrap開發(fā)APP從入門到精通(視頻教學(xué)版)