一、註意點 1.大容量不能直接賦值給小容量;大容量轉化為小容量需要進行,強制類型轉換,強制類型轉換需要加上“強制類型轉換符”,加上強制類型轉換符之後編譯通過了但是精度會有有可能損失。所以強制類型轉換要謹慎使用。因為損失精度之後可能損失很嚴重。 例子: 底層原理:long是八個位元組,現在要轉為四個位元組 ...
一、註意點
1.大容量不能直接賦值給小容量;大容量轉化為小容量需要進行,強制類型轉換,強制類型轉換需要加上“強制類型轉換符”,加上強制類型轉換符之後編譯通過了但是精度會有有可能損失。所以強制類型轉換要謹慎使用。因為損失精度之後可能損失很嚴重。
例子:
底層原理:long是八個位元組,現在要轉為四個位元組的int類型,那麼把前面四個位元組給刪了
long i5 = 100L; //int i6 = i5; int i6 = (int)i5; System.out.println(i6);
2.特殊例子1
原始數據:00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000
我們強制轉換為int四個位元組:(也就是刪掉了前面四個位元組)
10000000 00000000 00000000 00000000
long i7 = 2147483648L; int i8 = (int)i7; System.out.println(i8);
由電腦底層原理,內部存儲數據都是以補碼的形式存儲,因此數字會變。
3.特殊例子2
byte i11 = 50; byte i9 = 127; byte i10 = 128;
(1)按理來說字面值數字,那麼Java會預設賦予這個字面值4個位元組,但是我們看到第一行,我們賦予50以byte類型卻可以編譯通過,這是因為在java語言中,當一個整數型字面值沒有超出byte類型的取值範圍的話,該字面值可以直接賦值給byte類型的變數,你看第三行,他超出了範圍。因此就是報錯。
4.原碼,補碼的計算方式:自行百度
二、源碼:
d13_int_type_specific_example.java
地址:https://github.com/ruigege66/Java/blob/master/d13_int_type_specific_example.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,後臺回覆”禮包“,獲取大數據學習資料