《JavaWeb应用开发原理与技术第6章.ppt》由会员分享,可在线阅读,更多相关《JavaWeb应用开发原理与技术第6章.ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java Web应用开发原理与技术第第6 6章章 JavaJava语言基础及语言基础及I/O I/O 操作操作 第第6章章 Java语言基础及语言基础及I/O 操作操作n6.1 Java基础语法l6.1.1 标识符与关键字l6.1.2 常量与变量l6.1.3 运算符及其优先级l6.1.4 程序的流程控制l6.1.5 Java程序的基本结构n6.2 Java面向对象基础l6.2.1 对象、类和封装性l6.2.2 方法重载和构造方法l6.2.3 继承l6.2.4 多态性-接口 l6.2.5 包与类路径l6.2.6 异常n6.3 Java的I/O操作l6.3.1 File类l6.3.2 Java流操
2、作重点:了解Java的特点n难点:掌握用Java语言编写简单的程序;Java程序结构及异常处理的理解n学时:4小时6.1 Java基础语法基础语法 nJava语言的基础-数据类型,表达式,流程控制等与C/C+非常近似,但:l不再有#include 和#define 等预处理功能语句l不再有structure,union复合数据类型及typedefl不再有goto 语句l不再有指针、不再有多重继承l不再有操作符重载(Operatior Overloading)l取消自动类型转换,要求强制转换6.1 Java基础语法基础语法 n6.1.1 标识符与关键字l1.标识符(Identifiers);P6
3、9页l2.关键字(Keywords);P70页n6.1.2 常量与变量l常量的类型;P70页lJava采用Unicode字符集,不采用ASCII码字符集。byte 8 位 (byte)0 short 16位 (short)0 int 32 位 0 long 64位 0L float 32位 0.0f double 64位 0.0d char 16位 u0000(Unicode character)6.1 Java基础语法基础语法 nJava语言的数据类型及其相互关系lJava变量在使用之前必须先定义其数据类型。数据类型数据类型基本数据类型基本数据类型引用数据类型引用数据类型数值型数值型字符型字
4、符型(char)布尔型布尔型(boolean)整数型整数型(byte,short,int,long)浮点型浮点型(float,double)类类(class)接口接口(interface)数组数组(Array)6.1 Java基础语法基础语法 n6.1.2 常量与变量l变量的类型及声明 变量声明必须在前面加修饰符来确定其作用域。这一点与C+类似,但还是来作一个简要的介绍,以便对它有一个系统的理解。upublic 此类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用.uprivate 此变量或方法只能被本类中的方法来访问;uprotected 此变量或方法能被处于同一个类、同一个包
5、中所有类里的方法、以及继承得到的子类中的方法访问。ustatic 此变量或方法被整个类共享,甚至不用实例化即可调用.ufinal 表示该类不能再分子类。final类不能被其他任何类所继承(安全的考虑)例6-1 outputTest.java(P72页)6.1 Java基础语法基础语法 n6.1.3 运算符及其优先级 P75运算符 名 称示 例.成员选择符object.member_name下标pointerelement()函数调用expression(parameters)+后缀加1variable+前缀加1+variable-后缀减1variable-前缀减1-variable位补expr
6、ession!非运算符!expressioninstancof实例运算符if(object_a instanceof classname)new分配运算符new type*乘Expression*expression/除Expression/expression%模Expression%expression+加Expression+expression-减Expression-expression位左移Expression 位右移Expression expression0填充位右移Expression expression小于Expression 大于Expression expressio
7、n=小于等于Expression=大于等于Expression=expression=等于Expression=expression!=不等于Expression!=expression&位与Expression&expression位或与Expression expression|位或Expression|expression&逻辑与Expression&expression|逻辑或Expression|expression?:如果 否则expression1?expression2:expression3operator=赋值Variable*=expression6.1 Java基础语法
8、基础语法 n6.1.4 程序的流程控制语句l1.条件语句:可分为简单条件语句和复合条件语句。条件语句:可分为简单条件语句和复合条件语句。u1.简单条件语句:简单条件语句:if-else u2.复合条件语句:复合条件语句:if-else语句中又嵌套了语句中又嵌套了if-else语句语句 u3.开关语句:开关语句:switch(expression)case 常量常量1:statements;break;case 常量常量2:statements;break;.default:statements;break;6.1 Java基础语法基础语法 n6.1.4 程序的流程控制语句l2.循环语句。循环语
9、句。uwhile语句udo-while语句 ufor语句while(布尔表达式布尔表达式)循环体循环体 do 循环体循环体 while(布尔表达式)(布尔表达式)for(初始表达式;布尔表达式;步进初始表达式;布尔表达式;步进)循环体循环体 6.1 Java基础语法基础语法 n6.1.4 程序的流程控制语句l3.转移语句与返回语句转移语句与返回语句 u转移语句:转移语句:break,continue u返回语句返回语句:return6.1 Java基础语法基础语法 n6.1.5 Java程序的基本结构 lJavaJava程序由一个或一个以上的源代码文件组成程序由一个或一个以上的源代码文件组成(
10、扩展名为扩展名为.java)java),每个文件是,每个文件是JavaJava的编译单元。的编译单元。l每个每个编译单编译单元可以声明多个元可以声明多个类类和接口,但最多只能有一个和接口,但最多只能有一个类类和接口是和接口是publicpublic,这个公共类型的接口或类这个公共类型的接口或类是是编译单编译单元元间间与其它与其它对对象交流的渠道。象交流的渠道。通过通过packagepackage语语句、句、importimport语语句可以把其他句可以把其他编译单编译单元嵌入到本元嵌入到本应用应用程序中。程序中。lJavaJava应用程序必须有一个应用程序必须有一个main()main()方法
11、,解释器从它开始执方法,解释器从它开始执行程序。行程序。mainmain()()方法必须以如下格式定义:方法必须以如下格式定义:importimport OtherClassName;类定义部分和接口定义部分类定义部分和接口定义部分;public public classclass ClassName public static voidpublic static void main(StringString args).6.2 Java面向对象基础面向对象基础 n6.2.1 封装性:对象、类和消息l所谓所谓“对象对象”,就是一个包含数据以及与这些数据有关的,就是一个包含数据以及与这些数据有关
12、的操作的集合。对象具有操作的集合。对象具有“封装性封装性”,它内部封装数据,它内部封装数据(称称为为“变量成员变量成员”)和操作代码和操作代码(称为称为“方法成员方法成员”)。l一个对象的生命周期包括:生成、使用、清除。一个对象的生命周期包括:生成、使用、清除。l“类类”是是对对象象的的抽抽象象,而而“对对象象”则则是是“类类”的的具具体体实实例例。“类类”代表了某一批代表了某一批“对象对象”的共性和特征。的共性和特征。l必须先声明必须先声明“类类”,再定义类的,再定义类的“对象对象”。l一一个个消消息息由由三三部部分分组组成成:1.1.接接受受消消息息的的对对象象;2.2.要要完完成成方法的
13、名字;方法的名字;3.3.方法需要的参数方法需要的参数l程序设计者的任务包括两个方面:程序设计者的任务包括两个方面:u一是设计类,即决定把哪些数据和操作封装在一起;u二是使用对象,即怎样与对象通信通信(通过消息)来完成所需的任务。6.2 Java面向对象基础面向对象基础 n6.2.1 封装性:对象、类和消息l类的声明。例6-3 声明一个类Ship1 class Ship1 public String name;public double x,y,speed,direction;degreesToRadians(double degrees)/度化为弧度度化为弧度 return(degrees*
14、Math.PI/180.0);lJava通过new创建类Ship1的对象s1,用new为对象s1申请内存.例如:Ship1 s1=new Ship1();l这里,name,x,y,speed,direction是变量成员,degreesToRadians是方法成员。lJava的一个 class(类),类似于C 程序设计语言中的一 个 struct(结构)。6.2 Java面向对象基础面向对象基础 n6.2.2 构造方法和方法重载l构造构造方法方法多半定义一些初值或内存配置工作。u一个类可以有多个构造构造方法方法(方法重载),对象根据参数的不同来决定执行哪一个构造构造方法。方法。如果程序中没有定
15、义构造函数,则创建对象时使用的是缺省构造构造方法,方法,它是一个无内容的空构造构造方法。方法。l方法重载:方法重载:u与C+一样,Java程序的一个类里,可以有多个同名的方法。这些方法的不同之处在于:同名的方法的参数是不同的,有时是数目不同,有时是参数的数据类型不同。这样就可以根据具体情况,对相同名字的方法,执行不同的操作,返回相应结果。u例例6-4 Test2.java(P81页)6.2 Java面向对象基础面向对象基础 n6.2.3 继承l继承是子类利用父类中定义的变量和方法就像它们属于子类本身一样.lJava程序通过extends使一个类继承另一个类的属性。public class Ch
16、ildClass extends ParentClass.bicycle(super class)Mountain bikes Racing bikesTandem bikessub class6.2 Java面向对象基础面向对象基础 n6.2.4 多态性-接口 接口的作用主要是将若干个重要的抽象方法和常量封装在一起,实现面向对象编程的多态机制。l定定义义一一个个接接口口:是一系列常量和还没有实现的方法的结合。其声明类似于类类的声明:interface Declaration interface Declaration interfaceBody interfaceBody l实实现现一一个个
17、接接口口:通过类来实现接口的具体操作时,要具体实现接口所描述的所有方法的方法体。可以通过在类声明语句中用关键字 implements 后接一个用逗号分隔的接口列表来声明该类要实现的一个或多个接口 class class 类名类名 implements implements 接口名列表接口名列表 6.2 Java面向对象基础面向对象基础 n6.2.5 包与类路径 l“包包”的概念与其它语言中“函数库”的概念类似。它是“类”和“接口”的集合。l创建“包包”:首先把属于包的所有的类(源文件)置于当前目录的一个子目录下,将子目录命名为包的名字(称为类路径.如:packagenamepackagenam
18、e)。子目录下包源文件的首行应为:package packagenamepackage packagename;l例:package Graphics;class Square;class Circle;class Triangle;6.2 Java面向对象基础面向对象基础 n6.2.5 包与类路径 l如果在源程序中用到了除java.langjava.lang这个包以外的类,无论是系统的类还是自己定义的包中的类,都必须用importimport语句标识,以通知编译器在编译时找到相应的类文件。l在当前目录中的源程序想引入packagenamepackagename包中的类ClassNameCla
19、ssName,必须包含如下语句:import packagename.ClassName;import packagename.ClassName;或者 import packagename.*;import packagename.*;(*(*表示表示packagenamepackagename包的所有类)包的所有类)该语句的位置在包声明语句之后,类定义语句之前.它告诉编译器指定的包中的类在本程序中可用。(联想一下C语言中的#include“”语句.)u例例6-5 X1.java,X2.java,Pack.java(P84页页)6.2 Java面向对象基础面向对象基础 n现在,对Java程序
20、的基本结构再做一个总结:l如果一个Java程序由多个Java文件组成,则构成的目录树中每个子目录中的类的集合对应Java一个“包”(package),子目录的层次与“包”的记法的层次对应。l一个Java程序可由若干个“类”和“接口”组成。但一个Java程序中只能有一个“主类”,并且“主类名”与“Java文件名”同名。main()方法只能在主类中定义。固定格式为:public static void main(String args)lJava类标准库中的几种常用类。类中的成员都被声明成静态的,可以通过类名直接访问。uSystem类:属java.lang包。uString类和StringBuff
21、er类:属java.util包。uMath类:属java.lang包。uDate类和Calendar类:属java.util包。6.2 Java面向对象基础面向对象基础 n6.2.6 异常处理l“异常”实际上是程序运行中由于出现问题而中断了正常的指令流的一种事件。lJava中的非正常事件分为Error和Exception两种。uException是指可被程序捕获且可恢复的非正常事件,即异常异常。uError是不可恢复和不可捕获的非正常事件,即错误错误。(系统崩溃)lJava语言中,异常和错误是以类的形式定义的。u异 常 以 类 Exception表 示,错 误 以 类 Error表 示。属 于
22、 类Throwablede的子类。这三个类在java.lang包中定义。l例6-6 Exception.java(P86页)由于数组下标越界而抛出异常的一个简单例子。由于数组下标越界是属于运行时异常,代码可以通过编译。但在运行时,程序在抛出异常后会终止运行。6.2 Java面向对象基础面向对象基础 n6.2.6 异常处理l当Java应用程序出现错误时,系统会自动产生一个“异常对象”,该对象包含了异常的类型和程序的状态信息。程序员的任务是捕获这些异常对象。lJava常见的异常类:ArithmeticExceptionArithmeticExceptionArrayIndexOutOfBandsE
23、xceptionArrayIndexOutOfBandsExceptionArrayStoreExceptionArrayStoreExceptionIOExceptionIOExceptionFileNotFoundExceptionFileNotFoundExceptionNullPointerExceptionNullPointerExceptionMalformedURLExceptionMalformedURLExceptionNumberFormatExceptionNumberFormatExceptionOutOfMemoryExceptionOutOfMemoryExcept
24、ion6.2 Java面向对象基础面向对象基础 n6.2.6 异常处理l程序员可以采用Java语言的两种方式来处理“异常”:u1.捕获和处理异常方式:在程序中捕获异常,转向由程序员事先编写程序完成异常处理工作。u2.异常抛出方式:程序员不编写异常处理程序,只事先声明把异常层层向上抛出,直至转交给Java运行时系统处理。6.2 Java面向对象基础面向对象基础 n6.2.6 异常处理l1.捕获和处理异常方式:捕获和处理异常方式:捕获并处理异常捕获并处理异常 trycatchfinally结构结构try 接受监视的程序块;catch(异常类名1 异常对象名1)异常类名1对应的处理代码;catch(
25、异常类名2 异常对象名2)异常类名2对应的处理代码;finally 不论是否发生异常,都要执行的代码;u例:Exception1.java。对程序例6-6的修改(P87页)6.2 Java面向对象基础面向对象基础 n6.2.6 异常处理l2.异常抛出方式:(主要采用间接抛出方式)异常抛出方式:(主要采用间接抛出方式)该方法不对异常进行任何处理,只是简单抛出异常交给调该方法不对异常进行任何处理,只是简单抛出异常交给调用者处理,直至交给用者处理,直至交给Java运行时系统。运行时系统。抛出异常声明是在一个方法声明中用抛出异常声明是在一个方法声明中用throws子句给出的。子句给出的。其语法格式为:
26、其语法格式为:public void myMethod()throws Exception1,Exception2 .6.3 Java的的I/O操作操作 Java定义了许多类专门负责各种方式的输入输出,这些类都被放在java.io包中。n6.3.1 File类lFile类定义了一些方法对文件或目录进行操作。如:创建、删除、重命名文件,列出目录,查询文件大小,判断文件的读写权限及是否存在,设置和查询文件的最近修改日期等。lFile类可以直接处理文件和文件系统相关信息,而不具有从文件读取信息的向文件写信息的功能。l 例例6-7 FileTest.java (P88页)6.3 Java的的I/O操作
27、操作n6.3.2 Java流操作lJava所有的I/O操作都是基于“流”的。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。lJava中的流分为两种:一种是字节流(8位),另一种是字符流(16位),分别由下列四个类来表示。u抽象类InputStream和OutputStream主要用于字节流的输入输出.u抽象类Reader和Writer主要用于字符流的输入输出。u另外,Java中其他多种多样变化的流均是由它们派生出来的。u例例6-8 ByteIOTest.java (P91页)是使用类FileInputStream和FileOutputStream进行文件读写的一个简单例子。6.3 Java的的I/O操作操作n6.3.2 Java流操作l例例6-8 ByteIOTest.java (P91页)是使用类FileInputStream和FileOutputStream进行文件读写字节流的一个简单例子。l例例6-9 IOtest.java (P92页)是使用类Reader和Writer进行文件读写字符流字符流的一个简单例子。
限制150内