Java基礎05——類型轉換(本文為個人學習筆記,內容整理自嗶哩嗶哩UP主【遇見狂神說】的公開課程。 > 所有知識點歸屬原作者,僅作非商業用途分享)

Java基礎05——類型轉換

類型轉換

  • 由于Java是強類型語言,所以要進行有些運算的時候,需要用到類型轉換。

如:在這里插入圖片描述

  • byte(占1個字節),short(占2個字節),char(占2個字節)→int(4個字節)→long(占8個字節)→float(占4個字節)→double(占8個字節)

  • float之前均為整數類型,之后為浮點數(小數)類型

  • 由此可見浮點數(小數)的優先級一定大于整數。

  • 運算中,不同類型的數據先轉化為同一類型,然后進行運算

  • 強制類型轉換:

    • 由高到低

    • 利用(),所轉換類型,叫強制類型轉換 格式:(類型)變量名

      public class 強制類型轉換{public static void main(String[] args){int i = 128;byte b =(byte)i; //(類型)變量名// 并且byte的最大取值范圍是127,最小是-128,以上取值128,超出范圍,輸出的結果不可控(不知道變成什么),專用名詞:內存溢出。// 所以,取值要避免內存溢出  }}
      
    • 轉換時,要避免內存溢出

  • 在IDEA上實操:

在這里插入圖片描述

整數類型和浮點數類型(具體范圍):在Java基礎03中,[Java的數據類型分為兩大類]標題

  • 自動類型轉換
    • 由低到高(并不需要任何其他操作)
public class 自動類型轉換{public static void main(String[] args){int i = 128;double = i;  //因為式由高到低,會自動轉換} 
}
  • 在IDEA上實操

在這里插入圖片描述

注意點:

/*
注意點:
1.不能對布爾值(Boolean)進行轉換
2.不能把對象類型轉換不相干的類型
3.把高容量轉換為低容量,強制轉換
4.轉換的時候可能存在內存溢出,或者精度問題!
*/

public class 驗證注意點{public static void main(String[] args){System.out.println((int)22.5);  //輸出結果為22,精度丟失0.5//System.out.println((boolean)22.5);  //會出現(不兼容類型:double無法轉換為BooleanSystem.out.println((int)23.5f); // 輸出結果為23,精度丟失0.5}
}
  • 在IDEA上實操

在這里插入圖片描述

在這里插入圖片描述

public class 鞏固{public static main(String[] aegs){char c = 'A';int d = c+1;System.out.println(d); // 低到高,無需任何其他操作System.out.println((char)d); //當前d是int類型,轉為char類型,由高轉低,需要強制轉換。}
}
  • 在IDEA上實操

在這里插入圖片描述

類型轉換拓展——當操作比較大的時候,注意溢出問題

public class 類型轉換拓展{public static void main(String[] args){// 拓展:當操作比較大的時候,注意溢出問題// 數字之間可以用下劃線分割,下劃線并不會被輸出int money = 10_0000_0000;  // money(錢)int years = 20;   // years(年份)int total = money * years;   // total(總數)System.out.println(total); //輸出本該是200億,但是卻是負數,這種狀態就是計算的時候溢出了long total2 = money * years; //因為這兩個變量默認格式是int,轉換之前已經存在問題了?System.out.println(total2);long total3 = money *((long)years); //已知在轉換前就出問題了,那么在之前就強制轉換一個變量為long,后續就會以long類型輸出(避免內存溢出)System.out.println(total3);}
}

解決辦法總結:

  • 步驟1.先將最后輸出結果放到能承受的類型當中(由底到高)
    • 就好比例子中:int和long,因為int范圍是-2147483648~2147483647(21億左右)而輸出的結果卻是200億,遠高于int范圍,那么就要轉化為比它更高的long
  • 步驟2.若兩個(或多個)變量均低于結果輸出類型(那么最后的結果是先計算低類型的值,在轉換為高類型的值,若低類型的值先溢出,再轉換為高類型的值已經晚了)
    • 就好比例子中:兩個變量都是int,它們相乘的時候,最終結果也是int,結果本身已經超出int的范圍(已經出問題了),在轉換為long晚了。
  • 步驟3.那么將它們其中一個強制轉換為高類型(那么最后的結果是直接以高類型的值輸出,結果就非常準確)
    • 就好比例子中:先將變量[years]轉化為long,再進行計算,就不會出現int溢出的情況,最后的結果是直接以long類型輸出的,long類型的范圍-9223372036854775808~9223372036854775807(遠超200億)不會出現溢出的情況,所以最后的結果是準確的。

在IDEA上實操

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92760.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92760.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92760.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql基礎(二)五分鐘掌握全量與增量備份

全量備份 Linux環境 數據備份 數據庫的備份與恢復有多中方法,通過mysql自帶的mysqldump工具可對數據庫進行備份。語法: mysqldump -u username -p password --databases db_name > file_name .sql說明: -u參數指定用戶名,usern…

使用Windbg分析多線程死鎖項目實戰問題分享

目錄 1、問題描述 2、使用.effmach x86命令切換到32位上下文 3、切換到UI線程,發現UI線程死鎖了 4、使用!locks命令查看臨界區鎖的詳細信息,遇到了問題 5、使用dt命令查看臨界區對象信息,找到發生死鎖的多個線程 6、用戶態鎖與內核態鎖…

防火墻組網方式總結

一、部署模式:靈活適配多樣網絡環境下一代防火墻(NGAF)具備極強的網絡適應能力,支持五種核心部署模式,可根據不同網絡需求靈活選擇。路由模式:防火墻相當于路由器,位于內外網之間負責路由尋址&a…

AI大模型:(二)5.1 文生視頻(Text-to-Video)模型發展史

目錄 1.介紹 2.發展歷史 2.1.早期探索階段(2015-2019) 2.1.1.技術萌芽期 2.1.2.RNN/LSTM時代 2.2.技術突破期(2020-2021) 2.2.1 Transformer引入視頻生成 2.2.2 擴散模型的興起 2.3.商業化突破期(2022-2023) 2.3.1 產品化里程碑 2.3.2 競爭格局形成 2.4.革命…

14mm尋北儀能否塞進液壓支架生死縫隙?

在煤礦井下世界的方寸之間,液壓支架的每個關鍵節點都承載著千鈞重壓。頂梁鉸接點、立柱頂端、掩護梁角落,恰恰是空間最為局促的“禁區”。ER-MNS-10A MEMS尋北儀應運而生!它采用了先進的MEMS陀螺技術,以14mm至薄高度、40g極致輕盈…

python之淺拷貝深拷貝

文章目錄潛拷貝(shallow copy)深拷貝(deep copy)總結一下python的淺拷貝和深拷貝.潛拷貝(shallow copy) python中潛拷貝指的是:構造一個新的復合對象,然后將原對象中的對象引用插入其中 平常開發過程中潛拷貝是比深拷貝更常見的場景. 比如編程中使用到的一些基本的…

普通大學本科生如何入門強化學習?

問題:你平時是如何緊跟大型語言模型和智能體技術前沿的?有哪些具體的學習和跟蹤方式?回答:我會通過“輸入-內化-實踐”結合的方式跟蹤前沿。首先,學術動態方面,每天花10分鐘瀏覽arXiv的http://cs.CL和http://cs.AI板塊&#xff0c…

新手向:Python實現數據可視化圖表生成

Python數據可視化入門:從零開始生成圖表數據可視化是數據分析過程中不可或缺的關鍵環節,它通過將抽象的數字信息轉化為直觀的圖形展示,幫助分析師和決策者更快速、更準確地發現數據中隱藏的模式、規律和發展趨勢。在當今大數據時代&#xff0…

VBA即用型代碼手冊:計算選擇的單詞數Count Words in Selection

我給VBA下的定義:VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率,而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。作為我的學員要利用我的積木編程思想,積木編程最重要的是積木如何搭建及…

DNS(域名系統)

分層結構根域名(ipv4,13臺),二級域名,三級域名……相關記錄A將域名解析為ipv4地址AAAA將域名解析為ipv6地址MX指名該區域為郵件服務區PTR反向查詢將主機名解析為域名NS記錄服務器的名字CNAME別名查詢方式遞歸查詢迭代查…

【大模型】強化學習算法總結

角色和術語定義 State:狀態Action:動作Policy/actor model:策略模型,用于決策行動的主要模型Critic/value model:價值模型,用于評判某個行動的價值大小Reward model:獎勵模型,用于給…

基于梅特卡夫定律的開源鏈動2+1模式AI智能名片S2B2C商城小程序價值重構研究

摘要:梅特卡夫定律揭示了網絡價值與用戶數量的平方關系,在互聯網經濟中,連接的深度與形式正因人的參與發生質變。本文以開源鏈動21模式、AI智能名片與S2B2C商城小程序的協同應用為研究對象,通過實證分析其在社群團購、下沉市場等場…

Ubuntu22.04安裝CH340驅動及串口

一、CH340驅動安裝 1.1 查看USB設備能否被識別 CtrlAltT打開終端: lsusb 插入設備前: 插入設備后: 輸出中包含ID 1a86:7523 QinHeng Electronics CH340 serial converter的信息,這表明CH340設備已經被系統識別。 1.2 查看USB轉串…

CPU緩存(CPU Cache)和TLB(Translation Lookaside Buffer)緩存現代計算機體系結構中用于提高性能的關鍵技術

CPU緩存(CPU Cache)和TLB(Translation Lookaside Buffer)緩存是現代計算機體系結構中用于提高性能的關鍵技術。它們通過減少CPU訪問數據和指令的延遲來提高系統的整體效率。以下是對這兩者的詳細解釋: 1. CPU 緩存 CPU…

唐揚·高并發系統設計40問

課程下載:https://download.csdn.net/download/m0_66047725/91644703 00開篇詞 _ 為什么你要學習高并發系統設計?.pdf 00開篇詞丨為什么你要學習高并發系統設計?.mp3 01 _ 高并發系統:它的通用設計方法是什么?.pdf …

基于Spring Data Elasticsearch的分布式全文檢索與集群性能優化實踐指南

基于Spring Data Elasticsearch的分布式全文檢索與集群性能優化實踐指南 技術背景與應用場景 隨著大數據時代的到來,海量信息的存儲與檢索成為各類應用的核心需求。Elasticsearch 作為一款分布式搜索引擎,憑借其高可擴展、高可用和實時檢索的優勢&#x…

Linux系統編程——基礎IO

一些前置知識:文件 屬性 內容文件 分為 打開的文件、未打開的文件打開的文件:由進程打開,本質是 進程與文件 的關系;維護的文件對象先加載文件屬性,文件內容一般按需加載未打開的文件:在永久性存儲介質 —…

力扣164:最大間距

力扣164:最大間距題目思路代碼題目 給定一個無序的數組 nums,返回 數組在排序之后,相鄰元素之間最大的差值 。如果數組元素個數小于 2,則返回 0 。 您必須編寫一個在「線性時間」內運行并使用「線性額外空間」的算法。 思路 這道題的思路…

Redis類型之Hash

1.hash常用操作 這里還是要強調,redis的類型指的是value的類型。故而這里的hash是把key這一層組織完成以后,到了value這一層,value的其中一種類型還可以是hash。1.1 HSET 和 HGETHSET:設置hash類型的keyHSET key field value [fie…

Apache Pulsar性能與可用性優化實踐指南

Apache Pulsar性能與可用性優化實踐指南 一、技術背景與應用場景 隨著微服務、實時計算和大數據平臺的普及,消息系統承擔了海量數據的傳輸與解耦任務。Apache Pulsar作為新一代分布式消息與流處理系統,擁有多租戶、持久化存儲和靈活一致性的特點&#xf…