[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > Java > 正文
JAVA入門教程: 第 二 章 數 據 類 型
http://www.cnjavaclub.com (2001-04-16 15:08:15)

§ 2.1數 據 類 型

數 據 類 型 指 明 了 變 量 或 表 達 式 的 狀 態 和 行 為 。 Java的 數
據 類 型 如 下 所 示 :

Java不 支 持 C、 C++中 的 指 針 類 型、結 構 體 類 型 和 共 用 體 類 型。

本 章 我 們 主 要 介 紹 簡 單 類 型 。

§ 2.2常 量 與 變 量

一 、 常 量

Java中 的 常 量 值 是 用 文 字 串 表 示 的 ,它 區 分 為 不 同 的 類 型
,如 整 型 常 量 123,實 型 常 量 1.23,字 符 常 量 ‘ a’ ,布 爾 常 量 true、
false以 及 字 符 串 常 量 "This is a constant string."。

與 C、 C++不 同 ,Java中 不 能 通 過 #define命 令 把 一 個 標 識 符 定
義 為 常 量 ,而 是 用 關 鍵 字 final來 實 現 ,如 final double PI=3.14159( 有
關 final的 用 法 見 [6.2.3])。

二 、 變 量

變 量 是 Java程 序 中 的 基 本 存 儲 單 元 ,它 的 定 義 包 括 變 量 名
、 變 量 類 型 和 作 用 域 幾 個 部 分 。

 變 量 名 是 一 個 合 法 的 標 識 符 ,它 是 字 母 、 數 字 、 下 劃
線 或 美 元 符 " "的 序 列 ,Java對 變 量 名 區 分 大 小 寫 ,變 量 名 不 能
以 數 字 開 頭 ,而 且 不 能 為 保 留 字 。 合 法 的 變 量 名 如 :myName、
value-1、 dollar 等 。 非 法 的 變 量 名 如 :2mail、 room#、 class (保 留
字 )等 ,變 量 名 應 具 有 一 定 的 含 義 ,以 增 加 程 序 的 可 讀 性 。

 變 量 類 型 可 以 為 上 面 所 說 的 任 意 一 種 數 據 類 型 。

 變 量 的 作 用 域 指 明 可 訪 問 該 變 量 的 一 段 代 碼 。 聲 明 一
個 變 量 的 同 時 也 就 指 明 了 變 量 的 作 用 域 。 按 作 用 域 來 分 ,變 量
可 以 有 下 面 幾 種 :局 部 變 量 、 類 變 量 、方 法 參 數 、 例 外 處 理 參
數 。 局 部 變 量 在 方 法 或 方 法 的 一 塊 代 碼 中 聲 明 ,它 的 作 用 域
為 它 所 在 的 代 碼 塊 (整 個 方 法 或 方 法 中 的 某 塊 代 碼 )。

類 變 量 在 類 中 聲 明 ,而 不 是 在 類 的 某 個 方 法 中 聲 明 ,它 的
作 用 域 是 整 個 類 。

方 法 參 數 傳 遞 給 方 法 ,它 的 作 用 域 就 是 這 個 方 法 。

例 外 處 理 參 數 傳 遞 給 例 外 處 理 代 碼 ,它 的 作 用 域 就 是 例
外 處 理 部 分 。

在 一 個 確 定 的 域 中 ,變 量 名 應 該 是 唯 一 的 。 通 常 ,一 個 域
用 大 括 號 {}來 劃 定 。

有 關 類 變 量 、 參 數 傳 遞 以 及 例 外 處 理 將 分 別 在 [6.7.1]、
[6.2 .4]和 第 八 章 中 講 述。

 變 量 的 聲 明 格 式 為 :
type identifier[=value][,identifier[=value]… ];

例 如 : int a, b, c;
double d1, d2=0.0;

其 中 ,多 個 變 量 間 用 逗 號 隔 開 ,d2=0.0對 實 型 變 量 d2賦 初 值
0.0, 只 有 局 部 變 量 和 類 變 量 是 可 以 這 樣 賦 初 值 的 ,而 方 法 參 數
和 例 外 處 理 參 數 的 變 量 值 是 由 調 用 者 給 出 的 。

§ 2.3整 型 數 據

一 、 整 型 常 量 :

與 C,C++相 同 ,Java的 整 常 數 有 三 種 形 式 :

 十 進 制 整 數 ,如 123,-456,0

 八 進 制 整 數 ,以 0開 頭 ,如 0123表 示 十 進 制 數 83,-011表 示 十
進 制 數 -9。

 十 六 進 制 整 數 ,以 0x或 0X開 頭 ,如 0x123表 示 十 進 制 數
291,-0X12 表 示 十 進 制 數 -18。

整 型 常 量 在 機 器 中 佔 32位 ,具 有 int型 的 值 ,對  long型 值 ,則
要 在 數 字  加 L或 l,如 123L表 示 一 個 長 整 數 ,它 在 機 器 中 佔 64位 。

二 、 整 型 變 量 :

整 型 變 量 的 類 型 有 byte、 short、 int、 long四 種 。 下 表 列 出
各 類 型 所 在 內 存 的 位 數 和 其 表 示 范 圍 。

(未 完 待 續 )

int類 型 是 最 常 使 用 的 一 種 整 數 類 型 。 它 所 表 示 的 數 據 范 圍 足 夠 大 ,而 且 適 合  32位 、
64位 處 理 器 。 但 對  大 型 計 算 ,常 會 遇 到 很 大 的 整 數 ,超 出 int類 型 所 表 示 的 范 圍 ,這 時 要 使 用
long類 型 。

由  不 同 的 機 器 對  多 字 節 數 據 的 存 儲 方 式 不 同 ,可 能 是 從 低 字 節 向 高 字 節 存 儲 ,也
可 能 是 從 高 字 節 向 低 字 節 存 儲 ,這 樣 ,在 分 析 網 絡 協 議 或 文 件 格 式 時 ,為 了 解 決 不 同 機 器 上
的 字 節 存 儲 順 序 問 題 ,用 byte類 型 來 表 示 數 據 是 合 適 的 。 而 通 常 情 況 下 ,由  其 表 示 的 數 據
范 圍 很 小 ,容 易 造 成 溢 出 ,應 避 免 使 用 。

short類 型 則 很 少 使 用 ,它 限 制 數 據 的 存 儲 為 先 高 字 節 , 低 字 節 ,這 樣 在 某 些 機 器 中 會 出
錯 。

三 、 整 型 變 量 的 定 義 ,如 :

byte b; //指定變量b為byte型
short s; //指定變量s為short型
int i; //指定變量i為int型
long l; //指定變量l為long型

§ 2.4浮 點 型 (實 型 )數 據

一 、 實 型 常 量

與 C,C++相 同 ,Java的 實 常 數 有 兩 種 表 示 形 式 :

 十 進 制 數 形 式 ,由 數 字 和 小 數 點 組 成 ,且 必 須 有 小 數 點 ,如 0.123, .123, 123.,123.0

 科 學 計 數 法 形 式 。 如 :123e3或 123E3,其 中 e或 E之 前 必 須 有 數 字 ,且 e或 E 面 的 指 數 必 須
為 整 數 。

實 常 數 在 機 器 中 佔 64位 ,具 有 double型 的 值 。 對  float型 的 值 ,則 要 在 數 字  加 f或 F,如
12.3F,它 在 機 器 中 佔 32位 ,且 表 示 精 度 較 低 。

二 、 實 型 變 量

實 型 變 量 的 類 型 有 float和 double兩 種 ,下 表 列 出 這 兩 種 類 型 所 佔 內 存 的 位 數 和 其 表 示 范
圍 。

數據類型 所佔位數 數的范圍
float 32 3.4e-038∼3.4e+038
double 64 1.7e-308∼1.7e+308

雙 精 度 類 型 double比 單 精 度 類 型 float具 有 更 高 的 精 度 和 更 大 的 表 示 范 圍 ,常 常 使 用 。

三 、 實 型 變 量 定 義 ,如

float f; //指 定 變 量 f為 float型

double d; //指 定 變 量 d為 double型

[注 ]與 C、 C++不 同 ,Java中 沒 有 無 符 號 型 整 數 ,而 且 明 確 規 定 了 整 型 和 浮 點 型 數 據 所 佔 的
內 存 字 節 數 ,這 樣 就 保 証 了 安 全 性 、 魯 棒 性 和 平 台 無 關 性 。

§ 2.5字 符 型 數 據

一 、 字 符 常 量

字 符 常 量 是 用 單 引 號 括 起 來 的 一 個 字 符 ,如 ‘ a’ ,‘ A’ 。 另 外 ,與 C、 C++相 同 ,Java也 提 供 轉
義 字 符 ,以 反 斜 槓 (\)開 頭 ,將 其  的 字 符 轉 變 為 另 外 的 含 義 ,下 表 列 出 了 Java中 的 轉 義 字 符 。

與 C、 C++不 同 ,Java中 的 字 符 型 數 據 是 16位 無 符 號 型 數 據 ,它 表 示 Unicode集 ,而 不 僅 僅 是
ASCII集 ,例 如 \u0061表 示 ISO拉 丁 碼 的 ‘ a’ 。

轉義字符 描述
\ddd 1到3位8進制數據所表示的字符(ddd)
\uxxxx 1到4位16進制數所表示的字符(xxxx)
\' 單引號字符
\\ 反斜槓字符
\r 回車
\n 換行
\f 走紙換頁
\t 橫向跳格
\b 退格

二 、 字 符 型 變 量

字 符 型 變 量 的 類 型 為 char,它 在 機 器 中 佔 16位 ,其 范 圍 為 0∼ 65 535。 字 符 型 變 量 的 定 義 如
:

char c='a'; //指 定 變 量 c為 char型 ,且 賦 初 值 為 'a'

與 C、 C++不 同 ,Java中 的 字 符 型 數 據 不 能 用 作 整 數 ,因 為 Java不 提 供 無 符 號 整 數 類 型 。 但
是 同 樣 可 以 把 它 當 作 整 數 數 據 來 操 作 。

例 如 :

int three=3;

char one='1';

char four=(char)(three+one);//four='4'

上 例 中 ,在 計 算 加 法 時 ,字 符 型 變 量 one被 轉 化 為 整 數 ,進 行 相 加 ,最  把 結 果 又 轉 化 為 字
符 型 。

三 、 字 符 串 常 量

與 C、 C++相 同 ,Java的 字 符 串 常 量 是 用 雙 引 號 ("")括 起 來 的 一 串 字 符 ,如 "This is a string.\n"。 但
不 同 的 是 ,Java中 的 字 符 串 常 量 是 作 為 String類 的 一 個 對 象 來 處 理 的 ,而 不 是 一 個 數 據 。 有 關
類 String,我 們 將 在 第 七 章 講 述 。

§ 2.6布 爾 型 數 據

布 爾 型 數 據 只 有 兩 個 值 ,true和 false,且 它 們 不 對 應  任 何 整 數 值 。 在 流 控 制 中 常 用 到 它


布 爾 型 變 量 的 定 義 如 :

boolean b=true; //定 義 b為 布 爾 型 變 量 ,且 初 值 為 true

§ 2.7舉 例

例 2.1.下 例 中 用 到 了 前 面 提 到 的 數 據 類 型 ,並 通 過 屏 幕 顯 示 它 們 的 值 。

public class SimpleTypes{
public static void main( String args[] ){
byte b=0x55;
short s=0x55ff;
int i=1000000;
long l=0xfffL;
char c='c';
float f=0.23F;
double d=0.7E-3;
boolean bool=true;
System.out.println("b = "+b);
System.out.println("s = "+s);
System.out.println("i = "+i);
System.out.println("l = "+l);
System.out.println("c = "+c);
System.out.println("f = "+f);
System.out.println("d = "+d);
System.out.println("bool = "+bool);
}
}
編譯並運行該程序,輸出結果為:
C:\>java SimpleTypes
b = 85
s = 22015
i = 1000000
l = 4095
c = c
f = 0.23
d = 0.0007
bool = true

§ 2.8 各 類 數 值 型 數 據 間 的 混 合 運 算

一 、 自 動 類 型 轉 換

整 型 、 實 型 、 字 符 型 數 據 可 以 混 合 運 算 。 運 算 中 ,不 同 類 型 的 數 據 先 轉 化 為 同 一 類 型
,然  進 行 運 算 。 轉 換 從 低 級 到 高 級 ,如 下 圖 :

轉 換 規 則 為 :

 (byte或 short) op int→ int

 (byte或 short或 int) op long→ long

 (byte或 short或 int或 long) op float→ float

 (byte或 short或 int或 long或 float) op double→ double

 char op int→ int

其 中 ,箭 頭 左 邊 表 示 參 與 運 算 的 數 據 類 型 ,op為 運 算 符 (如 加 、 減 、 乘 、 除 等 ),右 邊 表 示
轉 換 成 的 進 行 運 算 的 數 據 類 型 。

例2.2
public class Promotion{
public static void main( String args[ ] ){
byte b=10;
char c='a';
int i=90;
long l=555L;
float f=3.5f;
double d=1.234;
float f1=f*b;
// float * byte -> float
int i1=c+i;
// char + int -> int
long l1=l+i1;
// long + int ->ling
double d1=f1/i1-d;
// float / int ->float, float - double -> double}
}

二 、 強 制 類 型 轉 換

高 級 數 據 要 轉 換 成 低 級 數 據 ,需 用 到 強 制 類 型 轉 換 ,如 :

int i;

byte b=(byte)i; //把 int型 變 量 i強 制 轉 換 為 byte型

這 種 使 用 可 能 會 導 致 溢 出 或 精 度 的 下 降 ,最 好 不 要 使 用 。  (未 完 待 續 )

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
JAVA入門教程: 第 六 章 對 象、類、包和接口 (2001-04-16 15:11:52)
JAVA入門教程: 第 五 章 數 組 (2001-04-16 15:10:37)
JAVA入門教程: 第 四 章 流 控 制 (2001-04-16 15:10:00)
JAVA入門教程: 第 三 章 運算符和表達式 (2001-04-16 15:09:16)
JAVA入門教程: 第 二 章 數 據 類 型 (2001-04-16 15:08:15)
JAVA入門教程: 第 一 章  Java概述 (2001-04-16 15:07:00)
 

★  樊強制作 歡迎分享  ★