《第3章语法基础优秀课件.ppt》由会员分享,可在线阅读,更多相关《第3章语法基础优秀课件.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章语法基础章语法基础第1页,本讲稿共62页第3章 Java语法基础n教教学学提提示示:任任何何复复杂杂的的软软件件系系统统都都是是采采用用某某种种语语言言的的基基本本特特性性构建起来的。构建起来的。n本本章章主主要要介介绍绍:Java语语言言的的基基础础知知识识,包包括括Java语语言言的的基本元素、基本元素、Java语言的流程控制。语言的流程控制。第2页,本讲稿共62页第3章 Java语法基础n3.1 标识符、关键字、数据类型标识符、关键字、数据类型 n3.2 变量、声明和赋值变量、声明和赋值n3.3 变量的初始化变量的初始化n3.4 类型转换与强制类型转换类型转换与强制类型转换n3.
2、5 表达式和流程控制表达式和流程控制n3.6 数组数组n3.7 课后练习课后练习 第3页,本讲稿共62页3.1 标识符、关键字、数据类型n3.1.1 标识符标识符n3.1.2 Java关键字关键字n3.1.3 基本基本Java数据类型数据类型 第4页,本讲稿共62页3.1 标识符、关键字、数据类型n在前两章中已经介绍了几个Java程序,本节将介绍正式的Java程序构成的基本要素。第5页,本讲稿共62页3.1.1 标识符n在Java语言中,标识符是变量、类或方法的名称,例如:nint idCounter;/idCounter 就是一个整型变量的标识符n一个标识符可以由大写或小写的字母、数字、下划
3、线(_)、美元符号($)按任意顺序组合而成,但不可以以数字开头。这是因为如果允许以数字开头就会和数字常量发生混淆。另外,标识符是大小写敏感的,例如idCounter和IdCounter不是同一个标识符。第6页,本讲稿共62页3.1.2 Java关键字关键字 n关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息。目前的Java语言共定义了如表3-1所示48个关键字,具体每个关键字的意义和用法将在本书之中逐步介绍。第7页,本讲稿共62页3.1.2 Java关键字关键字 n表3-1 Java关键字第8页,本讲稿共6
4、2页3.1.3 基本Java数据类型nJava定义了8个简单(或基本)的数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(boolean),这些类型可分为4组。n整数:该组包括字节型(byte),短整型(short),整型(int),长整型(long),它们是有符号整数。n浮点型数:该组包括单精度浮点型(float)和双精度浮点型(double),它们代表有小数精度要求的数字。n字符:该组包括字符型(char),它代表字符集的符号,例如字母和数字。n布尔型:该组包括布尔型(bool
5、ean),它是一种特殊的类型,表示真/假值。第9页,本讲稿共62页3.1.3 基本Java数据类型n(1)整数整数byte,short,int,longnJava定义了4个整数类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)。这些都是有符号的值,数值为正数或是负数。Java 不支持只能是正的无符号的整数。许多其他计算机语言,包括C/C+,支持有符号或无符号的整数。然而,无符号整数是不必要的。具体地说,无符号概念主要被用来指定高位状态,它定义了当int表示一个数字时的符号。第10页,本讲稿共62页3.1.3 基本Java数据类型n(2)浮点型数浮点型数float
6、,doublen浮点数字也就是我们所熟知的实数。在Java中表示这些实数的方法是采用两类浮点数据类型(见表3-3),一类是单精度浮点类型(float),一类是双精度浮点类型(double),Java实现浮点数采用的是标准浮点型(IEEE-754)和运算符集,并且是独立于平台的。第11页,本讲稿共62页3.1.3 基本Java数据类型n(3)字符字符charn在Java中,存储字符的数据类型是char。nJava的char与C或C+中的char不同。在C/C+中,char的宽度是8位,但Java的情况不同。Java使用Unicode码代表字符。Unicode定义的国际化的字符集能表示迄今为止人类
7、语言的所有字符集。它是几十个字符集的统一,因此它要求16位。这样,Java中的char类型是16位的,其范围是065536。人们熟知的标准字符集ASCII 码的范围仍然是0127,扩展的位字符集ISO-Latin-1的范围是0255。既然Java被设计为允许其开发的Applet(小应用程序)在世界范围内使用,因此使用Unicode码代表字符是说得通的。当然,Unicode的使用对于英语、德语、西班牙语或法语的语言是有点低效,因为它们的字符能容易地被包含在8位以内。但是为了全球的可移植性,这一点代价是必须的。第12页,本讲稿共62页3.1.3 基本Java数据类型n(4)布尔型布尔型boolea
8、nn在Java中定义了一种基本数据类型boolean来表示逻辑值,它只有两个文字值即true和false,以下是一个有关boolean类型变量的声明和初始化:nboolean isClosed=false;/定义一个boolean型变量isClosed并把其初始化成falsen需要特别指出的是在整数类型和boolean类型之间无转换计算。有些语言(特别值得强调的是C和C+)允许将数字值转换成逻辑值,这在Java编程语言中是不允许的;boolean类型只允许使用boolean值,即只允许使用true和false。第13页,本讲稿共62页3.2 变量、声明和赋值n3.2.1 变量的声明变量的声明n
9、3.2.2 变量的作用域变量的作用域 第14页,本讲稿共62页3.2 变量、声明和赋值n变量是Java程序中的一个基本存储单元,变量由一个标识符、类型和一个可选初始值组合定义而成。此外,所有变量都有一个作用域,来定义变量的可见性和生存期。第15页,本讲稿共62页3.2.1 变量的声明变量的声明 n在Java中,所有的变量必须先声明后使用。声明的方法是:nDatatype identifier=value,identifier=value ;n其中Datatype是基本数据类型之一,或者是类、接口的名字(将在以后章节介绍)。标识符是变量的名字,可以通过“=”的方式指定一个值来初始化变量,声明多个
10、相同数据类型的变量时可以用“,”号隔开。第16页,本讲稿共62页3.2.2 变量的作用域n本节介绍变量在Java中的作用域,可以通俗地说成变量的作用范围。n在方法内定义的变量被称为局部(local)变量,有时也被称为自动(automatic)、临时(temporary)或栈(stack)变量。n(1)在介绍局部变量的作用域前先来介绍什么是语句、程序块。语句就是一行以分号“;”结束的代码。n(2)Java允许局部变量在任意程序块的任意位置中被声明,而在一个作用域中定义的 局部变量,对于该作用域外的程序是不可见的,即不可以被访问,这个作用域规则为封装提供了基础。第17页,本讲稿共62页3.2.2
11、变量的作用域n(3)变量可以在程序块内的任何地方被声明,但是只有在它们被声明以后才是合法有效的。n(4)局部变量是在一个作用域被创建,当程序执行离开该作用域后被撤销,它的生存期就是程序执行其所在作用域的时间范围。n(5)尽管程序块能被嵌套,但不能将内部作用域声明的变量与其外部作用域声明的变量重名。第18页,本讲稿共62页3.3 变量的初始化n在前面的讲解中,当声明一个Java基本数据类型时,会在内存中分配对应的空间,而对一个非基本数据类型,如前面提到的String,或自己定义的类型时,声明这些变量时并没有分配与之类型大小对应的空间,而只是引用。n在Java程序中,任何变量都必须经初始化后才能被
12、使用。当一个对象被创建时,实例变量在分配存储器的同时被下列值初始化,这一点与局部变量不同。第19页,本讲稿共62页3.4 类型转换与强制类型转换n3.4.1 Java的自动转换的自动转换n3.4.2 不兼容类型的强制转换不兼容类型的强制转换n3.4.3 表达式中类型的自动提升表达式中类型的自动提升 第20页,本讲稿共62页3.4 类型转换与强制类型转换n程序中经常把一种类型的值赋给另外类型的一个变量。如果这两种类型是兼容的,那么Java将自动进行转换。例如,把int类型的值赋给long类型的变量,总是可行的。然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的。例如,没有
13、将double类型转换为byte类型的定义。在Java中不兼容的类型之间的转换仍然是可能的,必须使用强制类型转换来完成两个不兼容的类型之间的显式变换。接下来介绍自动类型转换和强制类型转换。第21页,本讲稿共62页3.4.1 Java的自动转换的自动转换 n如果下列两个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换(automatic type conversion):n这两种类型是兼容的。n目的类型数的范围比来源类型的大。n当以上两个条件都满足时,发生拓宽转换(widening conversion)。第22页,本讲稿共62页3.4.2 不兼容类型的强制转换n为了
14、完成两种不兼容类型之间的转换,必须进行强制类型转换。所谓强制类型转换只不过是一种显式的类型变换。它的通用格式如下:n(target-type)valuen其中,目标类型(target-type)指定了要将指定值转换成的类型。n当把浮点值赋给整数类型时将发生一种不同的类型转换:截断(truncation)。整数没有小数部分,当把浮点值赋给整数类型时,其小数部分会被舍去。第23页,本讲稿共62页3.4.3 表达式中类型的自动提升n除了赋值,还有另外一种类型变换:在表达式中,对中间值的精确要求有时超过任何一个操作数的范围。n除了将byte类型和short类型提升到int类型以外,Java定义了若干适
15、用于表达式的类型提升规则(type promotion rules)。n所有的byte类型和short类型的值被提升到int类型。n如果一个操作数是long类型,整个表达式将被提升到long类型;如果一个操作数是float类型,整个表达式将被提升到float类型;如果有一个操作数是double类型,计算结果就是double类型。第24页,本讲稿共62页3.5 表达式和流程控制n3.5.1 运算符运算符n3.5.2 运算符优先级运算符优先级n3.5.3 流程控制流程控制n3.5.4 特殊循环控制特殊循环控制 第25页,本讲稿共62页3.5 表达式和流程控制n在学习完数据类型后,下面就将介绍如何利
16、用这些数据类型进行各种逻辑操作,就是如何控制程序的执行流程,使得程序完成编程需要的行为,首先介绍Java中的运算符。第26页,本讲稿共62页3.5.1 运算符nJava提供了丰富的运算符环境。Java有4大类运算符:算术运算、位运算、关系运算和逻辑运算。Java还定义了一些附加的运算符用于处理特殊情况。本节将描述Java所有的运算符,比较运算符instanceof将在以后的章节讨论。Java语言中的运算符在风格和功能上都与C和C+极为相似。下面将分别介绍。第27页,本讲稿共62页3.5.1 运算符n1.算术运算符n算术运算符用来进行整型或浮点数据的算术运算,算术运算符用在数学表达式中,其用法和
17、功能与代数学(或其他计算机语言)中一样,Java定义的算术运算符见表3-5。第28页,本讲稿共62页3.5.1 运算符n表3-5 Java算术运算符第29页,本讲稿共62页3.5.1 运算符n2.关系运算符n关系运算符是比较两个表达式大小关系的运算,它的结果是真(true)或假(false),关系运算符有6种,如表3-6所示。第30页,本讲稿共62页3.5.1 运算符n表3-6 关系运算符第31页,本讲稿共62页3.5.1 运算符n3.逻辑运算符n逻辑运算符(见表3-7)是对布尔型(boolean)变量进行运算,其结果也是布尔型(boolean)。第32页,本讲稿共62页3.5.1 运算符n表
18、3-7 逻辑运算符第33页,本讲稿共62页3.5.1 运算符n4.位运算n位运算是以二进制位(bit)进行计算,操作数和结果都是整数类型,包括long、int、short、char、byte。位逻辑运算符有“与(AND)”、“或(OR)”、“异或(XOR)”、“非(NOT)”,分别用“&”、“|”、“”、“”表示。表3-8列出了Java中位运算符。第34页,本讲稿共62页3.5.1 运算符n表3-8 位运算符(包括移位运算)第35页,本讲稿共62页3.5.1 运算符n5.三元运算符(?:)n三元运算符(?:)的用法如下:nx?y:zn其中,x,y,z都是表达式,运算规则是:x为真时,表示式取y
19、的值,否则取z的值。n【例3.25】三元运算举例,程序如下。nint x=1,y=2,z=3;nint i=x0?y:z;n此处由于x=3 B.s3=x C.int i=s.length();nD.String t=For+s;n(2)下面哪些是下面哪些是Java保留字?保留字?()nA.run B.default C.implement D.importn3.判断题n(1)()的运算优先级最高。的运算优先级最高。()n(2)switch语句不能像语句不能像if语句那样嵌套。语句那样嵌套。()第60页,本讲稿共62页3.7 课后练习课后练习 n4.简答题n(1)判断下列标识符,哪些是合法的,哪
20、些是非法的。判断下列标识符,哪些是合法的,哪些是非法的。nSessionIdCounter _myCup m_static this 3uptn$startTime sip_msg u+tu (dt_end)superStarn(2)Java中有哪几种流程控制语句?中有哪几种流程控制语句?n5.操作题n(1)创建一个类和相应的对象,完成下面的任务。创建一个类和相应的对象,完成下面的任务。n在类中编写一个类方法,然后为类型在类中编写一个类方法,然后为类型MyPoint声明两个变量,将变量称为声明两个变量,将变量称为start和和end;用;用new MyPoint()创建对象并分别将引用值赋予变量创建对象并分别将引用值赋予变量start和和end;n将值将值10赋予对象赋予对象start的成员的成员x和和y;n将值将值20赋予对象赋予对象end的的x值,将值值,将值20赋予对象赋予对象end的的y值。值。n分别打印分别打印MyPoint对象对象(start和和end)的成员值的成员值(x和和y)。打印可参考如下语句:。打印可参考如下语句:nSystem.out.println(Start MyPoint=x:+start.x+y +start.y);第61页,本讲稿共62页Q&A?Thanks!第62页,本讲稿共62页