日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据类型总结(干货)

發(fā)布時(shí)間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据类型总结(干货) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java中的數(shù)據(jù)類(lèi)型和C++的數(shù)據(jù)類(lèi)型基本是一致的,本來(lái)以為不需要怎么看,后來(lái)發(fā)現(xiàn)還是有些地方需要好好總結(jié)一下。

基本的就不說(shuō)了,直接上干貨。

我總結(jié)了下,數(shù)據(jù)類(lèi)型的轉(zhuǎn)換和賦值有以下幾點(diǎn)是比較麻煩的:

1、整數(shù)直接量可以直接賦值給byte,short,char,但不能超出范圍。

1 byte a1=127;//編譯正確 2 byte a2=128;//會(huì)報(bào)錯(cuò) Type mismatch: cannot convert from int to byte 3 short a3=32767;//編譯正確 4 short a4=32768;//會(huì)報(bào)錯(cuò) Type mismatch: cannot convert from int to short 5 char a5=65535;//編譯正確 6 char a6=65536;//會(huì)報(bào)錯(cuò) Type mismatch: cannot convert from int to char

從上面可以看出,證書(shū)直接量只要不超過(guò)byte、short、char的范圍,是可以直接對(duì)其進(jìn)行賦值的。值得注意的是,char和short雖然都是16位,但是char是無(wú)符號(hào),范圍為0~65535,而short是有符號(hào),范圍為-32768~32767。

2、同種類(lèi)型的變量互相賦值,即使賦值右側(cè)值是超出其數(shù)據(jù)類(lèi)型范圍的,編譯器同樣不會(huì)報(bào)錯(cuò),而是會(huì)截取低位。

1 byte a1=127; 2 byte a2=(byte)(a1+1); 3 System.out.println(a2);

以上代碼運(yùn)行結(jié)果為-128.原因是127+1=128超出了byte的范圍-128~127,作為一個(gè)閉環(huán),127后面一個(gè)數(shù)應(yīng)該是-128。(實(shí)際上就是再加1,位數(shù)不夠了,重新截取后為128,不過(guò)是補(bǔ)碼)

至于為什么要在a1+1之前用byte,后面會(huì)有總結(jié)。

3、不同種類(lèi)的變量互相賦值,小的數(shù)據(jù)類(lèi)型會(huì)自動(dòng)轉(zhuǎn)換為大的數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型從小到大依次為:byte<short(char)<int<long<float<double,其中short和char由于都是兩個(gè)字節(jié),因此其數(shù)據(jù)類(lèi)型的大小是相同的。還有一點(diǎn)需要提一點(diǎn)的是,第2點(diǎn)同樣適用于第三點(diǎn),賦值右側(cè)的值超出左側(cè)數(shù)據(jù)類(lèi)型的范圍,編譯器不會(huì)報(bào)錯(cuò),而是會(huì)截取低位。

1 byte byteType=100; 2 short shortType=byteType; 3 int intType=shortType; 4 long longType=intType; 5 float floatType=longType; 6 double doubleType=floatType;

上述代碼都是正確的,都是從小類(lèi)型自動(dòng)轉(zhuǎn)換為大類(lèi)型。

但是!!!

1 char charType=byteType;//報(bào)錯(cuò) Type mismatch: cannot convert from byte to char 2 charType=shortType;//報(bào)錯(cuò) Type mismatch: cannot convert from short to char 3 shortType=charType;//報(bào)錯(cuò) Type mismatch: cannot convert from char to short 4 intType=charType;//編譯正確

可以看出,char在自動(dòng)轉(zhuǎn)換過(guò)程是有特殊情況的,byte數(shù)據(jù)類(lèi)型雖然沒(méi)有char數(shù)據(jù)類(lèi)型大,但是它不能自動(dòng)轉(zhuǎn)換,char和short一樣大,也不能進(jìn)行自動(dòng)轉(zhuǎn)化,char繼續(xù)往上就可以自動(dòng)轉(zhuǎn)換了。

4、byte,short,char型數(shù)據(jù)參與運(yùn)算時(shí),先一律轉(zhuǎn)換為int再運(yùn)算

1 byte a1=100; 2 byte a2; 3 a2=100*1;//編譯正確 4 a2=100*6;//報(bào)錯(cuò) Type mismatch: cannot convert from int to byte 5 a2=a1+1;//報(bào)錯(cuò) Type mismatch: cannot convert from int to byte 6 a2=(byte)(a1+1);//編譯正確

從第3行和第4行可以看出,當(dāng)賦值側(cè)右側(cè)為直接量的運(yùn)算,那么右側(cè)仍然算直接量,那么規(guī)則和1一樣,只要不超出賦值左側(cè)范圍即可。

當(dāng)賦值側(cè)右側(cè)有變量參與運(yùn)算,那么無(wú)論是+-*/,都會(huì)先將運(yùn)算符兩側(cè)的數(shù)據(jù)轉(zhuǎn)換為int再進(jìn)行運(yùn)算,得到的結(jié)果也自然是int,當(dāng)把int轉(zhuǎn)換為byte、short或者char時(shí),自然需要強(qiáng)制轉(zhuǎn)換。

轉(zhuǎn)載于:https://www.cnblogs.com/haojiejiejie/p/8583598.html

總結(jié)

以上是生活随笔為你收集整理的数据类型总结(干货)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。