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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据类型总结(干货)

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

Java中的數據類型和C++的數據類型基本是一致的,本來以為不需要怎么看,后來發現還是有些地方需要好好總結一下。

基本的就不說了,直接上干貨。

我總結了下,數據類型的轉換和賦值有以下幾點是比較麻煩的:

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

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

從上面可以看出,證書直接量只要不超過byte、short、char的范圍,是可以直接對其進行賦值的。值得注意的是,char和short雖然都是16位,但是char是無符號,范圍為0~65535,而short是有符號,范圍為-32768~32767。

2、同種類型的變量互相賦值,即使賦值右側值是超出其數據類型范圍的,編譯器同樣不會報錯,而是會截取低位。

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

以上代碼運行結果為-128.原因是127+1=128超出了byte的范圍-128~127,作為一個閉環,127后面一個數應該是-128。(實際上就是再加1,位數不夠了,重新截取后為128,不過是補碼)

至于為什么要在a1+1之前用byte,后面會有總結。

3、不同種類的變量互相賦值,小的數據類型會自動轉換為大的數據類型,數據類型從小到大依次為:byte<short(char)<int<long<float<double,其中short和char由于都是兩個字節,因此其數據類型的大小是相同的。還有一點需要提一點的是,第2點同樣適用于第三點,賦值右側的值超出左側數據類型的范圍,編譯器不會報錯,而是會截取低位。

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

上述代碼都是正確的,都是從小類型自動轉換為大類型。

但是!!!

1 char charType=byteType;//報錯 Type mismatch: cannot convert from byte to char 2 charType=shortType;//報錯 Type mismatch: cannot convert from short to char 3 shortType=charType;//報錯 Type mismatch: cannot convert from char to short 4 intType=charType;//編譯正確

可以看出,char在自動轉換過程是有特殊情況的,byte數據類型雖然沒有char數據類型大,但是它不能自動轉換,char和short一樣大,也不能進行自動轉化,char繼續往上就可以自動轉換了。

4、byte,short,char型數據參與運算時,先一律轉換為int再運算

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

從第3行和第4行可以看出,當賦值側右側為直接量的運算,那么右側仍然算直接量,那么規則和1一樣,只要不超出賦值左側范圍即可。

當賦值側右側有變量參與運算,那么無論是+-*/,都會先將運算符兩側的數據轉換為int再進行運算,得到的結果也自然是int,當把int轉換為byte、short或者char時,自然需要強制轉換。

轉載于:https://www.cnblogs.com/haojiejiejie/p/8583598.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。