Java數(shù)據(jù)類型的劃分(整數(shù)類型)

定義一個整型變量:

  • public class TestDemo{
    public static void main (String args[]){
    //10是一個整數(shù),不會改變的數(shù),是常量
    //程序之中任何一個整數(shù)對應(yīng)的類型都是int
    int num = 10;聲明一個int型變量
    //num是int型變量,2是一個int型的常量=結(jié)果還是int型
    System.out.println(num
    2);
    }
    }

在進(jìn)行整型數(shù)據(jù)的操作過程當(dāng)中也會存在一個數(shù)據(jù)的溢出問題

  • 溢出:當(dāng)已經(jīng)達(dá)到整型的最大或最小值而繼續(xù)進(jìn)行數(shù)學(xué)計算而可能產(chǎn)生的錯誤數(shù)據(jù)。
  • 關(guān)于變量的命名要求,第一個單詞的字母小寫,而后的每一個單詞首字母大寫。
    范例:觀察數(shù)據(jù)溢出操作
  • public class TestDemo{
    public static void main (String args[]){
    int maxValue = Integer.MAX_VALUE;//取得最大值
    int minValue = Integer.MIN_VALUE;//取得最小值
    System.out.println(maxValue);//2147483647
    System.out.println(minValue);//-2147483648
    //maxValue屬于int型變量 + int型=int型(如果再加上下面的輸出)
    System.out.println(maxValue + 1);/maxValue已經(jīng)是最大值了,所以數(shù)據(jù)溢出(最小值)/
    System.out.println(minValue - 1 );//-2147483648/同樣的,minValue已經(jīng)是最小值了,數(shù)據(jù)同樣會溢出,變成最大值/
    System.out.println(minValue - 2);//-2147483648//如果是最小值減2

發(fā)現(xiàn)當(dāng)已經(jīng)超出了數(shù)據(jù)的操作類型,就會產(chǎn)生數(shù)據(jù)的偏差,最好的方法就是在計算之前預(yù)估數(shù)據(jù)的大小。

  • 解決數(shù)據(jù)溢出的方法:
  • 更換更大的數(shù)據(jù)類型
    范例:解決int的數(shù)據(jù)溢出問題,比int大的數(shù)據(jù)類型,long
    public class TestDemo{
    public static void main (String args[]){
    int maxValue = Integer.MAX_VALUE;//取得最大值
    int minValue = Integer.MIN_VALUE;//取得最小值
    long result = maxValue + 1;
    System.out.println( result);
    }
    }
  • 在使用此類方式的處理之前,一定要注意一個問題,所有的程序的執(zhí)行順序都是從“=”的右邊到左邊。如果繼續(xù)使用了int來計算,那么計算結(jié)果,那么計算結(jié)果還是存在一個溢出問題。
    實現(xiàn)方式一:直接把int變量的內(nèi)容直接賦值給long
    public class TestDemo{
    public static void main (String args[]){
    int maxValue = Integer.MAX_VALUE;//取得最大值
    int minValue = Integer.MIN_VALUE;//取得最小值
    long result = maxValue ;//直接把int變量的內(nèi)容賦值給long
    System.out.println( result +1 );/result是long類型,+1是int類型=long類型/
    }
    }
  • 實現(xiàn)方式二:直接將一個int型的變量變?yōu)閘ong型
    public class TestDemo{
    public static void main (String args[]){
    int maxValue = Integer.MAX_VALUE;//取得最大值
    int minValue = Integer.MIN_VALUE;//取得最小值
    long result =(long)maxValue +1;//將一個變量先定義成long型
    System.out.println( result );/result是long類型,+1是int類型=long類型/
  • 數(shù)據(jù)類型可以由小變大解決數(shù)據(jù)溢出問題;數(shù)據(jù)類型除了可以由小變大之外,還可以實現(xiàn)由大變小。但是這就需要強(qiáng)制完成,強(qiáng)制完成的結(jié)果就是:丟數(shù)據(jù)
  • public class TestDemo{
    public static void main (String args[]){
    /任何的整數(shù)默認(rèn)類型都是int,但是該數(shù)據(jù)已經(jīng)超過了int可以保存的數(shù)據(jù)范圍/
    //那么我們就需要把這個數(shù)據(jù)明確的表示成一個long型的常量
    long num = 2147483648L;//“L"或“l(fā)”都可以
    int result = (int)num;/強(qiáng)制long類型變?yōu)閕nt類型,這種操作有可能會丟失精度/
    System.out.println(result);
    }
    }
  • 范圍小的數(shù)據(jù)類型可以自動變?yōu)閿?shù)據(jù)大的類型
  • 范圍大的數(shù)據(jù)類型必須強(qiáng)制變?yōu)閿?shù)據(jù)小的類型
  • 關(guān)于數(shù)據(jù)類型默認(rèn)值問題:
    任何的數(shù)據(jù)類型都有默認(rèn)值,但是這個默認(rèn)值在方法的聲明中無效。
    錯誤程序:
    public class TestDemo{
    public static void main (String args[]){
    int num;
    System.out.println(num);//錯誤:可能尚未初始化
    那么這個時候有兩種解決方案:
  • 在使用前為變量賦值,
    public class TestDemo{
    public static void main (String args[]){
    int num;
    num = 10;//在輸出前為num賦值
    System.out.println(num);//輸出結(jié)果10

但是這種形式在老版本的JDK中也會出錯。

  • 在變量聲明時賦值
    public class TestDemo{
    public static void main (String args[]){
    int num = 10;
    System.out.println(num);
  • byte數(shù)據(jù)類型(-128-127)
    范例:聲明byte變量
    public class TestDemo{
    public static void main (String args[]){
    //10是int,int的范圍要大于byte的范圍,那么理論上要進(jìn)行強(qiáng)制轉(zhuǎn)換
    //可是這里沒有進(jìn)行轉(zhuǎn)換,因為其數(shù)據(jù)量符合byte的要求。
    byte data = 10;
    System.out.println(data);

如果說為byte賦值的內(nèi)容大于byte的范圍,這個時候就要進(jìn)行強(qiáng)制轉(zhuǎn)換。同時需要注意的是,如果要將int常量直接賦值給byte的變量,那么只能夠是常量,而不能是int變量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java經(jīng)典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 2,076評論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,696評論 18 399
  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔...
    葉總韓閱讀 5,226評論 0 41
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,708評論 4 12
  • 1 順序語句 語句:使用分號分隔的代碼稱作為一個語句。 注意:沒有寫任何代碼只是一個分號的時候,也是一條語句,...
    哈哈哎呦喂閱讀 477評論 0 0

友情鏈接更多精彩內(nèi)容