摘要:說基本數(shù)據(jù)類型轉(zhuǎn)換之前,先了解下中的種基本數(shù)據(jù)類型,以及它們的占內(nèi)存的容量大小和表示的范圍,如下圖所示。自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換是指數(shù)字表示范圍小的數(shù)據(jù)類型可以自動轉(zhuǎn)換成范圍大的數(shù)據(jù)類型。
說基本數(shù)據(jù)類型轉(zhuǎn)換之前,先了解下 Java 中的 8 種基本數(shù)據(jù)類型,以及它們的占內(nèi)存的容量大小和表示的范圍,如下圖所示。
重新溫故了下原始數(shù)據(jù)類型,現(xiàn)在來解釋下它們之間的轉(zhuǎn)換關(guān)系。
自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換是指:數(shù)字表示范圍小的數(shù)據(jù)類型可以自動轉(zhuǎn)換成范圍大的數(shù)據(jù)類型。
如:
long l = 100; int i = 200; long ll = i;
具體自動轉(zhuǎn)換如如下圖所示。
實(shí)線表示自動轉(zhuǎn)換時不會造成數(shù)據(jù)丟失,虛線則可能會出現(xiàn)數(shù)據(jù)丟失問題。
自動轉(zhuǎn)換也要小心數(shù)據(jù)溢出問題,看下面的例子。
int count = 100000000; int price = 1999; long totalPrice = count * price;
編譯沒任何問題,但結(jié)果卻輸出的是負(fù)數(shù),這是因?yàn)閮蓚€ int 相乘得到的結(jié)果是 int, 相乘的結(jié)果超出了 int 的代表范圍。這種情況,一般把第一個數(shù)據(jù)轉(zhuǎn)換成范圍大的數(shù)據(jù)類型再和其他的數(shù)據(jù)進(jìn)行運(yùn)算。
int count = 100000000; int price = 1999; long totalPrice = (long) count * price;
另外,向下轉(zhuǎn)換時可以直接將 int 常量字面量賦值給 byte、short、char 等數(shù)據(jù)類型,而不需要強(qiáng)制轉(zhuǎn)換,只要該常量值不超過該類型的表示范圍都能自動轉(zhuǎn)換。
強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換我們再清楚不過了,即強(qiáng)制顯示的把一個數(shù)據(jù)類型轉(zhuǎn)換為另外一種數(shù)據(jù)類型。
如:
short s = 199; int i = s;// 199 double d = 10.24; long ll = (long) d;// 10
以上的轉(zhuǎn)換結(jié)果都在我們的預(yù)期之內(nèi),屬于正常的轉(zhuǎn)換和丟失精度的情況,下面的例子就一樣屬于數(shù)據(jù)溢出的情況。
int ii = 300; byte b = (byte)ii;
300 已經(jīng)超出了 byte 類型表示的范圍,所以會轉(zhuǎn)換成一個毫無意義的數(shù)字。
類型提升所謂類型提升就是指在多種不同數(shù)據(jù)類型的表達(dá)式中,類型會自動向范圍表示大的值的數(shù)據(jù)類型提升。
把上面的溢出的例子再改下。
long count = 100000000; int price = 1999; long totalPrice = price * count;
price 為 int 型,count 為 long 型,運(yùn)算結(jié)果為 long 型,運(yùn)算結(jié)果正常,沒有出現(xiàn)溢出的情況。
推薦:Spring Boot & Cloud 最強(qiáng)技術(shù)教程
掃描關(guān)注我們的微信公眾號,干貨每天更新。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71266.html
摘要:基本類型包括類型和數(shù)值類型?;绢愋偷念愋娃D(zhuǎn)換當(dāng)把一個表數(shù)范圍小的數(shù)值或變量直接賦給另一個表數(shù)范圍大的變量時,系統(tǒng)可以進(jìn)行自動類型轉(zhuǎn)換。整個算術(shù)表達(dá)式的數(shù)據(jù)類型自動提升到與表達(dá)式中最高等級操作數(shù)同樣的類型 數(shù)據(jù)類型分類 Java語言是強(qiáng)類型語言,意思是每個變量和每個表達(dá)式都有一個在編譯時就確定的類型,所以所有變量必須顯示聲明類型,也就是說,所有的變量必須先聲明,后使用。Java語言支持...
摘要:基本數(shù)據(jù)類型布爾類型或,占用位。強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換的語法格式是,強(qiáng)制類型轉(zhuǎn)換的運(yùn)算符是圓括號。無符號右移運(yùn)算符。對于低于類型如和的操作數(shù)總是先自動類型轉(zhuǎn)換為類型后再移位。 注釋 單行注釋//......多行注釋/ .../文檔注釋/*.../ 文檔注釋位于注釋內(nèi)容上一行 標(biāo)識符和關(guān)鍵字 分隔符 分號:作為語句的分隔,每個Java語句必須使用分號作為結(jié)尾?;ɡㄌ枺憾x一個代碼...
摘要:所以就想把一大串縮短點(diǎn),將二進(jìn)制中的三位用一位表示。以可以大寫也可以小寫開頭版本可以表示二進(jìn)制了八進(jìn)制的數(shù)據(jù)表現(xiàn)形式由組成。結(jié)果把系數(shù)基數(shù)的權(quán)次冪相加即可。因?yàn)檎Z言采用的是碼來編碼的。 1_(常量的概述和使用)* A:什么是常量(constant) 在程序執(zhí)行的過程中其值不可以發(fā)生改變 B:Java中常量的分類 字面值常量 自定義常量(面向?qū)ο蟛糠种v) C:字面值常量的...
摘要:局部變量聲明在函數(shù)內(nèi)部的變量。在作用域范圍內(nèi)不能出現(xiàn)命名沖突。 java編程規(guī)范: 1.良好的標(biāo)識符的命名 保留字不能作為標(biāo)識符命名: class、public、static..., goto,const 區(qū)分大小寫:helloWorld、HelloWorld 2.良好的注釋習(xí)慣 3.良好的縮進(jìn):沒遇到一個代碼塊縮進(jìn)一次(一個tab鍵) 變量:代...
摘要:強(qiáng)制類型轉(zhuǎn)換下標(biāo)運(yùn)算符變量與常量常量是在程序中的不會變化的數(shù)據(jù)變量其實(shí)就是內(nèi)存中的一個存儲空間,用于存儲數(shù)據(jù)。表示結(jié)束本次循環(huán),繼續(xù)下次循環(huán)。 Java知識點(diǎn)總結(jié) (基本語法) @(Java知識點(diǎn)總結(jié))[Java, Java基本語法] @(Java開發(fā))[Java基本語法] [toc] Java特點(diǎn) 簡單自然平臺可移植性支持函數(shù)式編程JIT 編譯更好的并發(fā)編程健壯安全 執(zhí)行方式 編譯...
閱讀 2814·2019-08-30 15:55
閱讀 2861·2019-08-30 15:53
閱讀 2299·2019-08-26 13:47
閱讀 2562·2019-08-26 13:43
閱讀 3161·2019-08-26 13:33
閱讀 2809·2019-08-26 11:53
閱讀 1801·2019-08-23 18:35
閱讀 804·2019-08-23 17:16