java數據類型易錯點簡單總結,歡迎大神前輩補充!謝謝

數據類型那這邊看似簡單,花了我很長時間也就是才練到幾成」功力「吧。還但願路過的大神在下面補充,菜鳥的我深受感謝!spa

首先看兩個思考題字符串

思考題1:請問下面這個有沒有問題數學

double d = 12.345;  //有問題!!!由於double是8位,float是4位。定義一個double類型數據給float會提示損失精度!
float f = d;

思考題2:看看下面兩個定義有沒有區別呢?
float f1 = (float)12.345;
float f2 = 12.345f;    //f1實際上是經過一個double類型轉換過來的。而f2自己就是一個float類型。

byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是編譯失敗的呢?爲何呢?
b = b1 + b2;是有問題的。
由於(變量相加,會首先看類型問題),最終把結果賦值的也會考慮類型問題
,b1+b2先轉爲int類型,而賦值時給的是一個byte類型,會報錯顯示:損失精度問題。it

然而常量相加,首先作加法,((而後看結果是否在賦值的數據類型範圍內,若是不是,才報錯))。.這裏不超過byte(-128-127)的範圍,因此沒問題,不報錯。編譯

求輸出結果:byte b = (byte) 130;class

System.out.println(b);變量

分析;首先130超出了byte範圍。數據類型

A:獲取130這個數據的二進制。又知道計算機中數據的運算都是補碼進行的。而要獲得補碼,首先要計算出數據的二進制。
00000000 00000000 00000000 10000010這是130的原碼,也是反碼,仍是補碼。
B:作截取操做,截成byte類型的了。
10000010 這個結果是補碼。
C:已知補碼求原碼。(咱們看到的是數據的原碼形式)
符號位 數值位
補碼: 1 0000010

反碼: 1 0000001

原碼: 1 1111110       輸出結果-126二進制

補充:」+「字符串拼接做用和加法運算容易混淆——float

class DataTypeDemo8 {
public static void main(String[] args) {
//直接輸出一個字符
System.out.println('a'); //a
//輸出一個字符和一個整數作加法,先將字符型數據轉換成int型數據,再作(加法運算)
System.out.println('a'+1); //98
}
}


class DataTypeDemo9 {
public static void main(String[] args) {
System.out.println("hello"+'a'+1); //helloa1
System.out.println('a'+1+"hello"); //字符類型先轉換成整數類型98,98hello

System.out.println("5+5="+5+5); //5+5=55(注意這裏)
System.out.println(5+5+"=5+5"); //10=5+5//注意在一個字符串的前面仍是一個字符串的後面
System.out.println("hel"+"l"+"o");//作字符串連接做用
}
}應該能夠這麼記住:單引號引發來的是字符類型+int類型會發生轉型;此時+號做用是數學運算。若是雙引號引發來內容是字符串,+號做用是字符串拼接。


今天就到這裏,謝謝前輩來評價,補充。謝謝!

相關文章
相關標籤/搜索