天天看點

火眼金睛看Java基本類型(上) | 帶你學《Java程式設計入門》之三

上一篇:帶你學《Java程式設計入門》之二:開啟Java之路,你必須要了解的

【本節目标】

看完本章你需要了解Java資料分類,以及每種資料類型的資料範圍。本章重點講述整型資料類型,利用案例幫助更快學習整型資料類型。

3.1 Java資料分類

在JAVA語言之中對于資料類型一共分為兩類:

基本資料類型:描述的是一些具體的數字單元,例如:1、1.1;

  • 數值型:
    • 整型:byte、short、int、long; → 預設值:0
    • 浮點型:float、double; → 預設值:0.0
  • 布爾型:boolean; → 預設值:false
  • 字元型:char; → 預設值:’u0000’

引用資料類型:牽扯到記憶體關系的使用;

  • 數組、類、接口。 → 預設值:null

而我們本次主要讨論的是基本資料類型,這裡面不牽扯到複雜的記憶體關系的比對操作。每一種基本資料類型都有每一種資料類型儲存的資料範圍。

火眼金睛看Java基本類型(上) | 帶你學《Java程式設計入門》之三

圖一 基本資料類型

不同的類型我們儲存有不同範圍的資料,但是這裡面實際上就牽扯到了資料類型的選擇上,那麼對于以上的資料類型劃分我們可以給出個人的一些參考原則:

  • 如果要是描述數字首選的一定是int(整數)、double(小數);
  • 如果要進行資料傳輸或者進行文字編碼轉換使用byte類型(二進制處理操作);
  • 進行中文的時候最友善的操作使用的是字元char來完成(可選概念);
  • 描述記憶體或檔案大小、描述表的主鍵列(自動增長)可以使用long;
  • 其他類型比較少見。

3.2 整型資料

整型資料一共有四種,按照儲存範圍由小到大:byte、short、int、long,那麼在Java裡面任何的一個整型常量那麼其預設的類型都是int型(隻要是整數就是int類型的資料)。

3.2.1 int資料類型

範例:定義int型變量

public class JavaDemo{
  public static void main(String args[]) {
//int 變量名稱 = 常量(10是一個常量,整數類型為int)
   int x = 10 ;     //定義了一個整型變量x
//int型變量 * int型變量=int型資料
   System.out.println(x * x);
  }
}           

運作結果:

火眼金睛看Java基本類型(上) | 帶你學《Java程式設計入門》之三

圖二 運作結果

10永遠不會改變,但是x是一個變量,x的内容是可以發生改變的。

範例:修改x的内容

public class JavaDemo {
    public static void main(String args[]) {
        // int 變量名稱 = 常量(10是一個常量,整數類型為int) ;
        int x = 10 ;    // 定義了一個整型變量x
        x = 20 ;        // 改變了x的已有内容
        // int型變量 * int型變量 = int型資料
        System.out.println(x * x) ;
    }
}           

3.2.2 資料溢出處理

任何的資料類型都是有其可以儲存的資料範圍(正常使用下你很少會出現超過此範圍的資料)如果超過了會如何呢?下面通過一個具體代碼來進行我們的觀察。

範例:觀察超過了int處理範圍

public class JavaDemo {
    public static void main(String args[]) {
        int max = Integer.MAX_VALUE ; // 擷取int的最大值
        int min = Integer.MIN_VALUE ; // 擷取int的最小值
        System.out.println(max) ;    // 2147483647
        System.out.println(min) ;    // -2147483648
        System.out.println("------------- 無以言表的分割線 -----------") ;
        // int型變量 + int型常量 = int型計算結果
        System.out.println(max + 1) ;    // -2147483648,最大值 + 1 = 最小值
        System.out.println(max + 2) ;    // -2147483647,最大值 + 2 = 次最小值
        // int型變量 - int型常量 = int型計算結果
        System.out.println(min - 1) ;    // 2147483647,最小值 - 1 = 最大值
    }
}           

通過此時的執行結果可以發現這些數字在進行處理的時候如果超過了其最大的儲存範圍,那麼将出現有循環的問題,而這種問題在Java中被稱為資料溢出,那麼要想解決這種溢出,可以繼續擴大使用範圍,比int範圍更大的是long。

範例:解決資料溢出

  • 在操作的時候預估資料範圍,如果發現資料範圍不夠,就使用更大範圍;
public class JavaDemo {
    public static void main(String args[]) {
        // long long變量 = int的數值
        long max = Integer.MAX_VALUE ; // 擷取int的最大值
        long min = Integer.MIN_VALUE ; // 擷取int的最小值
        System.out.println(max) ;    // 2147483647
        System.out.println(min) ;    // -2147483648
        System.out.println("------------- 無以言表的分割線 -----------") ;
        // long型變量 + int型常量 = long型計算結果
        System.out.println(max + 1) ;    // 2147483648
        System.out.println(max + 2) ;    // 2147483649
        // long型變量 - int型常量 = long型計算結果
        System.out.println(min - 1) ;    // -2147483649
    }
}           
  • 除了可以定義long型的變量之外,也可以直接在常量上進行處理,預設的整數常量都是int型,那麼可以為它追加字母“L”或直接使用“(long)”轉換。
public class JavaDemo {
    public static void main(String args[]) {
        int max = Integer.MAX_VALUE ; // 擷取int的最大值
        int min = Integer.MIN_VALUE ; // 擷取int的最小值
        System.out.println(max) ;    // 2147483647
        System.out.println(min) ;    // -2147483648
        System.out.println("------------- 無以言表的分割線 -----------") ;
        // int型變量 + long型常量 = long型計算結果
        System.out.println(max + 1L) ;    // 2147483648
        System.out.println(max + 2l) ;    // 2147483649
        // long型變量 - int型常量 = long型計算結果
        System.out.println((long)min - 1) ;    // -2147483649
    }
}           

3.2.3 int強制轉換

現在發現資料類型之間是可以轉換的,即:範圍小的資料類型可以自動轉為範圍大的資料類型,但是如果反過來,範圍大的資料類型要轉為範圍小的資料類型,那麼就必須采用強制性的處理模式,同時還需要考慮可能帶來的資料溢出。

範例:強制類型轉換

public class JavaDemo {
    public static void main(String args[]) {
        long num = 2147483649L ; // 此資料已經超過了int範圍
        int temp = (int) num ; // long範圍比int範圍大,不能夠直接轉換
        System.out.println(temp) ;
    }
}           

程式支援有資料轉換處理,但是如果不是必須的情況下不建議這種轉換。

3.2.4 byte資料類型

在進行整型處理的時候,還有一個byte類型特别需要注意,首先這個類型的範圍是:-128~127,它儲存的資料量很小。

範例:定義byte變量

public class JavaDemo {
    public static void main(String args[]) {
        byte num = 10 ;
        System.out.println(num * num) ;  //byte*byte=byte  100
    }
}           
public class JavaDemo {
    public static void main(String args[]) {
        byte num = 20 ;
        System.out.println(num*num) ;      //400
    }
}           
public class JavaDemo {
    public static void main(String args[]) {
        byte num = 20 ;
     byte result= num*num
        System.out.println(result) ;      
    }
}           
public class JavaDemo {
    public static void main(String args[]) {
        byte num = 20 ;
        System.out.println(num) ;     
    }
}           

3.2.5 byte強制轉換

正常來講在Java程式裡面20這個數字應該是int型,但是在為byte指派的時候并沒有因為是int型而發生強制類型轉換,這是因為Java對byte做了特殊處理,即:如果沒超過byte範圍的常量可以自動由int變為byte,如果超過,就必須進行強制轉換。

範例:int強制轉換為byte

public class JavaDemo {
    public static void main(String args[]) {
        byte num = (byte) 200 ;
        System.out.println(num) ;
    }
}           

由于200已經超過了byte的範圍,是以産生了資料溢出的問題。需要提醒的是,對于常量可以自動适配轉換,但是如果對于變量,則還是必須執行強制轉換處理。

範例:變量強制轉換

public class JavaDemo {
    public static void main(String args[]) {
        int x = 200 ;
        byte num = (int) x ;
        System.out.println(num) ;
    }
}           

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:帶你學《Java程式設計入門》之三:火眼金睛看Java基本類型(下) 更多Java入門程式設計文章檢視此處