天天看點

Java入門兩周旅 (Day4) Java 基本資料類型Java 基本資料類型

Java 基本資料類型

Java 的兩大資料類型:

  • 内置資料類型
  • 引用資料類型

内置資料類型

對于每一種 資料類型 都有一個 包裝類,如:

void

類型的包裝類是

java.lang.Void

對于數值類型的包裝類,我們都可以從中擷取對應類型的二進制位數、取值範圍。

原語 對應的 JDK 類
boolean java.lang.Boolean
byte java.lang.Byte
char java.lang.Character
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double

具體的例子,見

PrimitiveTypes.java

下面,分類介紹 Java 中的内置資料類型:

void

代表空的值的類型。

整數型

類型 說明 範圍 預設值 備注

byte

8位, 有符号, 以二進制補碼表示的整數

-128

~

127

用在大型數組中節約空間

short

16位, 有符号, 以二進制補碼表示的整數

-32768

~

32767

int

32位, 有符号, 以二進制補碼表示的整數

-2147483648

~

2147483647

一般地整型變量預設為 int 類型

long

64位, 有符号, 以二進制補碼表示的整數

-2^63

~

2^63-1

0L

字面值常量是數後面加"L"("L"理論上不分大小寫,但小寫不易分辯,最好大寫)

整型字面值常量都可以用十(正常書寫)、八(以

開頭)、十六(以

0x

開頭)進制表示:

int decimal = 100;
int octal = 0114;
int hexadecimal = 0x64;
           

浮點型

浮點數不能用來表示精确的值。
類型 說明 預設值 備注

float

單精度、32位、符合 IEEE 754 标準的浮點數

0.0f

float 在儲存大型浮點數組的時候可節省記憶體空間

double

雙精度、64 位、符合IEEE 754标準的浮點數

0.0d

浮點數的預設類型為double類型

字元型

類型 說明 範圍 預設值 備注

char

char類型是一個單一的 16 位 Unicode 字元

\u0000

~

\uffff

字面值常量是單引号裡字元(如:

'A'

)

布爾型

類型 說明 取值 預設值

boolean

表示一位的資訊

true

false

false

引用資料類型

引用類型指向一個對象,指向對象的變量是引用變量。

對象、數組都是引用資料類型。

所有引用類型的預設值都是

null

引用變量一旦聲明後,類型就不能被改變了,但一個引用變量可以用來引用任何與之相容的類型。

Java 變量

聲明一個變量,需要使用如下的格式的語句:

type varName;
           

也可以在聲明的同時,對它初始化:

type varName = initialValue;
           

【注】初始化一個對象時,使用:

ClassName instanceName = new ClassName();

常量

常量在程式運作時是不能被修改的。

字面值常量

字面值常量,就是直接在程式裡寫一個值,比如

100

,

-100.0

,

'A'

這個東西很好了解,特殊的已經在上面的内置類型表格中有說明了。

字面值常量可以賦給任何内置類型的變量。

聲明常量

我們也可以像聲明變量一樣聲明一個常量。

在 Java 中,使用

final

關鍵字來修飾常量,聲明方式和變量類似:

final double PI = 3.1415927;
           

按照慣例,常量名應該用全部大寫的名稱表示。

字元串常量

和其他語言一樣,Java的字元串常量也是包含在兩個引号之間的字元序列,其中可以使用轉義字元,也可以含有Unicode字元:

"Hello World"
"two\nlines"
"\"This is in quotes\""
"\u0001"
           

常用的轉義字元如下:

符号 字元含義

\n

換行 (0x0a)

\r

回車 (0x0d)

\f

換頁符(0x0c)

\b

倒退 (0x08)

\0

空字元 (0x20)

\t

制表符

\"

雙引号

\'

單引号

\\

反斜杠

\ddd

八進制字元 (ddd)

\uxxxx

16進制Unicode字元 (xxxx)

類型轉換

Java 中類型的轉換有以下規則:

  1. 不能對boolean類型進行類型轉換。
  2. 不能把對象類型轉換成不相關類的對象。
  3. 在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。
  4. 轉換過程中可能導緻溢出或損失精度。
  5. 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入。

自動類型轉換

在自動類型轉換中,類型總是從低級到進階:

低  ---------------------------------------->  高

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

⚠️【注意】在進行整數運算時,如果是兩個比int類型小的類型做運算,java在編譯的時候就會将它們統一強轉成int類型。當有比int類型大的類型運算時,會自動轉換成它們中最大類型那個。

強制類型轉換

通過下面這種語句可以強制類型轉化:

(type)value
           

⚠️【注意】轉換的資料類型必須是相容的。

資料類型轉換的補充

1、包裝類過渡類型轉換

一般情況下,我們首先聲明一個變量,然後生成一個對應的包裝類,就可以利用包裝類的各種方法進行類型轉換了。

例如:

當希望把float型轉換為double型時:

float f1 = 100.00f;
Float F1 = new Float(f1);
double d1 = F1.doubleValue();     //F1.doubleValue()為Float類的傳回double值型的方法
           

簡單類型的變量轉換為相應的包裝類,可以利用包裝類的構造函數。

即:

Boolean(boolean value)、Character(char value)

Integer(int value)

Long(long value)

Float(float value)

Double(double value)

而在各個包裝類中,總有形為

××Value()

的方法,來得到其對應的簡單類型資料。

利用這種方法,也可以實作不同數值型變量間的轉換。

例如,對于一個雙精度實型類,

intValue()

可以得到其對應的整型變量,而

doubleValue()

可以得到其對應的雙精度實型變量。

2、字元串與其它類型間的轉換

其它類型向字元串的轉換

  1. 調用類的串轉換方法:

    X.toString();

  2. 自動轉換:

    X+"";

  3. 使用String的方法:

    String.valueOf(X);

⚠️【注意】在使用

2

時需要注意:任何字元類型與字元串相加,結果都是拼接。

例如:

String s = null;
s += "hello";
System.out.println(s);  // 輸出 nullhello
           

字元串作為值,向其它類型的轉換

  1. 先轉換成相應的封裝器執行個體,再調用對應的方法轉換成其它類型

例如,字元串

"32.1"

轉換

double

型的值的格式為:

new Float("32.1").doubleValue()

也可以用:

Double.valueOf("32.1").doubleValue()

  1. 靜态parseXXX方法
String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );
           
總結
  1. 隻有 boolean 不參與資料類型的轉換
  2. 自動類型的轉換:
    • 常數在表數範圍内是能夠自動類型轉換的
    • 資料範圍小的能夠自動資料類型大的轉換
    • 由浮點類型轉換成整數類型不會自動轉換的,不然将會丢失精度。
    • 引用類型能夠自動轉換為父類的
    • 基本類型和它們包裝類型是能夠互相轉換的
  3. 強制類型轉換:用圓括号括起來目标類型,置于變量前

本文由 CDFMLR 原創,收錄于個人首頁 https://clownote.github.io,并同時釋出到 CSDN。本人不保證 CSDN 排版正确,敬請通路 clownote 以獲得良好的閱讀體驗。