Java基本資料型別總結、型別轉換、常量的宣告規範,final關鍵字的用法

泰斗賢若如發表於2019-03-29

1  Java 基本資料型別

變數就是申請記憶體來儲存值。也就是說,當建立變數的時候,需要在記憶體中申請空間。

記憶體管理系統根據變數的型別為變數分配儲存空間,分配的空間只能用來儲存該型別資料。

因此,通過定義不同型別的變數,可以在記憶體中儲存整數、小數或者字元。

Java 的兩大資料型別:

  • 內建資料型別
  • 引用資料型別

1.1  內建資料型別

Java語言提供了八種基本型別。六種數字型別(四個整數型,兩個浮點型),一種字元型別,還有一種布林型。

1.1.1  byte:

  • byte 資料型別是8位、有符號的,以二進位制補碼錶示的整數;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 預設值是 0;
  • byte 型別用在大型陣列中節約空間,主要代替整數,因為 byte 變數佔用的空間只有 int 型別的四分之一;
  • 例子:byte a = 100,byte b = -50。

1.1.2  short:

  • short 資料型別是 16 位、有符號的以二進位制補碼錶示的整數
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 資料型別也可以像 byte 那樣節省空間。一個short變數是int型變數所佔空間的二分之一;
  • 預設值是 0;
  • 例子:short s = 1000,short r = -20000。

1.1.3  int:

  • int 資料型別是32位、有符號的以二進位制補碼錶示的整數;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型變數預設為 int 型別;
  • 預設值是 0 ;
  • 例子:int a = 100000, int b = -200000。

1.1.4  long:

  • long 資料型別是 64 位、有符號的以二進位制補碼錶示的整數;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 這種型別主要使用在需要比較大整數的系統上;
  • 預設值是 0L;
  • 例子: long a = 100000L,Long b = -200000L。
    "L"理論上不分大小寫,但是若寫成"l"容易與數字"1"混淆,不容易分辯。所以最好大寫。

1.1.5  float:

  • float 資料型別是單精度、32位、符合IEEE 754標準的浮點數;
  • float 在儲存大型浮點陣列的時候可節省記憶體空間;
  • 預設值是 0.0f;
  • 浮點數不能用來表示精確的值,如貨幣;
  • 例子:float f1 = 234.5f。

1.1.6  double:

  • double 資料型別是雙精度、64 位、符合IEEE 754標準的浮點數;
  • 浮點數的預設型別為double型別;
  • double型別同樣不能表示精確的值,如貨幣;
  • 預設值是 0.0d;
  • 例子:double d1 = 123.4。

1.1.7  boolean:

  • boolean資料型別表示一位的資訊;
  • 只有兩個取值:true 和 false;
  • 這種型別只作為一種標誌來記錄 true/false 情況;
  • 預設值是 false;
  • 例子:boolean one = true。

1.1.8 char:

    • char型別是一個單一的 16 位 Unicode 字元;
    • 最小值是 \u0000(即為0);
    • 最大值是 \uffff(即為65,535);
    • char 資料型別可以儲存任何字元;
    • 例子:char letter = 'A';。

 

 

2   引用型別

  • 在Java中,引用型別的變數非常類似於C/C++的指標。引用型別指向一個物件,指向物件的變數是引用變數。這些變數在宣告時被指定為一個特定的型別,比如 Employee、Puppy 等。變數一旦宣告後,型別就不能被改變了。
  • 物件、陣列都是引用資料型別。
  • 所有引用型別的預設值都是null。
  • 一個引用變數可以用來引用任何與之相容的型別。
  • 例子:Site site = new Site("Runoob")。

 

3    常量的概述

常量是指在程式執行過程中其值不能改變的量。

3.1   常量型別

Java中常量的分類:

    整數常量 : 所有整數

    小數常量 : 所有小數

    布林常量 : 只有true和false

    字元常量 :使用’’引起來的單個字元

    字串常量 :使用“”引起來的字元序列,“”  、“a” 、” ” 

    null常量 : 只有一個值null

3.2  char 型別

char型別表示的是單個字元型別,任何資料使用單引號括起來的都是表示字元。字元只能有一個字元,比如:普通的老百姓穿上軍裝就是軍人。       

    注意:特殊字元的轉義序列:轉義字元

   轉義字元的概述:

特殊字元使用”\”把其轉化成字元的本身輸出,那麼使用”\”的字元稱作為轉移字元。

需求:使用輸出語句,列印出帶引號的資訊例如輸出。

System.out.println("teacher said"java is fun"");編譯是無法正常通過的。語法有錯誤,編譯器讀到第二個引號就認為是字串的結束,剩餘的不知道怎麼處理。如何解決這個問題:java中使用轉義字元來表示特殊的字元。一個轉義字元以反斜槓(\)開始。

     問題:想要列印帶引號的字串怎麼辦,就可以使用反斜槓(\)後跟字元,這個反斜槓就是轉義字元。

 

\r 表示接受鍵盤輸入,相當於按下回車。

\n 表示換行。

\t  製表符,相當於Table鍵

\b 退格鍵,相當於Back Space

\’  單引號

\’’ 雙引號

\\ 表示一個斜跨

上述問問題解決:System.out.println("teacher said\"java is fun\"");

注意:換行符就是另起一行,回車符就是回到一行的開頭,所以我們平時編寫檔案的回車符應該確切來說叫做回車換行符

 

Java中這8中基本資料型別都是小寫的。

 3.4  常量名的宣告規範:

多個單片語成時,字母全部大寫,多個單詞之間使用_分隔(例:INTEGER_CACHE)

注意:只是為了增加規範性、可讀性而做的一種約定,識別符號在定義的時候最               好見名知意,提高程式碼閱讀性。

 

4   自動型別轉換

整型、實型(常量)、字元型資料可以混合運算。運算中,不同型別的資料先轉化為同一型別,然後進行運算。

轉換從低階到高階。

 

  ------------------------------------>  

byte,short,char—> int —> long—> float —> double


資料型別轉換必須滿足如下規則:

  • 1. 不能對boolean型別進行型別轉換。

  • 2. 不能把物件型別轉換成不相關類的物件。

  • 3. 在把容量大的型別轉換為容量小的型別時必須使用強制型別轉換。

  • 4. 轉換過程中可能導致溢位或損失精度

  • 5. 浮點數到整數的轉換是通過捨棄小數得到,而不是四捨五入

自動型別轉換

必須滿足轉換前的資料型別的位數要低於轉換後的資料型別,例如: short資料型別的位數為16位,就可以自動轉換位數為32的int型別,同樣float資料型別的位數為32,可以自動轉換為64位的double型別。

 

強制型別轉換

  • 1. 條件是轉換的資料型別必須是相容的。

  • 2. 格式:(type)value type是要強制型別轉換後的資料型別 

 

隱含強制型別轉換

  • 1. 整數的預設型別是 int。

  • 2. 浮點型不存在這種情況,因為在定義 float 型別時必須在數字後面跟上 F 或者 f。



5    final關鍵字

 

   1:定義靜態方法求圓的面積

   2:定義靜態方法求圓的周長

   3:發現方法中有重複的程式碼,就是PI,圓周率。

      1:如果需要提高計算精度,就需要修改每個方法中圓周率。

   4:描述一個變數

      1:方法都是靜態的,靜態只能訪問靜態,所以變數也定義為靜態的。

public static double PI=3.14;

          1:如果定義為public後,新的問題,類名.PI=300; 改變了PI的值。

2:修改為private,修改為private後進行了封裝,需要getset公共訪問方法。

          3:現有的知識不能解決這樣的問題了。可以使用final

5.1 使用final

        1:final關鍵字主要用於修飾類、類成員、方法、以及方法的形參。

       2:final修飾成員屬性:

 

          1:說明該成員屬性是常量,不能被修改。

             public static final double PI=3.14;

                 1:public :訪問許可權最大

                 2:static :記憶體中只有一份

                 3:final  :是一個常量

                 4:常量名大寫

                 5:必須初賦值。

 

          2:使用類名.成員。修改該成員的值,報錯。--常量不能被修改

                1:基本資料型別,final使值不變

                2:物件引用,final使其引用恆定不變,無法讓其指向一個新的物件,但是物件自身卻可以被修改。

                3:該關鍵字一般和static關鍵字結合使用

                     1:常量可以優先載入,不必等到建立物件的時候再初始化。

               4:final和static可以互換位置

               5:常量一般被修飾為final

          3:fianl修飾類:

               1:該類是最終類,不能被繼承。

                    1:將父類加final修飾,子類繼承,就會報錯。

               2:檢視api文件發現String類是final的。Integer類也是final的

                    1:為了防止程式碼功能被重寫

                    2:該類沒有必要進行擴充套件

          4:final修飾方法:

                   1:該方法是最終方法,不能被重寫

                   2:當一個類被繼承,那麼所有的非私有函式都將被繼承,如果函式不想被子類繼承並重寫可以將該函式final修飾

                   3:當一個類中的函式都被修飾為final時,可以將類定義為final的。

          5:final關鍵字修飾形參

                   1:當形參被修飾為final,那麼該形參所屬的方法中不能被篡改。

                   2: 專案中主要用於一些只用來遍歷未知資料的函式。將未知變數宣告為final的。增強資料的安全性。

相關文章