?? java語言規(guī)格說明.txt
字號:
Java語言規(guī)格說明(譯自Java language specification, 略加詳述)
1.程序結(jié)構(gòu)
Java語言的源程序代碼由一個或多個編譯單元(compilation unit)組
成,每個編譯單元只能包含下列內(nèi)容(空格和注釋除外):
* 一個程序包語句(package statement )
* 引入語句(import statements)
* 類的聲明(class declarations)
* 界面聲明(interface declarations)
每個Java的編譯單元可包含多個類或界面,但是每個編譯單元卻至
多有一個類或者界面是公共的。
Java 的源程序代碼被編譯之后,便產(chǎn)生了Java字節(jié)代碼(bytecode)。
Java的字節(jié)代碼由一些不依賴于機器的指令組成,這些指令能被Java的
運行系統(tǒng)(runtime system)有效地解釋。Java的運行系統(tǒng)工作起來如同一
臺虛擬機。
在當前的Java實現(xiàn)中,每個編譯單元就是一個以.java為后綴的文件。
每個編譯單元有若干個類,編譯后,每個類生成一個.class文件。.class
文件是Java虛機器碼。
2. 詞法問題
在編譯的過程中,Java源程序代碼中的字符被劃分為一系列的標記
(token)。Java編譯器可以識別五種標記: 標識符、關(guān)鍵字、字面量、運
算符以及特殊分隔符。注釋以及諸如空格、制表符、換行符等字符 ,都
不屬于標識之列,但他們卻常被用來分隔標記。
Java程序的編寫采用泛代碼Unicode字符集,若采用其它的字符集,
則需在編譯前轉(zhuǎn)換成Unicode。
2.1 注釋
Java語言提供了3種形式的注釋:
//text 從//到本行結(jié)束的所有字符均作為注釋而被編譯器忽略。
/* text */ 從/*到*/ 間的所有字符會被編譯器忽略。
/** text */
當這類注釋出現(xiàn)在任何聲明之前時將會作特殊處理,它們不能再用
在代碼的任何地方。這類注釋意味著被括起來的正文部分,應該作為聲
明項目的描述,而被包含在自動產(chǎn)生的文檔中。
2.2 標識符
標識符的首字符必須是一個字母,下劃線("_")或美元符號("$")。 后
面的字符也可是數(shù)字0-9。 Java使用泛代碼字符集,為了便于識別好一
合法標識符,下面列出它的“字母”:
* 大寫字母“A”~“Z”
* 小寫字母“a”~“z”
* 泛代碼(Unicode)中所有字符編碼在十六進制數(shù)00C0之前的字
符。標識符中,首字母后的字符可以是任意的。當然,Unicode區(qū)段中
那些被保留作特殊字符的除外。
由此,“garton”及“MjΦlner”都是合法標識符,但是,包括
諸如“π”的字符串卻不是合法的。
為了取得更多的有關(guān)泛代碼標準的信息,請參閱“The Unicode
Standard”,“World Wide Character Encoding version 1.0,volumes 1 &
2”,Unicode公司的FTP地址是unicode.org。
2.3 關(guān)鍵字
下面的標識符被保留用作關(guān)鍵字,他們不能作任何其它的用途。
abstract default goto* null synchronized
boolean do if package this
break double implements private threadsafe
byte else import protected throw
byvalve * extends instanceof public transient
case false int return true
catch final interface short try
char finally long static void
class float native super while
const * for new switch
continue
其中,加*標記后是被保留但當前卻未使用的。
2.4 字面量
字面量(literal)是某些類型值的基本表述,這些類型包括整型,浮點
型,布爾量,字符及字符串。
2.4.1 整型字面量
整數(shù)可有三種表示形式: 十進制,八進制和十六進制。一個十進制
整型字面量由一系列的數(shù)字組成,但它的第一個數(shù)字不能是0(有時十進
制數(shù)字也可象下面講的那樣加后綴)。整數(shù)也可表達成八進制或十六進制
形式。以0開頭的整型字面量,意味著它是一個十六進制的。十六進制
整數(shù)可以包括數(shù)字0-9以及字母a-f及A-F。八進制整數(shù)中則只能是出現(xiàn)
數(shù)字0-7。在超過32位所能表示的范圍之前,整型字面量的類型即為int,
否則為long型。一個整型字面量可通過加后綴L或l而強迫成long型。
下面的均為合法的整型字面量。
2 2L 0777
2.4.2 浮點字面量
一個浮點字面量可包括以下部分: 一個十進制整數(shù),一個小數(shù)點“.”,
小數(shù)部分(另外一個十進制整數(shù)),指數(shù)部分,一個類型后綴。指數(shù)部分
是一個e或E后跟一個整數(shù)。浮點字面量至少包含有一個數(shù)字,外加或
者一個小數(shù)點或者一個e(或E),下面舉一些浮點字面量的例子:
3.1415 3.1E12 .1e12 2E12
就象在后面描述的那樣,Java語言有兩種浮點類型: float 及
double,用戶可按以下寫法區(qū)分:
2.0d或2.0D double 型
2.0f或2.0F或2.0 float型
2.4.3 布爾字面量
布爾(boolean)字面量有兩個值: true及false。
2.4.4 字符字面量
字符字面量是一個由單引號括起的字符(或者是由一組字符來表述
一個字符)。字符屬于char類型,并且均從泛代碼字符集中得來。而下面
列出的轉(zhuǎn)義序列則用來描述一些非圖形字符,它們以反斜杠“\”開始以
作轉(zhuǎn)義用。
續(xù)行符頭 <newline> \
換行 NL(LF) \n
垂直制表符 HT \t
退格 BS \b
回車 CR \r
走紙換頁 FF \f
反斜杠 \ \\
單引號 ' \'
雙引號 " \"
八進制數(shù) 0ddd \ddd
十六進制數(shù) 0xdd \xdd
泛代碼字符 0xdddd \udddd
2.4.5 串字面量
串字面量是雙引號引起的零個或多個字符的序列。每個串字面量被
看作是一個串對象,而并非是一個字符的數(shù)組,例如“abc”創(chuàng)建了一
個新的串類的實例。下面的都是合法的串字面量:
" " \\空串
"\" " \\只包含一個雙引號的串
"This is a string"
"This is a \
two-line string"
2.5 運算符及特殊分隔符
下面這些字符在Java源程序中作運算符或分隔符用:
+ — ! % ^ & * | ~ / > <
( ) { } [ ] ; ? : ,· =
另外,下面這些復合字符被用作運算符:
++ -- == <= >= != << >>
>>> += -= *= /= &= /=
^= %= <<= >>= >>>= ‖ &&
后面還要在運算符一節(jié)中作詳細介紹。
3. 類型
任何一個變量或表達式都有一個類型,類型決定變量可能的取值范
圍,決定對這些值允許的操作,以及這些操作的意義是什么。Java語言
中提供了內(nèi)置定義類型,程序員也可以利用類及界面(interface)機制構(gòu)造
新類型。
Java語言有兩種類型: 簡單類型和復合類型。簡單類型指那些不能
再分割的原子類型。如:整型、浮點型、布爾型、字符型均為簡單類型。
復合類型建立在簡單類型的基礎(chǔ)上。Java語言有三種復合類型:數(shù)組、
類及界面。在本節(jié)中,我們主要討論簡單類型及數(shù)組。
3.1 數(shù)值類型
3.1.1 整數(shù)類型
整數(shù)與C及C++中相似,但有兩點區(qū)別: 其一,所有的整數(shù)類型
均是獨立于機器的;其二,對某些傳統(tǒng)的定義作出改變,以反映自C問
世以來所帶來的變化,四種整數(shù)類型分別具有8位、16位、32位及64
位的寬度,并且均是有符號的(signed)。如下所示:
寬度
類型名
8
byte
16
short
32
int
64
long
一個變量的類型不會直接影響它的存儲的分配,類型僅僅決定變量
的算術(shù)性質(zhì)以及合法的取值范圍。如果把一個超出合法范圍的值賦給一
變量,那么這個值將是對合法值域取模后的值。
3.1.2 浮點類型
關(guān)鍵字float表示單精度(32位),而double則表示雙精度(64位),兩
個float型數(shù)運算的結(jié)果仍是float型,若有其中之一為double型,則結(jié)
果為double型。浮點運算及數(shù)據(jù)格式按IEEE754中的定義,細節(jié)問題請
參閱 “附錄A: 浮點”中有關(guān)浮點實現(xiàn)的細節(jié)。
3.1.3 字符類型
Java全部使用泛代碼字符集,因此char類型數(shù)據(jù)被定義成一個16
位的無符號整數(shù)。
3.2 布爾類型
當一個變量的取值或為ture或為false,或者是當一個方法的返回值為ture或false時,它?nbsp;
嵌際遣級
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -