《教学课件第2章Java语法基础》由会员分享,可在线阅读,更多相关《教学课件第2章Java语法基础(34页珍藏版)》请在金锄头文库上搜索。
1、第2章 Java语法基础Java语言是由类和对象组成的,但是再细化一下,对象和类又是由变量和方法组成的,而方法中,又包含了语句和表达式。本章所要介绍的内容都是Java中最基本的单元,任何一个复杂的程序,都是由这些基本的单元所组成的。本章主要介绍:变量和基本数据类型,运算符,基本语法。2.1 Java程序的构成Java语言的源程序代码由一个或多个编译单元(compilation unit)组成,每个编译单元只能包含下列内容(空格和注释除外):一个程序包语句(package statement)、入口语句(import statements)、类的声明(class declarations)和界面
2、声明(interface declarations)。2.2 Java基本数据类型Java属于强类型语言,必须为每一个变量声明一种类型。在Java中有8种基本数据类型,分别为4种整型、两种浮点型、1种表示字符单元的char型以及1种表示布尔值的boolean型。本节将对这8种基本数据类型逐一进行介绍。2.2.1 整数类型整型用来表示没有小数部分的整数。Java中整型全部为有符号数,可以表示正负数。表列出了4种整型的长度及取值范围。2.2.2 浮点类型浮点型用来表示有小数部分的数值,其中的两种数据类型全部为有符号数,故可为正数,亦可为负数。表列出了两种浮点型的长度及取值范围。2.2.3 字符类型
3、(char)每个char型变量占16个比特位(两个字节)用来表示一个字符。在Java中字符的编码不是通常的ASCII码,而是采用Unicode编码。一般情况下,char类型常量被表示为用一对单引号包含的单个字符,如下所示:char a = a; char b= $;其常量也可以通过Unicode编码值来直接表示,格式为“uxxxx”,其中“x”表示一个16进制数字,即取值范围是“u0000”“uFFFF”,正好两个字节。如下所示:char a = u004E;/表示大写字母Nchar b = u03C0;/表示字符 2.2.4 布尔类型(boolean)boolean型的取值范围很简单,非“t
4、rue”即“false”,用来表示逻辑值的“真”或“假”。其常量也就只有“true”和“false”两种选择了,如下所示:boolean t = true; boolean f = false;2.2.5 类型之间的转换在开发程序的过程中经常需要把不同基本数据类型的值进行相互转换,Java中基本数据类型的值进行转换主要包括3种情况,分别为自动转换、手动强制转换和隐含强制转换,本小节将对这3种情况一一介绍。1自动转换2手动强制转换3隐含强制转换2.3 标 记Java是一个标记性语言,Java每行代码都会被编译器转换成标记(token)的具体元素。编译器从左至右排除所有的解释、空白、注释及没有意义
5、的字符,余下的标记有以下5种可能:关键字、标识符、常量、分隔符、运算符。Java中的类名、变量名、方法名等都是标识符,只要编写代码,就不可避免地要使用标识符。标识符的对与错、好与坏极大地影响着源代码的正确性、可读性和可维护性。2.3.1 空白分隔符在Java中,空白分隔符分为3种形式:空格、Tab键、换行符。列出了所有空白分隔符及其含义。2.3.2 注释(comments)与其他编程语言一样,Java的源代码中也允许出现注释,并且注释也不会影响程序的执行,只是起到提示开发人员的作用。因此,注释的内容可以有很多,而不必担心影响执行速度。在Java中,有3种不同功能的注释,分别为单行注释、区域注释
6、与文档注释,本小节将对这些注释的使用进行介绍。2.3.3 关键字关键字也可以称作保留字(reserved word),是Java语言为特殊目的而保留的由ASCII字符构成的字符序列,如关键字可标识数据类型(int、float、double等)、访问权限(private、public、protected等)等。除非要实现其特定目标,否则不要使用。例如,不可以把类名、变量名、方法名等定义得与关键字一样。表列出了Java所有关键字,其中有类修饰符关键字、方法修饰符关键字、字段修饰符关键字等。2.3.4 标识符(identifier)标识符是一个以字母开头,由字母或数字组成的字符序列,具体的规则如下。
7、(1)字母包括AZ、az、_、$以及在某种语言中代表字母的任何Unicode字符。(2)数字包括09。(3)+和这样的特殊符号不能出现在标识符中,空格也不行。(4)标识符中的字符大小写敏感,同时长度没有限制。(5)不能将Java中的关键字(如int、double等)用做标识符名。2.3.5 分隔符在Java中有以下9个ASCII字符是Java的分隔符,包括:左括号“(”、右括号“)”、左大括号“”、右大括号“”、左方括号“”、右方括号“”、分号“;”、逗号“,”、句号“.”。2.4 常量和变量程序中的数据类型必须实例化后才能在程序中使用。各种数据类型实例化后的表示方式都可以分为两种:常量与变量
8、。2.4.1 常量(literal)简单来说,在程序中常量(Constant)用于代表某个不变动的数据,就像“2”就代表数值2。常量在程序中直接被指定。Java支持如下所示几种常量:(1)数值常量(整数类型和浮点类型);(2)布尔常量(true和false);(3)由字符组成的常量(字符类型常量和字符串常量)。使用常量可为变量指定值,如下边的代码所示:int x=10;float y=1.1;char z=A;boolean flag=true;2.4.2 变量(variable)变量是程序中用来在运行时刻,存储数据信息的地方。对于变量来说,可以在程序中的任何地方,对变量的值进行修改。在Jav
9、a语言中提供了两种类型的变量:成员变量和局部变量。成员变量是在方法体外的类中声明和定义的,可以被自动赋予对应类型的默认值,而局部变量是在方法中声明和定义的,不能被自动赋予对应类型的默认值,方法执行结束后,这个方法中的变量也就不存在了。在Java代码中,在使用任何的变量之前都需要对变量进行创建,创建变量实际上就是对变量的声明的过程,需要指明变量类型和变量名,下面是一些变量声明的例子:int a; /定义了int整型变量aboolean b; /定义了boolean布尔型变量bchar c = A /定义了char字符型变量c,并初始化变量的值为大写英文字符A2.5 表 达 式Java提供了丰富的
10、运算符供程序员使用。运算符是程序中用于执行计算动作的符号,运算符是指对操作数所进行的运算。按照操作数的数目,可分为一元运算符(如+,)、二元运算符(如+、)和三元运算符(如?:),分别对应一个、两个和三个操作数。而以运算符的功能划分,则分为赋值功能、数值运算(包括整数与浮点数)、布尔运算、位运算等。在本节将详细讲述运算符的使用及表达式的编写。2.5.1 赋值赋值是编程中最常用的运算之一,Java中的赋值运算有两种:普通赋值运算和运算赋值运算,本小节将对这两种赋值运算符进行介绍。1普通赋值运算普通赋值的运算符就是“=”号,在前面的例子中已有多处使用,该运算符使用很简单,如:int i=12;2运
11、算赋值运算运算赋值运算是指赋值的同时还可以进行运算,其语法为“X op= Y”,含义如下。(1)其中“op”表示某种运算符,前面讲过的运算符都可以,如“+”、“”、“”等。(2)整个操作相当于“X=()(X op Y)”。2.5.2 算术运算符与大多数编程语言一样,在Java中使用算术运算符“+”、“”、“*”、“/”表示加、减、乘、除运算。另外,求余运算使用运算符“%”表示。本小节将对上述运算符逐一进行详细介绍。1“+”运算符在Java中,虽然剔除了C+中自定义运算符重载的功能,但却将几处非常易用的运算符进行了重载,“+”运算符就是其中之一。在Java中,将“+”符号重载了3种功能,即,加法
12、运算功能、数值正号功能和字符串连接符功能。2“”运算符同“+”运算符一样,“”运算符也被重载了,其重载了减法运算功能和取负运算功能。2.5.2 算术运算符3“*”运算符使用“*”运算符将进行乘法运算,但需要注意得是,此运算同样遵循类型自动提升的规则,如下所示:int a=3*5;/结果将得到15,int型double b=3*5.0;/结果将得到15.0,double型第一行结果将得到15,int型。第二行结果将得到15.0,double型。4“/”运算符使用“/”运算符将进行除法运算,此运算也满足类型提升规则。Java中的“/” 运算符也被重载了,其重载了整除运算功能和浮点除运算功能。2.5
13、.2 算术运算符5“%”运算符使用“%”运算符将进行求余运算(取模运算),实质就是将左边的操作数除以右边的操作数,余数便是得到的结果,此运算也遵循类型自动提升的规则。在Java中,求余运算按如下步骤实现:(1)求出参与运算两数的绝对值;(2)用左边操作数的绝对值减去右边操作数的绝对值,得到差;(3)如果差比右边操作数的绝对值大,就用差减去右边操作数的绝对值,得到新的差;(4)重复步骤(2),直至差比右边的操作数小,将差作为结果返回;(5)结果的符号,由左边的操作数决定。2.5.3 自增自减运算上一小节介绍了算术运算符的功能及其操作,本小节将介绍使用方便的自增、自减运算符。其功能是将被操作数的值
14、递增1或者递减1,分别介绍如下。(1)“+”:递增运算符,如下所示:int a=15; a+;/相当于a=a+1,a的值将变为16(2)“”:递减运算符,如下所示:int a=15;a-;/相当于a=a-1,a的值将变为142.5.4 关系运算符关系运算总是生成boolean型结果,其计算的是操作数之间的关系,如果关系描述是正确的,则返回true;否则,返回false。Java中包括以下几个关系运算符:(1)“=”:等于;(2)“!=”:不等于;(3)“”:大于;(4)“=”:大于等于;(5)“”:小于;(6)“100);/结果将返回falseboolean b=!(2010);/结果将返回t
15、rue读者会发现,括号内解析出的布尔值,经过非“!”运算后,结果全部取反。2.5.6 三元运算符Java也支持三元运算,之所以称为三元运算,是因为此运算中有3个被操作数,其语法如下:()?: 运算规则是:首先计算逻辑表达式的值,若为true则返回“”的值,否则返回“”的值,代码2-11说明了其使用。2.5.7 位运算位运算允许对整数中的单个比特进行操作,位运算符会对两个操作数中对应比特位执行布尔代数运算,并产生一个结果。Java中有如下4种位运算符:(1)“&”与:如果二者的对应位都是1,则结果为1,否则为0;(2)“|”或:如果二者的对应位都是0,则结果为0,否则为1;(3)“”异或:如果二
16、者的对应位值相同,则结果为0,否则为1;(4)“”非:将被操作数按位取反。2.5.8 移位运算移位运算操作的目标也是二进制的“位”,因此此运算也只能处理整型。移位运算符将数字的位向左或向右依次移动,从而产生一个新数字。Java中移位运算符包括:(右移)、(无符号右移),本小节将对上述移位运算符逐一进行介绍。2.5.9 括号及运算符间的优先级关系本章上几节介绍了Java中一些主要的运算符。在开发过程中,经常需要混合使用,这就有必要了解这些运算符间的优先级关系。本小节将对运算符间的优先级关系进行介绍,表2-8列出了这些运算符间的优先级关系,其中越靠上的优先级别越高,同一行的优先级相同。2.6 常用
17、数学工具包类类提供方法用于帮助执行基本数学函数的运算,如三角函数、求随机数等。本节将主要介绍如何使用类的常用方法进行数学函数计算。2.6.1 数学常量为了计算方便,Math类还提供了数学计算中常用的如下两个重要常量,都是double类型: (1)Math.PI:圆周率常量;(2)Math.E:自然常量。2.6.2 常用数学函数Java提供了许多常用的数学函数方便程序员使用,本小节将介绍其中几个主要的数学函数及其使用方法。1abs()方法2ceil()方法3floor()方法4max()方法5min()方法6random()方法7round()方法8sin()方法9cos()方法10tan()方法11sqrt()方法12toDegrees()方法2.7 小 结 本章详细介绍了Java语言的基本要素,包括标识符、关键字、常量、分隔符、注释、数据类型、变量以及运算符等;最后介绍了常用数学工具Math类。本章是学习Java语言必须经过的基础阶段,通过本章的学习,同学应该能够对Java程序的构成有一个基本的理解,能够灵活运用Java语言提供的各种数据类型和运算符,同时为后续章节的学习打下坚实的基础。