Java关键字

关键字对Java技术编译器有特殊的含义，它们可标识数据类型名或程序构造（construct）名。

以下是有关关键字的重要注意事项：

true、false和null为小写，而不是象在C++语言中那样为大写。严格地讲，它们不是关键字，而是文字。然而，这种区别是理论上的。

无sizeof运算符；所有类型的长度和表示是固定的，不依赖执行。

goto和const不是Java编程语言中使用的关键字。

下表列出了使用在Java编程语言中的关键字。

abstract | do | implements | private | throw |
boolean | double | import | protected | throws |
break | else | instance | of | public | transient
byte | extends | int | return | true |
case | false | interface | short | try |
catch | final | long | static | void |
char | finally | native | super | volatile |
class | float | new | switch | while |
continue | for | null | synchronized |  |
default | if | package | this |  |

## 基本Java类型

### 1.原始类型

Java编程语言为八个原始数据类型和一个特殊类型定义了文字值。原始类型可分为四种：

逻辑类 boolean

文本类 char

整数类 byte, short, int, long

浮点类 double, float

### 2.基本Java类型

#### （1）逻辑类──boolean

逻辑值有两种状态，即人们经常使用的“on”和“off” 或“true”和“false”或“yes”和“no”，这样的值是用boolean类型来表示的。boolean有两个文字值，即true和false。以下是一个有关boolean类型变量的声明和初始化：

boolean truth = true; //定义布尔逻辑变量

注意：

在整数类型和boolean类型之间无转换计算。有些语言（特别值得强调的是C和C++）允许将数字值转换成逻辑值， 这在Java编程语言中是不允许的；boolean类型只允许使用boolean值。

#### （2）文本类──char和String

使用char类型可表示单个字符。一个char代表一个16-bit无符号的（不分正负的）Unicode字符。一个char文字必须包含在单引号内(‘’)。

‘a’

‘\t’ 一个制表符

‘\u????’ 一个特殊的Unicode字符。????应严格按照四个16进制数字进行替换

String不是原始类型，而是一个类（class），它被用来表示字符序列。字符本身符合Unicode标准，且上述char类型的反斜线符号适用于String。与C和C++不同，String不能用 \0作为结束。

String的文字应用双引号封闭，如下所示：

“张三，你好！”

Char和String类型变量的声明和初始化如下所示：

char ch = ‘A’; // 定义字符变量

char ch1,ch2 ; // 定义两个字符变量

// 定义字符串并赋值

String greeting = “Good Morning !! \n” ;

String err_msg = “Record Not Found !” ;

String str1,str2 ; // 定义两个字符串

#### 3.整数类──byte, short, int, long

在Java编程语言中有四种整数类型，每种类型可使用关键字byte, short, int和long中的任意一个进行声明。整数类型的文字可使用十进制、八进制和16进制表示，如下所示：

十进制值是2

077首位的0表示这是一个八进制的数值

0xBAAC首位的0x表示这是一个16进制的数值

注意：

所有 Java 编程语言中的整数类型都是带符号的数字。

整数类──byte, short, int, long

整数类文字属int类型，除非在其后直接跟着一个字母“L”。L表示一个long值。请注意，在Java编程语言中使用大写或小写L同样都是有效的，但由于小写l与数字1容易混淆，因而，使用小写不是一个明智的选择。上述文字的long的形式如下：

2L十进制值是2，是一个long

077L首位的0表示这是一个八进制的数值

0xBAACL前缀0x表示这是一个16进制的数值

四个整数类型的长度和范围如表2-1所示。范围的表示是按Java编程语言规范定义的且不依赖于平台。

表 整数数据类型-范围

整数长度 | 名称或类型 | 范 围
8 bits | Byte | -2 7 ... 2 7 -1
16 bits | Short | -2 15 ... 2 15 -1
32 bit | Int | -2 31 ... 2 31 -1
64 bits | Long | -2 63 ... 2 63 -1

#### 4.浮点──float和double

浮点变量可用关键字float或double来声明，下面是浮点数的示例。如果一个数字文字包括小数点或指数部分，或者在数字后带有字母F或f（float）、D或d（double），则该数字文字为浮点。

14d一个简单的浮点值（a double）

02E23 一个大浮点值

5.718F一个简单的float长度值

123.2E+306D一个大的带冗余D的double值

表 浮点数据类型──范围

浮点长度 | 名称或类型
32 bits | Float
64 bits | double

注意：

浮点文字除非明确声明为 float，否则为 double

## 变量、声明和赋值

Java技术规范的浮点数的格式是由电力电子工程师学会（IEEE）754定义的，并且是独立于平台的。下列程序显示了如何为整数、浮点、boolean、字符和string类型变量声明和赋值。

1. public class Assign {

2. public static void main(String args []) {

3. int x, y; // 定义整数

4.float z = 3.214f; // 定义浮点数

5.double w = 3.1415; //定义双精度数

6.boolean truth = true; // 定义逻辑值

7.char c; // 定义字符变量

8.String str; //定义字符串

9.String str1 = “bye”; // 定义字符串，有初始值

10.c = ‘A’; // 给字符变量赋值

11.str = “Hi out there!”; // 给字符串赋值

12.x = 6;

13.y = 1000; // 给整数赋值

14....

15.}

16.}

非法赋值举例：

y = 3.1415926; // 3.1415926 不是整数

w = 175,000; // 不能使用( , )

z = 3.14156 ; //不能给浮点数赋双精度值

## 表达式

### 变量和作用域

你已经看到了两种变量的描述方法：

原始类型变量和引用类型变量。

你也看到了变量被声明的位置：在方法内(方法是面向对象的术语，它可引用函数或子程序，例如：main())或在方法外但在类定义之内。变量也可被定义为方法参数或构造函数参数。

在方法内定义的参数被称为局部(local)变量，有时也被用为自动（automatic）、临时（temporary）或栈（stack）变量。

在方法外定义的变量是在使用new Xxxx ()调用构造一个对象时被创建。在构造一个对象时，可创建两种变量。

一是类变量，它是用static关键字来声明的；只要需要对象，类变量就将存在。

二是实例变量，它不需用static关键字来声明；只要对象被当作引用，实例变量就将存在。实例变量有时也被用作成员变量，因为它们是类的成员。

方法参数变量定义在一个方法调用中传送的自变量，每次当方法被调用时，一个新的变量就被创建并且一直存在直到程序的运行跳离了该方法。

当执行进入一个方法时，局部变量被创建，当执行离开该方法时，局部变量被取消。

因而，局部变量有时也被引用为“临时或自动”变量。在成员函数内定义的变量对该成员变量是“局部的”，因而，你可以在几个成员函数中使用相同的变量名而代表不同的变量。 该方法的应用如下所示：

1. class OurClass {

2. int i; // 类的变量

3. int firstMethod() {

4. int j=0; //本地变量

5. //这里的代码可以访问 i和j

6. ...

7. return 1;

8. } // 标记结束 firstMethod()

9. int secondMethod(float f) { //带参数的方法

10. int j=0; //本地变量

11. // j 虽然定义在 firstMethod() 中，但这里它的作用范围仅限定在 secondMethod() 中

12. // 这里的代码可以访问两个方法的 j

13. ....

14. return 2;

15. } //标记结束 secondMethod()

16. } // 标记结束 OurClass

### 分号、块和空白

在Java编程语言中，语句是一行由分号(；)终止的代码。

例如：

totals=a+b+c+d+e+f；

与下式相同

total=a+b+c+

d+e+f；

一个块(block)或一个复合语句是以上括号和下括号（{}）为边界的语句集合；块语句也被用来组合属于某个类的语句。

语句块可被嵌套。HelloWorldApp类由main方法构成，这个方法就是一个语句块，它是一个独立单元，单元本身可作为在类HelloWorldApp块中的一组事务之一。

其它一些块语句或组的例子如下：

1. //语句块

2. {

3. x = y + 1;

4. y = x + 1;

5. }

6.

7. // 类的定义

8. public class MyDate {

9. int day;

10. int month;

11. int year;

12. }

13. //语句块的例子

14. while ( i < large ) {

15. a = a + i;

16. if ( a == max ) {

17. b = b + a; // 嵌入的块

18. a = 0;

19. }

20. }

在源代码元素之间允许空白，空白的数量不限。空白(包括空格、tabs和新行)可以改善你的对源代码的视觉感受。

{

int x;

x = 23 * 54;

}

{

int x

x=23+54;

}

### Java运算符

Java语言的表达式和C语言非常类似。运算符(operator)优先级如下表所示：

表 运算符优先级

最高 |  |  |
() | [] | . |
++ | -- | ~ | !
* | / | % |
+ | - |  |
>> | >>> | << |
> | >= | < | <=
== | != |  |
& |  |  |
^ |  |  |
&& |  |  |
?: |  |  |
= | op= |  |
最低 |  |  |

整数运算符在整数运算时，如果操作数是long类型，则运算结果是long类型，否则为int类型，绝不会是byte，short或char型。这样，如果变量i被声明为short或byte，i+1的结果会是int。如果结果超过该类型的取值范围，则按该类型的最大值取模。

(1)单目整数运算符

运算符操作单目非“-”、位补码“～”、加1“++” 、减1“- -”。“++”运算符用于表示直接加1操作。“- -”运算符用于表示减1操作。++和--运算符既可以作为前缀运算符，也可以用做后缀运算符。

(2)双目整数运算符

运算符操作加“+”、减“-”、乘“*”、除“\”、取模“%”、位与“&”、位或“｜”、位异或“^”、左移“<<”、右移“>>(带 符 号) >>>”添零右移整数除法按零舍入。除法和取模遵守以下等式：( a/b ) * b + ( a%b ) = = a 整数算术运算的异常是由于除零或按零取模造成的。

单目运算符“!”是布尔非。单目运算符“＆”，“｜”和“^”是逻辑运算符，为避免右侧操作数冗余求值，用户可以使用短路求值运算符“＆＆”和“||”。用户可以使用“= =”和“!=”，赋值运算符也可以用“&=”、“|=”、“^=”。

(3)表达式

表达式就是运算符、操作数以及方法调用的序列，用来说明某个计算过程并返回计算结果。如下面的几个例子都是表达式：

d＝(a＋b)*c

c＝a＋b

(a==b)

表达式可以嵌套，如3+8*(5*n-1)。

(4)表达式优先级

表达式有运算优先级。当不同优先级的运算符进行操作时，总是先做优先级高的操作。表达式的优先级也就是运算符的优先级。如：

result=a+b*(c-1)

由于括号优先级最高，所以先计算括号里的内容c-1。剩下的运算符中*优先级最高，然后将c-1的结果与b进行*操作，其结果再与a相加，最后将结果赋给result，整个表达式就计算完毕。

## Java编码约定

Variables──所有变量都可大小写混用，但首字符应小写。词由大写字母分隔，限制用下划线，限制使用美元符号（$），因为这个字符对内部类有特殊的含义。

currentCustomer

变量应该代表一定的含义，通过它可传达给读者使用它的意图。尽量避免使用单个字符， 除非是临时“即用即扔”的变量（例如，用i, j, k作为循环控制变量）。

constant──原始常量应该全部大写并用下划线将词分隔；对象常量可大小写混用。

HEAD-COUNT

MAXIMUM-SIZE

control structures──当语句是控制结构的一部分时，即使是单个语句也应使用括号（｛｝）将语句封闭。例如：

if(condition) ｛

do something

｝else｛

do something else

｝

spacing── 每行只写一个语句并使用四个缩进的空格使你的代码更易读。

comments──用注释来说明那些不明显的代码段落；对一般注释使用 //分隔符， 而大段的代码可使用 /*···*/分隔符。使用 /**···*/将注释形成文档，并输入给javadoc以生成HTML代码文档。

// A comment that takes up only one line.

/* Comments that continue past one line and take up space on multiple lines...*/

/** A comment for documentation purposes.

@see Another class for more information*/

Java编程语言的一些编码约定是：

1) classes──类名应该是名词，大小写可混用，但首字母应大写。例如：

l classAccountBook

l classComplexVariable

2) interface──界面名大小写规则与类名相同。

l nterfaceAccount

method──方法名应该是动词，大小写可混用，但首字母应小写。在每个方法名内，大写字母将词分隔并限制使用下划线。例如：

l balanceAccount（）

l addComplex （）