Java資料型別轉換規則

2021-09-14 03:43:08 字數 1664 閱讀 5196

1、型別轉換主要在在 賦值、方法呼叫、算術運算 三種情況下發生。

a、賦值和方法呼叫 轉換規則:從低位型別到高位型別自動轉換;從高位型別到低位型別需要強制型別轉換:

(1)布林型和其它基本資料型別之間不能相互轉換; 

(2)byte型可以轉換為short、int、、long、float和double; 

(3)short可轉換為int、long、float和double; 

(4)char可轉換為int、long、float和double; 

(5)int可轉換為long、float和double; 

(6)long可轉換為float和double; 

(7)float可轉換為double; 

b、算術運算 中的型別轉換:1 基本就是先轉換為高位資料型別,再參加運算,結果也是最高位的資料型別;2 byte short char運算會轉換為int;

(1)如運算元之一為double,則另乙個運算元先被轉化為double,再參與算術運算。 

(2)如兩運算元均不為double,當運算元之一為float,則另一運算元先被轉換為float,再參與運算。 

(3)如兩運算元均不為double或float,當運算元之一為long,、則另一運算元先被轉換為long,再參與算術運算。 

(4)如兩運算元均不為double、float或long,則兩運算元先被轉換為int,再參與運算。

特殊: 

(1)如採用+=、*=等縮略形式的運算子,系統會自動強制將運算結果轉換為目標變數的型別。

int num = integer.max_value ;

int num2 = integer.max_value ;

num += 2l ; //正確 += 將得到的強值轉換為了目標變數型別

num2 = num2 + 2l ; //會報錯 這樣相當於將地型別的賦值給了高型別 不會實現自動轉換

(2)  當運算子為自動遞增運算子(++)或自動遞減運算子(--)時,如果運算元為byte,short或char型別不發生改變;

1、基本型別 與 對應包裝類 可自動轉換,這是自動裝箱和折箱的原理;    

integer c1 = new integer(1);

integer c2 = 2;

int cc = new integer(3);

//另:string 與 基本型別的互轉

int i = integer.parseint("13");

int ii = integer.valueof("12");

string s1 = string.valueof(123);

string s2 = integer.tostring(i);

string s3 = "" + i;

2、兩個引用型別間轉換:

1、子類能直接轉換為父類 或 介面型別;

2、父類轉換為子類要 強制型別轉換;且在執行時若實際不是對應的物件,會丟擲classcastexception執行時異常;

js資料型別轉換規則

數值型別 轉字串,直接轉成對應值的字串 轉布林,0 和 nan轉成false,其他值轉成true 在需要時會自動的轉成對應值的包裝物件 字串 空字串 轉數字為 0,轉布林為 false 非空純數字字串 123 轉數字為對應值的數值,轉布林 true 非空非數字字串 abc 轉數字為nan,轉布林是t...

java 中型別轉換規則

首先boolean不能跟其他型別轉換。1.賦值時 整數預設的是int 浮點預設是double,即整型等號右側全部自動轉化為int,浮點型等號右側自動轉換為double。當大容量的資料型別賦值給小容量的資料型別時 需要強制型別轉換但是有乙個特例 例 byte b1 3 是沒有錯誤的,因為等號右邊如果是...

Mysql 資料型別隱式轉換規則

今天遇到乙個慢查詢,查詢日誌找到慢查詢語句是這樣的 select from convert test where areacode 0001 and period 20170511 and period 20170511 convert test表結構如下 create table convert ...