日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

强制类型转换

發布時間:2023/12/2 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 强制类型转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對兩個容量不一樣的數據類型的變量進行算術運算時,java會自動將小容量的變量進行精度提升,然后再進行運算,得到的結果類型是提升后的大容量的數據類型.如果將該結果賦值給小容量的數據類型的變量,則必須進行強制的類型轉換,否則編譯程序會報損失精度錯.如樓主示例,用i來表示1:
short?s1?=?1;
int?i?=?1;
首先,因為short類型是16位的,而int類型是32位的,在進行
(s1+i)?運算時,自動將s1提升到32位,然后與i相加,得到的結果是32位的,而此時
s1=s1+i;?必然報錯,因為如果賦值成功,只是把低16位賦給了s1,這個雖然正是樓主想要的結果,但是編譯程序卻不能判定你的意圖是什么.
執行強轉:
s1=(short)(s1+i);?就沒問題了.
s1+=i;能編譯通過并得到正確結果,而?s1=s1+i;?卻報錯,是因為它們并不像樓主認為的那樣是等價的,s1+=i的方式java會對i進行窄化轉換,由編譯程序自動執行.
java規范中說:
E1?op=E2?實際上等價于?:?E1=(T)(?(E1)op(E2)?)
其中T是E1的數據類型.這種類型轉換或者是一個恒等轉換,或者是一個窄化轉換.
這個說明java是一種強類型的語言,對數據類型的要求是非常嚴格的,否則會引起混亂.
下面解釋一下三種類型轉換:恒等轉換(相同容量的兩個數據類型之間的賦值);拓寬轉換(小容量類型賦值給大容量類型);窄化轉換(大容量賦值給小容量類型).?實際上,前兩種轉換都是編譯程序自動執行的,而窄化轉換則要求必須顯式的執行.

總結

以上是生活随笔為你收集整理的强制类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。