摘要:且可以使用進行中文保存,是因為使用這種進制的編碼。那么怎么解決呢看出來區別了嗎由于的自動類型轉換,會轉換為類型,所以數據溢出的問題就解決了。除非到不得已情況,不然不要輕易使用強制類型轉換。
Java語言中對于數據類型分為2種
基本數據類型(一些具體的數字單元,例如 1 、 1.1、)
整形:byte、 short、int、 long -->默認值:0
浮點型 float、double -->默認值:0.0
引用數據類型(牽扯到數據內存的使用)
數組、類型、接口 -->默認值:null
浮點型數據對于java中的小數類型的常量,其對應的類型都是double類型,就類似整數類型的常量對應的是int類型。
字符型在任何編程語言中,字符都可以和int相互轉換,字符轉化成int將得到對應的系統編碼。
例子:
int num5 = "A"; System.out.println(num5);//65
字符編碼參考:
大寫字母"A"(65)~"Z"(90)
小寫字母"a"(97)~"z"(122)
數字范圍 "0"(48)~"9"(57)
可以發現大小寫字母之間的編碼差32,由此可以實現英文字母大小寫的轉換。
且java可以使用char進行中文保存,是因為java使用unicode這種16進制的編碼。
如果要描述數字,首選int、double
如果要進行數據傳輸或者文字編碼使用byte類型(二進制處理操作)
處理中文最方便操作使用的是char
描述內存或者文件大小、或者描述表的主鍵使用long
注意 數據溢出問題數據類型可以進行轉換的,范圍小的數據類型可以自動轉換為大的數據類型,但是數據大的要轉為小的則需要進行強制轉換,同時還需要注意因此帶來的數據溢出問題。示例如下。
猜猜結果是什么?
int num = Integer.MAX_VALUE; System.out.println(num + 1);
結果是-2147483648,為什么呢?
因為num是int類型,int類型得最大值是2147483647,那么當+1之后,由于int+int的值還是int類型,而結果顯然大于了這個數字,因此造成了數據溢出,導致結果計算錯誤。
那么怎么解決呢?
int num1 = Integer.MAX_VALUE; System.out.println(num + 1L);
看出來區別了嗎?由于java的自動類型轉換,num+1L會轉換為long類型,所以數據溢出的問題就解決了。
強制轉換可能導致數據溢出隱式轉換也叫作自動類型轉換, 由系統自動完成.從存儲范圍小的類型到存儲范圍大的類型
byte ->short(char)->int->long->float->double
顯示類型轉換也叫作強制類型轉換, 是從存儲范圍大的類型到存儲范圍小的類型.
顯示類型轉換需要進行聲明,但是當心會出現精度丟失的問題如:
long longNum = Integer.MAX_VALUE + 1; int num2 = (int)longNum; System.out.println(num2);//-2147483648
結果顯然是因為精度丟失導致的結果不對,此處需要注意。除非到不得已情況,不然不要輕易使用強制類型轉換。
byte類型需要注意的地方那么再思考一下如下代碼結果是什么呢?
//此處20是int類型,但java對byte類型賦值有特殊處理 //如果該值沒有超過byte最大值,則會自動轉換為byte類型進行賦值。 //如果超過byte最大值,才會要求強制轉換 byte num4 = 20; System.out.println(num4 * num4 );
答案是:400
那為什么此處400超過byte最大值127而未發生數據溢出?
再看下如下代碼
byte num4 = 20; byte result = num4 * num4; System.out.println(result);
結果是什么?
會編譯錯誤!為什么?因為此時num4 * num4 的結果超過了byte類型最大值,所以是int類型,那么此處就需要強制轉換才能夠防止編譯錯誤。
當然實際中不會這么寫,此處只是為了說明byte的變量賦值機制。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76231.html
摘要:前言大家好,這里是從零開始學之數據類型,本文首發于公眾號,歡迎前往大家關注。輸出布爾類型中的布爾類型用表示,它的值有和。若需要可空引用時,布爾類型的值會被裝箱。此時程序會拋出異常最后從零開始學之數據類型到這里就結束了。 前言 大家好,這里是「從零開始學 Kotlin 之『2 』數據類型」,本文首發于公眾號「Binguner」,歡迎前往大家關注。我會每周分享一些關于 Android 和...
摘要:下面開始今天的知識,先看下基礎語法的總綱今天我們接著學習變量使用變量的注意事項數據類型和類型轉換。推薦閱讀從零開始學之基礎語法上從零開始學之基礎概述本文原創發布于微信公眾號,編程思維成長正能量,關注并回復編程閱讀等關鍵字獲取免費學習資料 showImg(https://segmentfault.com/img/remote/1460000016134163); Java?基礎斷更一周了...
摘要:剛開始學習的時候,可能是一頭霧水,不知道從何學起。這個教程總體來說就像列文虎克教學,細到極致,妙到毫巔。適合絕對零基礎的,每個知識點掰開了揉碎了講解。 剛開始學習java的時候,可能是一頭霧水,不知道從何學起。還有很多Java小白,在剛自學Java的時候玩命的學習,玩命的記住Java原理,天天早上五點起床背Java的一些英...
摘要:是一種強類型語言,因此,定義了基本數據類型。運算符先從運算符談起。基本數據類的基本數據類型同其它高級程序語言比較類似。常用類類型除了一些基本數據類型,提供的一些類類型,使用頻率也很高。 Java 是一種強類型語言,因此,Java 定義了基本數據類型。同時, Java 和其它高級計算機語言一樣,有多種運算符,這在我們編程過程中極為有用。 運算符 先從運算符談起。 顧名思義,運算符解決的是...
閱讀 3778·2021-11-23 09:51
閱讀 4412·2021-11-15 11:37
閱讀 3526·2021-09-02 15:21
閱讀 2750·2021-09-01 10:31
閱讀 882·2021-08-31 14:19
閱讀 859·2021-08-11 11:20
閱讀 3313·2021-07-30 15:30
閱讀 1695·2019-08-30 15:54