1. 程式人生 > >新手初入Java(二)資料型別、變數和常量以及拆包和

新手初入Java(二)資料型別、變數和常量以及拆包和

資料型別、變數和常量以及拆包和裝包

一、資料型別

Java資料型別分為基本型別(primitive types)和引用型別(reference type),其中基本型別又分為數值型、字元型、布林型。引用型別又分為類型別、介面型別、陣列型別、null型別。這兩種大的型別包含了int,double,char,等許多。其關係如下圖:
資料型別
其中:

  • byte位元組型1位元組 8bit 最大儲存資料量是255,存放的資料範圍是-128~127之間。
  • short短整型2位元組 16bit最大資料儲存量是65536,資料範圍是-32768~32767之間。
  • int整型4位元組 32bit最大資料儲存容量是2的32次方減1,資料範圍是負的2的31次方到正的2的31次方減1。
  • long長整型8位元組 64bit最大資料儲存容量是2的64次方減1,資料範圍為負的2的63次方到正的2的63次方減1 。
  • 浮點型float單精度4位元組 32bit資料範圍在3.4e-45~1.4e38,直接賦值時必須在數字後加上f或F。 如float=2.5f;
  • double雙精度8位元組 64bit資料範圍在4.9e-324~1.8e308,賦值時可以加d或D也可以不加 。
  • char字元型用單引號 。
  • 布林型別 boolean 布林型true/false(只有真假兩種結果)。

簡單型別一般適合儲存少量資料,可以實現高效率處理。

引用型別的變數在堆疊(Stack)中儲存對資料(物件)的引用(地址),資料(物件)儲存在堆(Heap)中。對於引用型別,兩個變數可以引用同一個物件,因此對一個變數的操作可能影響另一個變數所引用的物件。


Java基本資料型別的相互轉化:

  • 自動型別轉換:容量小的資料型別可以自動轉化為容量大的資料型別
    資料型別轉換

int–>float,long–>float,long–>double在轉換時可能會出現精度的損失,而箭頭方向表示無資料丟失的自動型別轉換。

二、變數和常量

變數: 變量表示儲存位置,每個變數必須具有一個型別。
變數的宣告和賦值: 在方法內部宣告的變數,稱為"區域性變數"。在類內部(但不在該類內部的任何方法中)宣告的變數,稱為"成員變數",即類的欄位。
區域性變數的宣告和賦值格式如下:
(1)宣告變數:
資料型別 變數名[,變數名…];
資料型別 變數名=初值[, 變數名=初值…];
(2)變數賦值:
變數=要賦的值;
注:

一行程式碼可以同時宣告多個同類型的變數,以半形符號(,)分隔。在宣告變數的同時,可以賦初值。
Java區域性變數被訪問之前必須初始化,否則編譯時會報錯。因為,不可能訪問一個未初始化的變數。
例如:
程式碼如下:

public static void main(String[] args) {
    int i1;
    i1=123;
    int i2=456;
    double d1=12.3,d2,d3=45.6;
    System.out.println("i1="+i1);           //輸出i1;
    System.out.println("i2="+i2);           //輸出i2;
    System.out.println("d1="+d1);	    //輸出d1;
    //System.out.println("d2="+d2);         //編譯錯誤:變數d2被訪問之前沒有賦值
    System.out.println("d3="+d3);           //輸出d3;
}

執行結果如下:

執行結果

變數的作用域:
變數宣告的位置不同,其可被訪問的範圍也不同。變數的可被訪問範圍稱為變數的作用域。Java語言中的變數按其作用域大致可以分為型別成員變數、方法體區域性變數(包括方法引數)、語句塊區域性變數。

  • 型別成員變數:型別成員變數實在類型別中宣告的變數,包括靜態變數和例項變數,其有效範圍(作用域)為類型別定義體內
  • 方法體區域性變數:方法體區域性變數是方法中宣告的變數,其有效範圍(作用域)為方法體內。方法所帶的引數也屬於過程級區域性變數,其有效範圍(作用域)為方法體內
  • 語句塊區域性變數:語句塊區域性變數實在控制結構塊中宣告的變數。例如,if、for等語句中定義的變數,其有效範圍(作用域)為控制結構塊內

常量:
(1)文字常量: 程式碼中出現的文字形式常數,即文字常量,通常用來表示簡單型別、String型別和null型別的值
(2)整型常量: 整型字串通常解釋為int型別。如果加字尾L(大寫字母L,也可使用小寫字母l,但小寫字母l容易與數字1混淆,故不建議使用),則解釋為long型別。例如:

int  int1 = 123;      //整型變數123為int型
long  long1=123L;     //整型變數123L為long型

編譯器通常將整數解釋為十進位制(基數為10)數制,可以用字首0x(或0X)將整數強制為十六進位制(基數為16)數制,或使用字首0(數字0)將整數強制為八進位制(基數為8),如圖表2-3所示。注意,跟在字首後面的數字必須符合數制。


數制 字首 有效數值 示例
十進位制(以10為基數) 0~9 0、1、2、7、8、10、11
十六進位制(基數為16) 0x(或0X) 0 ~9、A ~F或0 ~9和a ~f 0x0、0x1、0x2、0x7
八進位制(基數為8) 0 0 ~7 00、01、02、03、010

(3)浮點數型別常量: 浮點數只能表示十進位制數。浮點數有兩種表示方法,即標準表示法和科學記數法。浮點數又分為單精度數和雙精度數。
(4)布林型別常量: 布林型別常量分別為true和false。布林型別常量可以賦值給布林型別變數。例如:

boolean  b1 = true;

(5)字元型別常量: Java字元常量在單引號內包含所需的字元,例如’a’、‘A’。
(6)字串型別常量: Java的字串常量是用雙引號(" “)括起來的一串字元。如"Hello,World”

String str1="程式設計";
String str2="Hello World";

(7)使用者宣告常量: 在方法內部宣告的常量,稱為"區域性常量";在類(但不在該類內部的任何方法中)中宣告的常量,稱為"成員變數",“常量欄位”。

區域性變數的宣告和賦值格式如下:
final 型別 區域性變數名[=初值];
注意: 指定其值後,不能再對其進行賦值修改,否則會產生編譯錯誤。

三、拆包和裝包

(1)裝包: 即簡單型別=》包裝類
(2)拆包:即包裝類=》簡單型別
以下為型別的轉換:

簡單型別 包裝類
int Integer
byte Byte
char Character
short Short
boolean Boolean
float Float
double Double
long Long

通過裝包和拆包操作機制,可以實現簡單型別和引用型別之間的轉換。