網站首頁 編程語言 正文
今天學習了一下數據類型的轉換,我整理出了一下筆記;
1、parse轉換:將string類型轉化為其他類型
//數據類型的轉換 //即string"18"==> int 18, //1、parse轉換:將string類型轉化為其他類型 //待轉數據必須要像該數據類型 string strNumber = "18"; int num01 = int.Parse(strNumber); float num02 = float.Parse(strNumber);
2、任意類型轉化為string類型
//2、任意類型轉化為string類型 int number = 18; string str = number.ToString();
昨天在做老師的練習的時候,就用到了這兩種類型的轉換,比如想把char類型轉換成為int類型,可以先把它轉化為string類型,再把string類型轉化為int類型從而實現數據的轉換,最穩健的做法,string類是充當了一個類似與“容器”的作用。
3、隱式轉換:自動轉換-->小范圍到大范圍自動轉換
//3、隱式轉換:自動轉換-->小范圍到大范圍自動轉換 byte b3 = 100; int i3 = b3;
這個沒什么可說,很好理解,可以把b3變量看成一塊“地”,存了100,byte是占一個字節,而int占4個字節,如果一個數據放在一個內存小的地方都放得下,那內存大的地方也能放下。
4、顯示轉換:強制轉換-->由大范圍到小范圍的強制轉換,不過可能會發生精度丟失
//4、顯示轉換:強制轉換-->由大范圍到小范圍的強制轉換,可能會發生精度丟失 int i4 = 100; byte b4 = (byte)i4;
這個強制轉換就厲害了,不過語法也很簡單,給大家看我輸入的幾個例子就明白為什么簡單了
byte numbe1 = 1; short numbe2 = 2; short resu =numbe1 + numbe2;
這里的第三行報錯,
?這里我們要仔細閱讀錯誤,無法將int類型隱式轉換成short,就說明我們這個resu變量應該為int類型,或者用強制轉換。(如果把第三行的short換成byte,一樣的解決方式)
byte numbe1 = 1; short numbe2 = 2; short resu = (short)(numbe1 + numbe2); //或int resu =numbe1 + numbe2;
byte numbe1 = 1; byte numbe2 = 2; byte resu = (byte)(numbe1 + numbe2); //或int resu =numbe1 + numbe2;
在強制轉換中出現這種無法隱式轉換類型的錯誤時,看錯誤提示就行,很簡單。
不過我在嘗試其他類型的時候,卻發現了一個不一樣的錯誤。
?float類型和decimal類型竟然不能相加?
查閱資料后發現原來它們兩在內存里面存儲的結構就不一樣,float浮點型是近似存儲(包括double),而decimal是精確存儲,所以無法相加。(祖師爺告訴我的....)。
不過float與double類型可以相加
float numbe1 = 1; double numbe2 = 2; byte resu = (byte)(numbe1 + numbe2); //或double resu = numbe1 + numbe2;
可以理解為由多種變量參與運算,結果自動向較大的類型提升。
5、最后再給一個簡單的題目考考大家:
代碼中的b+=3和b=b+3,這兩種寫法完全一樣的嗎?
int a = 1; a = a + 3; a += 3; byte b = 1; b += 3; b = b + 3;
答案是不一樣的,會報錯,因為類型提升為int了。
?加一個強制轉換,就解決了。
?為什么b+=3不報錯呢?
+=屬于快捷運算符,不做自動類型提升。不過如果初始b值過大,超出范圍255,會從頭開始,即從0開始,
?
原文鏈接:https://blog.csdn.net/m0_58739847/article/details/122284167
相關推薦
- 2022-11-10 Android開發之AlertDialog實現彈出對話框_Android
- 2023-02-23 GoLang中的互斥鎖Mutex和讀寫鎖RWMutex使用教程_Golang
- 2022-05-06 Docker遠程連接設置的實現示例_docker
- 2021-12-06 Ubuntu編譯內核模塊,內容體現系統日志中_Linux
- 2023-03-16 C語言進階之字符串查找庫函數詳解_C 語言
- 2022-05-31 postman批量執行接口測試的圖文步驟_其它綜合
- 2023-12-08 Can‘t open the append-only file: Permission denied
- 2022-08-27 Oracle縮表空間的完整解決實例_oracle
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支