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