⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java语言规格说明 .txt

📁 Java语言规格说明(译自Java language specification, 略加详述)
💻 TXT
字号:

        Java语言规格说明(译自Java language specification, 略加详述)

1.程序结构
Java语言的源程序代码由一个或多个编译单元(compilation unit)组
成,每个编译单元只能包含下列内容(空格和注释除外):
    * 一个程序包语句(package statement )
    * 引入语句(import statements)
    * 类的声明(class declarations)
    * 界面声明(interface declarations)
每个Java的编译单元可包含多个类或界面,但是每个编译单元却至
多有一个类或者界面是公共的。
Java 的源程序代码被编译之后,便产生了Java字节代码(bytecode)。
Java的字节代码由一些不依赖于机器的指令组成,这些指令能被Java的
运行系统(runtime system)有效地解释。Java的运行系统工作起来如同一
台虚拟机。
在当前的Java实现中,每个编译单元就是一个以.java为后缀的文件。
每个编译单元有若干个类,编译后,每个类生成一个.class文件。.class
文件是Java虚机器码?
2. 词法问题
在编译的过程中,Java源程序代码中的字符被划分为一系列的标记
(token)。Java编译器可以识别五种标记: 标识符、关键字、字面量、运
算符以及特殊分隔符。注释以及诸如空格、制表符、换行符等字符 ,都
不属于标识之列,但他们却常被用来分隔标记。
Java程序的编写采用泛代码Unicode字符集,若采用其它的字符集,
则需在编译前转换成Unicode。

2.1 注释
    Java语言提供了3种形式的注释:
    //text      从//到本行结束的所有字符均作为注释而被编译器忽略。
    /* text */   从/*到*/ 间的所有字符会被编译器忽略。
/** text */
当这类注释出现在任何声明之前时将会作特殊处理,它们不能再用
在代码的任何地方。这类注释意味着被括起来的正文部分,应该作为声
明项目的描述,而被包含在自动产生的文档中。

2.2  标识符
标识符的首字符必须是一个字母,下划线("_")或美元符号("$")。 后
面的字符也可是数字0-9。 Java使用泛代码字符集,为了便于识别好一
合法标识符,下面列出它的“字母”:
   * 大写字母“A”~“Z”
    * 小写字母“a”~“z”
    * 泛代码(Unicode)中所有字符编码在十六进制数00C0之前的字
符。标识符中,首字母后的字符可以是任意的。当然,Unicode区段中
那些被保留作特殊字符的除外。
由此,“garton”及“MjΦlner”都是合法标识符,但是,包括
诸如“π”的字符串却不是合法的。
为了取得更多的有关泛代码标准的信息,请参阅“The Unicode
Standard”,“World Wide Character Encoding version 1.0,volumes 1 &
2”,Unicode公司的FTP地址是unicode.org。

2.3 关键字
     下面的标识符被保留用作关键字,他们不能作任何其它的用途。
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 整型字面量
整数可有三种表示形式: 十进制,八进制和十六进制。一个十进制
整型字面量由一系列的数字组成,但它的第一个数字不能是0(有时十进
制数字也可象下面讲的那样加后缀)。整数也可表达成八进制或十六进制
形式。以0开头的整型字面量,意味着它是一个十六进制的。十六进制
整数可以包括数字0-9以及字母a-f及A-F。八进制整数中则只能是出现
数字0-7。在超过32位所能表示的范围之前,整型字面量的类型即为int,
否则为long型。一个整型字面量可通过加后缀L或l而强迫成long型。
    下面的均为合法的整型字面量。
    2   2L   0777

2.4.2 浮点字面量
一个浮点字面量可包括以下部分: 一个十进制整数,一个小数点“.”,
小数部分(另外一个十进制整数),指数部分,一个类型后缀。指数部分
是一个e或E后跟一个整数。浮点字面量至少包含有一个数字,外加或
者一个小数点或者一个e(或E),下面举一些浮点字面量的例子:
    3.1415    3.1E12    .1e12   2E12
就象在后面描述的那样,Java语言有两种浮点类型: float 及
double,用户可按以下写法区分:
    2.0d或2.0D        double 型
    2.0f或2.0F或2.0   float型

2.4.3 布尔字面量
   布尔(boolean)字面量有两个值: true及false。

2.4.4 字符字面量
字符字面量是一个由单引号括起的字符(或者是由一组字符来表述
一个字符)。字符属于char类型,并且均从泛代码字符集中得来。而下面
列出的转义序列则用来描述一些非图形字符,它们以反斜杠“\”开始以
作转义用。

续行符头       <newline>         \
换行           NL(LF)           \n
垂直制表符     HT               \t
退格           BS               \b
回车           CR               \r
走纸换页       FF               \f
反斜杠         \                 \\
单引号         '                  \'
双引号         "                  \"
八进制数      0ddd              \ddd
十六进制数    0xdd              \xdd
泛代码字符    0xdddd           \udddd

2.4.5 串字面量
串字面量是双引号引起的零个或多个字符的序列。每个串字面量被
看作是一个串对象,而并非是一个字符的数组,例如“abc”创建了一
个新的串类的实例。下面的都是合法的串字面量:
    " "       \\空串
    "\" "     \\只包含一个双引号的串
    "This is a string"
    "This is a \
         two-line string"

2.5  运算符及特殊分隔符
   下面这些字符在Java源程序中作运算符或分隔符用:
   +  —  !  %   ^   &   *   |   ~   /  >   <
   (   )  {  }  [  ]  ; ?  :  ,· =
   另外,下面这些复合字符被用作运算符:
   ++    --   ==  <=   >=  !=  <<  >>
   >>>  +=   -=   *=  /=   &=  /=
   ^=  %=  <<=  >>=  >>>=  ‖   &&
   后面还要在运算符一节中作详细介绍。

3. 类型
任何一个变量或表达式都有一个类型,类型决定变量可能的取值范
围,决定对这些值允许的操作,以及这些操作的意义是什么。Java语言
中提供了内置定义类型,程序员也可以利用类及界面(interface)机制构造
新类型。
Java语言有两种类型: 简单类型和复合类型。简单类型指那些不能
再分割的原子类型。如:整型、浮点型、布尔型、字符型均为简单类型。
复合类型建立在简单类型的基础上。Java语言有三种复合类型:数组、
类及界面。在本节中,我们主要讨论简单类型及数组。

3.1 数值类型
3.1.1 整数类型
整数与C及C++中相似,但有两点区别: 其一,所有的整数类型
均是独立于机器的;其二,对某些传统的定义作出改变,以反映自C问
世以来所带来的变化,四种整数类型分别具有8位、16位、32位及64
位的宽度,并且均是有符号的(signed)。如下所示:
宽度
类型名
8
byte
16
short
32
int
64
long

一个变量的类型不会直接影响它的存储的分配,类型仅仅决定变量
的算术性质以及合法的取值范围。如果把一个超出合法范围的值赋给一
变量,那么这个值将是对合法值域取模后的值。

3.1.2 浮点类型
关键字float表示单精度(32位),而double则表示双精度(64位),两
个float型数运算的结果仍是float型,若有其中之一为double型,则结
果为double型。浮点运算及数据格式按IEEE754中的定义,细节问题请
参阅 “附录A: 浮点”中有关浮点实现的细节。
3.1.3 字符类型
Java全部使用泛代码字符集,因此char类型数据被定义成一个16
位的无符号整数。

3.2 布尔类型
当一个变量的取值或为ture或为false,或者是当一个方法的返回值为ture或false时,它?
嵌际遣级

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -