1. 程式人生 > >Java基礎筆記(五)——數據類型轉換

Java基礎筆記(五)——數據類型轉換

強制轉換 註意 long 語言 pre 丟失 println 出現 其它

數據類型的精度由低到高為:byte < short < char < int < long < float < double

低精度的類型與高精度的類型在進行運算時,低會自動轉換為高,而如果非要把結果轉為低精度的類型,需要進行強制轉換。(猶如小杯裏的水倒入大杯子裏,可以;但是大杯裏的水想要倒入小杯裏可能會溢出,那高精度的同理可能會出現精度丟失。)

(1)byte、short、char型參與運算時,低於int型都會自動轉換為int型(使用“+=”運算符除外),然後對int型的值進行計算,得到的結果也為int型。這些類型的變量與高於int類型(如:long、float、double)的變量一起運算時,會自動轉換為高精度的類型。其中char類型的數據會轉換為對應的ASCII碼。

舉個不常規,但掌握語法的例子:

byte b1=1;
long b2=3;
float b3=b1+b2;//此時b3=4.0 首先b1+b2的結果為long型,賦值給b3時自動轉換為float

byte型示例:

1.

byte b1=1,b2=2;
int b=b1+b2; //如果把兩個byte型的值相加,得到的結果是int

2.

byte b1=1,b2=2;
b1=(byte)(b1+b2); //如果要得到byte型的結果,需強轉為byte[註意轉換的是結果,不要忘記給b1+b2加括號]

3.

short a=128;   // a=128
byte b=(byte)a; // b=-128

short類型占2個字節,a對應的二進制為:00000000 10000000,由於byte占1個字節,在強制轉換為byte時只能存下低字節部分:10000000,10000000是-128的補碼,所以b為-128。

short型示例:

1.

short s1=1,s2=2;
s1=s1+s2; //編譯錯誤,如果把兩個short型的值相加,得到的結果是int

改正:

short s1=1,s2=2;
s1=(short)(s1+s2); //如果要得到short型的結果,需強轉為short

3.

short s1=1;
s1=s1+1; //編譯錯誤,s1會轉換為int型,結果也為int型,而s1定義類型為short

改正:

short s1=1;
s1=(short)(s1+1);

例外情況:

“+=”運算符,不會產生類型的轉換,Java編譯器會對其進行特殊處理。

short s1=1;
s1+=1; //能夠編譯通過

char型示例:

char c1=‘a‘,c2=‘b‘;
int c=c1+c2; //得到的結果是int
c1=(char)(c1+c2); //得到的結果是int型,如果想得c1為字符,需要char強制轉換

(2)boolean類型不與其它類型轉換,其值只有true和false,註意不像C語言可以為0或非0代表真或假。

示例:

int i=1;
if(i)
System.out.println("true");
else
System.out.println("false");

編譯錯誤,if條件只能是boolean類型的值(true或false),而 i 的類型為 int。




Java基礎筆記(五)——數據類型轉換