1. 程式人生 > >Java入門系列-05-數據類型和類型轉換

Java入門系列-05-數據類型和類型轉換

you lse eight equal 而是 enter 基本數據 one 規則

這篇文章為你搞懂2個問題

  1. java 中有哪些數據類型可以用存儲數據?
  2. java 中的數據類型是怎麽轉換的?

在上一篇文章中我們學會了如何使用變量,像這樣存儲一個整數 int age=10;,可以在開發工具中編寫一行這樣的代碼 int age=10.5; 就會發現開發工具報錯了,是因為變量中的數據類型也是不能隨便用的。

數據類型

咱們先來看下面一組數據

如果每天花費2小時在交通上
1月=60小時=2.5天,
1年=730小時=30天,
50年=36500小時=1520天=4年

這段數據中可以分為以下2類,java中也包含這2大類

  1. 數值
    1月 中的 1
    60小時 中的 60
    2.5 天中 2.5
  2. 非數值
    ,
    小時
  • 數值
    • 整型
    • byte
    • short
    • int
    • long
    • 浮點型
    • float
    • double
  • 非數值
    • char
    • boolean
    • String

      數值型

      下面看一下每個數據類型的詳細介紹

數據類型 大小 取值範圍 介紹
byte 1字節8位 -128 ~ +127 字節型 這個範圍可以存儲普通人的年齡
short 2字節16位 -32768~+3276 短整型
int 4字節32位 -2147483648)~+2147483647 整型 存下中國人口的數量沒有問題,但是存下地球所有人的數量就不夠了
long 8字節64位 -2^63 ~ + 2^63-1 長整型 存下地球的人數綽綽有余
float 4字節32位 單精度浮點數 存儲小數
double 8字節64位 雙精度浮點數

敲一敲:

public class DemoType {
    public static void main(String[] args) {
        //int類型使用
        int numa=10+1;
        System.out.println(numa);//輸出11
        short numb=20;
        //使用long類型時的值需要使用L作為後綴
        long time=9223372036854775807L;
    }
}

在使用 long 類型時使用不區分大小寫的 L 作為後綴標記與整型進行區分
使用其他整數時不需加後綴符號,註意賦值的整數不超過類型範圍即可

敲一敲:

public class DemoFloat {
    public static void main(String[] args) {
        float money=33.6f;
        double length=55.07;
    }
}

在使用單精度浮點數時需加上 f 作為後綴,這是因為任何小數都會被認為是 double
在日常使用中建議使用 double 類型防止精度的丟失

非數值型

字符型 char

只能存儲一個字符,值需要用一對單引號引起來,且單引號中只能放一個字符

敲一敲:

char sex=‘男‘;

字符串型 String

用於存儲一串字符,必須用一對雙引號引起來,另外需要註意的是 String 不是基本數據類型,而是 java 中的另一個概念

敲一敲:

String username="極客大全";
String question="What‘s your name?\nHow old are you?";
  1. String 類型用於存儲字符串,字符串可以拼接但不能用於數學運算
  2. 還可以使用一些 轉義字符 ,這些字符可以用來表示一些特殊符號像 空格、換行
    \n 可以用來表示換行,之後的內容會另起一行
    \t 可以表示一個制表符(Tab 鍵)

布爾型 boolean

用於存儲邏輯的結果,如:大象比人大的結果是真(true) 人比螞蟻小的結果是假(false)

敲一敲:

boolean isbig=(1>10);
System.out.println("isbig:"+isbig);
boolean isequal=(100==3);
System.out.println("isequal:"+isbig);
boolean flag=false;
System.out.println("flag:"+flag);

boolean 類型的變量只能存儲兩個值 truefalse
還可以將邏輯比較後的結果(也是 truefalse)存入

數據類型轉換

隱式類型轉換

二花一個月前稱的體重為97.5斤,現在比一個月前剛好增加2斤,二花現在是多少斤?這是一個比較簡單的數學問題,正確結果是 99.5 斤,下面我們用代碼來模擬一遍。

敲一敲:

public class DemoClac {
    public static void main(String[] args) {
        double weight=97.5;//一個月前的體重
        int add=2;//增加的體重
        double sum=weight+add;
        System.out.println(sum);//輸出和
    }
}

add 變量是一個整數類型,而 weight 是一個小數,兩者在相加後轉成了 double類型
這時發生的就是 隱式類型轉換

隱式類型轉換 就是自動類型轉換,滿足以下兩個規則即可發生

  1. 如果一個操作數為double類型,則整個表達式可提升為double類型

像上面的這個示例就是滿足這個規則

  1. 滿足自動類型轉換的條件:兩種類型要兼容、目標類型大於源類型

例子1 :double a=1; 1屬於整型,double 類型大於整型,即自動轉換

例子2 :

char chr=97;
System.out.println(chr);//輸出字符 a

char 類型兼容 int 類型,每個整數存入char類型變量時都會映射一個字符,更多可以百度 ASCII

強制類型轉換

敲一敲:

int sum=55.3+22;
System.out.println(sum);

我們想要一個整數的和,但上面的這段代碼運行時會報錯:cannot convert from double to int

這是為什麽呢?根據前面學到的隱式類型轉換,當表達式中有操作數為 double類型時,整個表達式提升為 double,必須進行顯式強制類型轉換。

敲一敲:

int sum=(int) (55.3+22);
System.out.println(sum);

這次的運行成功,運行的結果為 77

強制類型轉換往往是從寬度大的類型轉換為寬度小的類型,會使數值損失精度

試一試

  1. 下面運算的結果是多少?為什麽?
int a=5;
int b=2;
int c=a/5;
System.out.println(c);
  1. 上一個練習中的代碼如何讓運算結果更精準?
  2. 下面素材中生成隨機小數,修改素材生成 1-10 的隨機整數
    public class DemoRandom {
    public static void main(String[] args) {
        double random=Math.random();
        System.out.println(random);
    }
    }

    搜索關註公眾號「享智同行」,第一時間獲取技術幹貨

Java入門系列-05-數據類型和類型轉換