日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java自动类型转换和强制类型转换

發(fā)布時間:2025/3/12 java 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java自动类型转换和强制类型转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)類型的轉(zhuǎn)換可以分為隱式轉(zhuǎn)換(自動類型轉(zhuǎn)換)和顯式轉(zhuǎn)換(強制類型轉(zhuǎn)換)兩種。

隱式轉(zhuǎn)換(自動類型轉(zhuǎn)換)

滿足2 個條件,那么將一種類型的數(shù)據(jù)賦給另外一種類型變量的時,將執(zhí)行自動類型轉(zhuǎn)換(automatic type conversion)。

兩種數(shù)據(jù)類型彼此兼容目標類型的取值范圍大于源數(shù)據(jù)類型(低級類型數(shù)據(jù)轉(zhuǎn)換成高級類型數(shù)據(jù))

當滿足以上 2 個條件時,自動轉(zhuǎn)換(widening conversion)發(fā)生。例如 byte 類型向 short 類型轉(zhuǎn)換時,由于 short 類型的取值范圍較大,會自動將 byte 轉(zhuǎn)換為 short 類型。

在運算過程中,由于不同的數(shù)據(jù)類型會轉(zhuǎn)換成同一種數(shù)據(jù)類型,所以整型、浮點型以及字符型都可以參與混合運算。自動轉(zhuǎn)換的規(guī)則是從低級類型數(shù)據(jù)轉(zhuǎn)換成高級類型數(shù)據(jù)。轉(zhuǎn)換規(guī)則如下:

數(shù)值型數(shù)據(jù)的轉(zhuǎn)換:byte→short→int→long→float→double。字符型轉(zhuǎn)換為整型:char→int。

以上數(shù)據(jù)類型的轉(zhuǎn)換遵循從左到右的轉(zhuǎn)換順序,最終轉(zhuǎn)換成表達式中表示范圍最大的變量的數(shù)據(jù)類型。

示例自動類型轉(zhuǎn)換
顧客到超市購物,購買牙膏 2 盒,面巾紙 4 盒。其中牙膏的價格是 10.9 元,面巾紙的價格是 5.8 元,求商品總價格。

實現(xiàn)

public static void main(String[] args) {float price1 = 10.9f; // 定義牙膏的價格double price2 = 5.8; // 定義面巾紙的價格int num1 = 2; // 定義牙膏的數(shù)量int num2 = 4; // 定義面巾紙的數(shù)量double res = price1 * num1 + price2 * num2; // 計算總價System.out.println("一共付給收銀員" + res + "元"); // 輸出總價 }

上述代碼中首先定義了一個 float 類型的變量存儲牙膏的價格,然后定義了一個 double 類型的變量存儲面巾紙的價格,再定義兩個 int 類型的變量存儲物品的數(shù)量,最后進行了乘運算以及和運算之后,將結(jié)果儲存在一個 double 類型的變量中進行輸出。

輸出結(jié)果

一共付給收銀員44.999923706055

從執(zhí)行結(jié)果看出,float、int 和 double 三種數(shù)據(jù)類型參與運算,最后輸出的結(jié)果為 double 類型的數(shù)據(jù)。這種轉(zhuǎn)換一般稱為“表達式中類型的自動提升”。

使用一個顯示的強制類型轉(zhuǎn)換,例如:

byte b = 50; b = (byte)(b*2);

這樣就能產(chǎn)生正確的值 100。

注意:char 類型比較特殊,char 自動轉(zhuǎn)換成 int、long、float 和 double,但 byte 和 short 不能自動轉(zhuǎn)換為 char,而且 char 也不能自動轉(zhuǎn)換為 byte 或 short。

顯式轉(zhuǎn)換(強制類型轉(zhuǎn)換)

盡管自動類型轉(zhuǎn)換是很有幫助的,但并不能滿足所有的編程需要。例如,如果你需要將 double 型的值賦給一個 int 型的變量,你將怎么辦?

這種轉(zhuǎn)換不會自動進行,因為 double 型的變化范圍比 int 型的要小。這種轉(zhuǎn)換有使成為“縮小轉(zhuǎn)換”,因為你肯定要將源數(shù)據(jù)類型的值變小才能適合目標數(shù)據(jù)類型。

所以當兩種數(shù)據(jù)類型不兼容,或目標類型的取值范圍小于源類型時,自動轉(zhuǎn)換將無法進行,這時就需要進行強制類型轉(zhuǎn)換。其語法格式如下:

(type)variableName

其中,type 為 variableName 要轉(zhuǎn)換成的數(shù)據(jù)類型,而 variableName 是指要進行類型轉(zhuǎn)換的變量名稱,強制轉(zhuǎn)換的實例如下:

int a = 3; double b = 9.0; a = (int)b;

上述代碼中首先將 double 類型變量 b 的值強制轉(zhuǎn)換成 int 類型,然后將值賦給 a,但是變量 b 本身的值是沒有發(fā)生變化的。

在強制類型轉(zhuǎn)換中,如果是將浮點類型的值轉(zhuǎn)換為整數(shù),直接去掉小數(shù)點后邊的所有數(shù)字;而如果是整數(shù)類型強制轉(zhuǎn)換為浮點類型時,將在小數(shù)點后面補零。

示例強制類型轉(zhuǎn)換
顧客到超市購物,購買牙膏 2 盒,面巾紙 4 盒。其中牙膏的價格是 10.9 元,面巾紙的價格是 5.8 元,求商品總價格,在計算總價時采用 int 類型的數(shù)據(jù)進行存儲。實現(xiàn)代碼如下:

public static void main(String[] args) {float price1 = 10.9f;double price2 = 5.8;int num1 = 2;int num2 = 4;int res2 = (int) (price1 * num1 + price2 * num2);System.out.println("一共付給收銀員" + res2 + "元"); }

在上例中,有 double 類型、float 類型和 int 類型的數(shù)據(jù)參與運算,其運算結(jié)果默認為 double 類型,題目要求的結(jié)果為 int 類型,因為 int 類型的取值范圍要小于 double 類型的取值范圍,所以需要進行強制類型轉(zhuǎn)換。

輸出結(jié)果

一共付給收銀員44

總結(jié)

以上是生活随笔為你收集整理的Java自动类型转换和强制类型转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。