更新時間:2020-10-10 17:16:25 來源:動力節(jié)點 瀏覽1583次
相信有接觸過編程開發(fā)的朋友們,一定會遇到不同的數(shù)據(jù)類型,也會遇到將一種數(shù)據(jù)類型轉換為另一種類型的情況,在java的不同數(shù)據(jù)類型之間是有一定的規(guī)則的,這篇文章就來介紹數(shù)據(jù)類型轉換規(guī)則是怎樣的,正在學習java零基礎教程的新手新手朋友們可以來學習下面的內容。

在學習java的數(shù)據(jù)類型轉換規(guī)則前,先來回顧一下java數(shù)值都有哪些類型:(1)int長度數(shù)據(jù)類型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits);(2)float長度數(shù)據(jù)類型有:單精度(32bits float)、雙精度(64bits double);(3)boolean類型變量的取值有:ture、false;(4)char數(shù)據(jù)類型有:unicode字符,16位。
Java的數(shù)據(jù)類型規(guī)則可以分為隱式轉換和顯式轉換:
一、隱式轉換:
隱式轉換也叫自動類型轉換,如果以下2個條件都滿足,那么將一種類型的數(shù)據(jù)賦給另外一種類型變量的時,將執(zhí)行自動類型轉換(automatic type conversion)。
2個需要滿足的條件是:(1)兩種數(shù)據(jù)類型彼此兼容;(2)目標類型的取值范圍大于源數(shù)據(jù)類型(低級類型數(shù)據(jù)轉換成高級類型數(shù)據(jù))。
當以上2個條件都滿足時,拓寬轉換(widening conversion)發(fā)生。例如 byte 類型向 short 類型轉換時,由于 short 類型的取值范圍較大,會自動將 byte 轉換為 short 類型。
在運算過程中,由于不同的數(shù)據(jù)類型會轉換成同一種數(shù)據(jù)類型,所以整型、浮點型以及字符型都可以參與混合運算。自動轉換的規(guī)則是從低級類型數(shù)據(jù)轉換成高級類型數(shù)據(jù)。轉換規(guī)則如下:
(1)數(shù)值型數(shù)據(jù)的轉換:byte→short→int→long→float→double。
(2)字符型轉換為整型:char→int。
以上數(shù)據(jù)類型的轉換遵循從左到右的轉換順序,最終轉換成表達式中表示范圍最大的變量的數(shù)據(jù)類型。
二、顯式轉換
Java數(shù)據(jù)類型轉換規(guī)則的顯式轉換也叫做強制類型轉換,盡管自動類型轉換是很有幫助的,但并不能滿足所有的編程需要。例如,如果需要將double型的值賦給一個int型的變量,將怎么辦?這種轉換不會自動進行,因為 double 型的變化范圍比 int 型的要小。這種轉換有使成為“縮小轉換”,因為你肯定要將源數(shù)據(jù)類型的值變小才能適合目標數(shù)據(jù)類型。
所以當兩種數(shù)據(jù)類型不兼容,或目標類型的取值范圍小于源類型時,自動轉換將無法進行,這時就需要進行強制類型轉換。其語法格式如下:
(type)variableName
其中,type為variableName要轉換成的數(shù)據(jù)類型,而variableName是指要進行類型轉換的變量名稱,強制轉換的實例如下:

上述代碼中首先將double類型變量b的值強制轉換成int類型,然后將值賦給a,但是變量b本身的值是沒有發(fā)生變化的。
在強制類型轉換中,如果是將浮點類型的值轉換為整數(shù),直接去掉小數(shù)點后邊的所有數(shù)字;而如果是整數(shù)類型強制轉換為浮點類型時,將在小數(shù)點后面補零。
大家在學習完java的各種數(shù)據(jù)類型后,就要知道并學習數(shù)據(jù)類型轉換規(guī)則了,都是屬于java基礎范疇內的知識,是零基礎的新手在java零基礎教程中會學習到的內容,所以上面介紹的顯式和隱式的數(shù)據(jù)類型轉換規(guī)則還是要好好學習并掌握的。