2.1JAVA语言的标识符和关键字

2.1.1标识符(Identifiers);

标识符:用来标识类名、变量名、方法名、类型名、数组名和文件名的有效字符序列称为标识符

标识符命名规定及约定:(Java严格区分大小写)

规定: 

u  标识符由字母、数字、下划线、$符以及所有在十六进制0xc0前的ASCII码组成。

u  首字母必须是字母、下划线或$符。

u  不允许与关键字重名

约定: 

u  常量用大写字母;

u  变量用小写字母开始;

u  类名以大写字母开始;

u  每个标识符中若有多个单词则单词间以大写字母分隔

2.1.2关键字(Keyword);

通常也称为保留字,是JAVA语言专用的标识符,它有其特定的语法含义。它们主要是类型标识符或控制语句中的关键字。例如:for、while、do、boolean、int、long、byte、short、double、float、char、class、public、if、else、break、continue、switch、case、default、static、void。编程人员不能用关键字作为自定义标识符。

2.1.3分隔符(Separator);

分隔符:是用来区分源程序中的基本成分,可使编译器确认代码在何处分隔。分隔符有注释、空白符和普通分隔符3种。

1、注释符(编译程序时忽略其中的所有注释)注释有3种类型:

(1)“//”单行注释:以//开始,最后以回车结束。可放在某个语句后面。

(2)“/*……*/”一行或多行注释:以/*开始,最后以*/结束,中间可以写多行。

(3)“/**……*/”Javadoc注释:以/**开始,最后以*/结束,这种注释可以用Javadoc命令生成一个HTML文档。书写程序时要有缩进(四个空格或一个制表位),也要写注释,代码与注释的比为5:2。

2.2数据类型

2.2.1常量和变量

1、常量:是指在程序的整个运行过程中其值始终保持不变的量。

在Java系统中,常量有两种形式:

Ø  以字面形式直接给出值的常量;

Ø  以关键字final定义的标识符常量即“符号常量”。

Java中常用的常量,按数据类型来分有以下五种:

整型、实型、字符型、布尔型、字符串型

Ø  整型常量:(十进制、八进制、十六进制)

u十进制整数:例如:34、230、-9,其中每个数字位必须是0~9.

u八进制整数:例如:010,034,其中每个数字位必须是0~7.程序中凡出现以数字0开头的数字序列,一律作为八进制数处理。

u十六进制整数:例如:0x80、0x1a、0X1A,其中每个数字必须是0~9、a~f、A~F。程序中凡出现以0x(或0X)开头的数字序列,一律作为十六进制数处理。

注意:在Java中,整型常量在机器中占32位,具有int型的值,对于long型值,则要在数字后加L或l,如123L表示一个长整数,它在机器中占64位。

Ø  实型常量:实型常量又称实数,它可以用两种形式表示,即小数形式和指数形式。

小数形式:是由数字和小数点组成的(注意:必有要有小数点),例如:0.12、.12、12.、0.0都是以十进制小数形式的合法实数。

指数形式:又称科学计数法,例如十进制小数0.0123,用指数形式可表示为1.23E-02。应注意,字母E或e前后必须要有数字,且E或e后面的指数必须为整数。例如,实数12E4、2.3E-7、.23E7、0E0都是合法的,而E4、3.2E0.9、5E、.e3都是不合法的。

注意:实数在机器中占64位,具有double型值。对于float型的值,则要在数字后加f或F,如12F,它在机器中占32位,且表示的精度较低。

Ø  布尔型常量:布尔型数据只有两个值true和false,且它们不对应于任何整数值。在控制语句中常用到它。

Ø  字符串常量:与C语言相同,JAVA语言的字符串常量是用双引号括起来的一串字符,如“A”、“Hello Java!!”。不同的是,JAVA语言的字符串常量是作为String类的一个对象来处理的,而不是一个数据。例如,本案例中输出日历时需要的“星期列表”定义如下:

   String Weeks=" Su Mo Tu WeTh Fr Sa  ";

2. 变量:是在程序的运行过程中其值可以被改变的量。JAVA中的变量遵从先定义后使用的原则。

变量的定义格式如下:[变量修饰符]   变量类型说明符  变量名 列表[=初值]

其中:

(1)变量修饰符是可选项,说明了变量的访问权限和某些规则,例如:public

(2)变量类型说明符确定了变量有取值范围以及对变量所能进行的操作关于变量类型将在后面详细讲解。

(3)变量列表由一个或多个变量名组成,当要定义多个变量时各变量之间用逗号分隔。

(4)初值是可选项,变量可以在定义的同时赋初值,也可以先定义在后续程序中赋初值。

案例中相关变量的定义如下:

   String Weeks=“ Su Mo Tu We Th Fr Sa  ”; //星期列表定义

             int i,j;               //循环控制变量定义

   int year=2012;       //给出当前日历表对应的年份

注意:变量名要符合标识符命名规则,变量的名称要具有一定的含义,以增强程序的可读性。变量经定义以后,便可以对其赋值和使用。局部变量经定义之后,若在使用前没有赋值,则在编译时会指出语法错误。

2.2.2数据类型

数据类型:描述了对象的存储空间大小和取值范围,指明了变量的状态和在其上的操作。

在JAVA语言中数据类型可分为基本数据类型和复合数据类型两大类:

1.基本数据类型:Java语言共定义了八种基本数据类型,它们包括

字节型byte、字符型char、短整型short、整型int、长整型long、单精度浮点型float 、 双精度浮点型double和布尔型boolean

基本数据类型的字节数和取值范围如下表:

                                                                       

 类型

 说明

 字节数(位数)

 取值范围

 boolean

 布尔型

 1(8位)

 true  和false

 byte

 字节型 

 1(8位) 

 -27~(27-1) 

 char

 字符型 

 2(16位) 

 0~65535 

 short 

 短整型 

 2(16位 

 -215~(215-1)

 int 

 整型 

 4(32位) 

 -231~(231-1) 

 long 

 长整型 

 8(64位) 

 -263~(263-1) 

 float 

 单精度浮点型

 4(32位)

 -3.403e38  — 3.403e38

 double 

 双精度浮点型

 8(64位)

 -1.798e308  — 1.793e308 

2、复合数据类型:包括类(class)、数组、接口(interface)等类型。其中,类是一种自定义的新数据类型,包括java平台已有的定义和编程人员自定义两种形式。例如,把对基本数据类型的所有属性和方法封装起来形成一个类,就形成了基本数据类型的包装类型,包括字节(Byte)、短整数(Short)、整数(Integer)、长整数(Long)、浮点数(Float)、双精度浮点数(Double)、字符(Character)和布尔型(Boolean)等

2.2.3数据类型转换

数据类型转换是将一种类型的数据转变为另一种类型的数据。当表达式中的数据类型不一致时,就需要进行数据类型转换。类型转换的方法有两种:

Ø  隐式类型转换

Ø  显式类型转换

显式类型转换的形式为:

   (类型)表达式

Java允许基本数据类型之间的相互转换,但布尔类型(boolean)除外,它根本不允许进行任何数据类型转换。对于引用数据类型,类型转换只存在于有继承关系的类中

2.3运算符和表达式

•      运算符代表着特定的运算指令,程序运行时将对运算符连接的操作数进行相应的运算。

•      表达式运算符与一定的运算量按照相应的语法规则结合就组成了表达式,从而完成相应的运算。其中运算量可以为常量、变量、方法调用,甚至可以为表达式。表达式求值按运算符的优先级和结合性所规定的顺序进行。

•      JAVA语言的运算符主要有以下几类:

算术运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符(?:)、位运算符以及其它特殊运算符。

2.3.1运算符(Operands);

算术运算符: Java常见的算术运算符有:

+    加号/正号/字符串连接

-     减号/负号

*    乘号

/     除号

%   模除(求余)

++  自增

--自减

注:Java对算术运算符进行了扩展使它能够进行字符串的连接如“Java”+“ Applet”得到字符串“Java Applet”。

      另外,Java模除运算对浮点型操作数也可以进行运算。

赋值运算符:

•      简单赋值运算符: =

•      复合赋值运算符:在赋值运算符之前加上+、 -、 *、 /、 >>、<<、 >>>、 &、 ^、 |等算术或位运算符可以够成复合赋值运算符。例如:x+=y相当于x=x+y

复合赋值运算符包括以下两类:

Ø  复合算术赋值:(+=、-+、*=、/=、%=)

Ø  复合位运算赋值:(&=、|=、^=、>>=、<<=、>>>=)

关系运算符

==等于、!=不等于、>大于、<小于、

>=大于等于、<=小于等于

逻辑运算符: & 与、| 或、 !非、^ 异或、 && 条件与(简洁与)、|| 条件或(简洁或)

:&&和||操作符执行操作时如果操作符左边的表达式中得到的操作数的值能确定运算结果,就不对操作符右边的表达式进行运算

位运算符:位运算符是对二进制位进行操作,Java提供的位运算符如下:

•      ~ 位反,& 位与、| 位或、 ^ 位异或、 << 有符号左移、>>有符号右移、>>>无符号右移

•      注:Java使用补码来表示二进制数,最高位为符号位,正数的符号位为0,负数的符号位为1.对正数而言,补码就是正数的二进制形式,对于负数,首先把该数绝对值的补码取反,然后加1,即得该数的补码。

•      <<左移运算符:用来将一个数的各二进制位全部左移若干位,右端补0.在不溢出的情况下,每左移一位相当于乘2.

•      >>右移运算符:用来将一个数的各二进制位全部右移若干位,前补符号值。每右移一位,相当于除以2.

•      >>>无符号右移:用来将一个数的各二进制位全部右移若干位,移出的位被舍弃,前面空出的位补0.每右移一位,相当于除以2

条件运算符(?:) :即:布尔表达式1?表达式2:表达式3

     这是一个三目运算符用于条件求值,如果布尔表达式1的值为true,则执行表达式2,并把表达式2的结果作为整个表达式的值,否则执行表达式3,并将表达式3的结果作为整个表达式的值。

案例中日历表输出语句使用的条件运算符如下:

System.out.print(spa1--<=0&&day1<=cou1 ?day1<10?" 0"+day1++:" "+day1++:"   ");

此语句相当于以下程序段:

if(spa1--<=0&&day1<=cou1)

    if(day1<10)System.out.print(“ 0”+day1++);

    elseSystem.out.print(“  ”+day1++);

else    System.out.print(“   ”);

逗号运算符(,):用于把若干表达式组合成一个表达式。

其他特殊运算符:

•      括号():提高了括在其中的运算的优先级,并且圆括号不会降低程序的运行速度。

•      下标[]:数组元素调用时使用的下标运算符

•      instanceof():该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false。

•      new:创建一个新对象

2.3.2运算符的优先级:

                                                                                               

 优先级 

 运算符 

 名称 

 1 

 ( ) 

 括号 

 2 

 [ ] , 。 

 后缀运算符 

 3 

 - (一元运算符,取负数)  , ! , ~ , ++ , -- 

 一元运算符 

 4 

 * , / , % 

 乘,除,取模 

 5 

 +, - 

 加,减 

 6 

 >> , << , >>> 

 移位运算符 

 7 

 > , < , >= , <= ,  instanceof 

 关系运算符 

 8 

 ==,!= 

 等于,不等于 

 9 

 & 

 按位与 

 10 

 ^ 

 按位异或 

 11 

 | 

 按位或 

 12 

 && 

 逻辑与 

 13 

 || 

 逻辑或 

 14 

 ?: 

 条件运算符 

 15 

 =(包括各与“=”结合的运算符,例如:+=) 

 赋值运算符