1. 程式人生 > 其它 >005Java學習--資料型別及拓展

005Java學習--資料型別及拓展

技術標籤:Java學習之旅

文章目錄

資料型別

強型別語言(安全性高,速度慢)

​ 要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用。

弱型別語言

Java的資料型別分為兩大類

  • 基本型別(primitive type)---------------八大基本資料型別

    • 數值型別

      • 整數型別
        • byte佔一個位元組範圍

        • short佔兩個位元組範圍

        • int佔四個位元組範圍(最常用)

        • long佔八個位元組範圍(long型別要在數字後面加個L)

          byte num1 = 127;
          short num2 = 32767;
          int num3 = 2147483647;
          long num4 = 30L;
          long num5 = 9223372036854775807L;
          

          ps:範圍可以只記大概,具體可以通過各自對應的包裝類名Crtl+左鍵,點選檢視int–>Integer,char–>character,其他的包裝類都是把原始類中的首字母大寫…

          在這裡插入圖片描述

      • 浮點型別
        • float佔四個位元組(浮點數預設double型別,float型別要在數字後面加個F)

          float num6 = 30.2F;
          
        • double佔八個位元組

      • 位元組型別 char佔兩個位元組(字元!!!不是字串)
        char name1 = 'A';
        char name2 = '張';
        //字串,String不是關鍵字,是  類
        String name3 = "張三"
        
        
    • boolean型別:佔一位,其值只有true和false兩個

      //布林值
      boolean flag = true;
      //boolean flag = false;
      

      位元組(byte)計算機資料處理的基本單位,用大寫B來表示’

      位(bit)是計算機內部資料儲存的最小單位`,1B = 8b


  • 引用型別(reference type)

    • 介面

    • 陣列

拓展

整數進位制

二進位制0b,八進位制0,十六進位制0x

public class Demo01 {
    public static void main(String[] args) {
        int i = 10;  //十進位制
        int i2 = 010;  //八進位制0
        int i3 = 0x10;  //十六進位制0x
        int i4 = 0b10;  //二進位制0b

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}

執行結果

10
8
16
2

浮點數

銀行業務怎麼表示?

public class Demo02 {
    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0/10;

        System.out.println(f == d);
        System.out.println(f);
        System.out.println(d);

        System.out.println("========================================");

        float d1 = 233333333333333333F;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);
    }
}

float 和double 是有精度問題的,上面程式碼中,我們直接計算的話,預期fd為true,d1d2為false,然而結果恰恰相反

輸出結果

false
0.1
0.1
=============================================
true

最好完全避免使用浮點數進行比較

最好完全避免使用浮點數進行比較

最好完全避免使用浮點數進行比較

所以銀行業務與錢有關的用BigDecimal(數學工具類)。

字元

public class Demo03 {
    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);  //強制轉換
        System.out.println(c2);
        System.out.println((int)c2);   //強制轉換
    }
}

輸出結果

a
9720013

所有的字元本質還是數字

Unicode編碼

如果有一種編碼,將世界上所有的符號都納入其中,無論是英文、日文、還是中文等,大家都使用這個編碼表,就不會出現編碼不匹配現象。每個符號對應一個唯一的編碼,亂碼問題就不存在了。這就是Unicode編碼。

Unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。每個符號的編碼都不一樣,比如,U+0639表示阿拉伯字母Ain,U+0041表示英語的大寫字母A,“漢”這個字的Unicode編碼是U+6C49。

Unicode固然統一了編碼方式,但是它的效率不高,比如UCS-4(Unicode的標準之一)規定用4個位元組儲存一個符號,那麼每個英文字母前都必然有三個位元組是0,這對儲存和傳輸來說都很耗資源。

char  = '\u0061';
System.out.printIn(c3);  
//輸出結果:a

轉義字元

\u :\uxxxx Unicode轉義字元,其中xxxx是十六進位制數字的字串表示形式

\n :換行

\t :水平製表符table