版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用JAVA程序设计教程,第2章 Java程序设计基础,第3章 类和对象,第4章 包和接口,第5章 Java语言的异常处理,第6章 输入和输出,第7章 JAVA图形用户界面设计,第8章 Java Applet,目录,第9章 Java语言多线程,第10章 网络编程,第1章 JAVA语言综述, Java语言发展历史, Java结构和特点, Java开发环境,第一个应用程序,为什么要学习Java语言 上机实战 本章小结,第1章 Java语言综述,1.1 Java语言发展历史,1Java语言的产生 Java语言来自于Sun Microsystems公司的一个叫Green的项目。该项目组是1991年由J
2、ames Gosling领导成立的,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样可以把E-mail发给电冰箱、电视机等家用电器,对它们进行可编程控制,并和它们进行交互式信息交流。开始时,该项目组成员准备采用C+语言,但是他们感觉到C+语言太复杂,安全性也差,无法满足项目设计的要求。最后决定基于C+语言开发一种新的编程语言,Gosling临时为它起名为Oak语言(一中橡树的名字),后来正式改名为Java语言。,1.1 Java语言发展历史,2JAVA的发展 1991年 Sun Microsystems公司进军消费电子产品(IA)市场。 1991年4月Sun成立“Green”小组,
3、以C+为基础开发新的程序设计语言,并将其命名为Oak 。 1992年10月 “Green”小组升格为First Person公司,他们将Oak的技术转移到Web上,并将Oak改名为Java 。 19931994 Web在Internet上开始流行,致使Java得以迅速发展并获得成功 。 1995年5 月Sun Microsystems公司正式发表Java与HotJava产品 。 1995年10月Netscape与Sun Microsystems合作,在Netscape Navigator中支持Java 1995年12月微软IE加入支持Java的行列。,1.1 Java语言发展历史,1996年2
4、月Java Beta测试版结束,Java1.0版正式诞生 。 1997年2月Java发展至1.1版。Java的第一个开发包JDK发布。 1999年7月Java升级至1.2版。 2000年9月Java升级至1.3版。 2001年7月Java升级至1.4版。 2004年9月发布Java 2平台标准版(J2SE)的发开工具包JDK1.5.0,并改名为JDK5.0,被认为是Java平台和编程语言近10年来最重大的升级。,1.1 Java语言发展历史,3Java发展前景展望 从实践应用来看,Java已不仅仅是一门语言,而且逐渐形成了一门技术,主要表现在如下几个方面: Java软件技术。它包括了Java语
5、言及其编程技术、Java操作系统(JavaOS)或者JC(Java Card)、Java开发环境与开发工具、Java数据库接口(JDBC)以及Java各种软件包(J/Direct)。 Java虚拟机及其规范。 Java嵌入技术,这是非常有前途的技术,应用范围很广。 Java计算方面,即Java的信息综合处理。 Java技术的应用范围比较广。它涉及到信息领域、家电领域、企业综合信息服务领域、科学计算以及软件产业诸多领域,应用前景广阔。,1.1 Java语言发展历史,普遍认为未来Java技术可应用在以下方面: 动画画面的设计; 交互操作的设计; Internet的系统管理功能模块的设计,包括Web
6、页面的动态设计管理和交互操作设计等。 Intranet上软件开发,直接面向企业内部用户的软件。 与各类数据库连接查询的SQL语句的实现; 基于Java芯片的家用电器嵌入技术。,1.2 Java结构和特点,1Java的特点 Java的特点如下 : 简单易学 面向对象 平台无关性 安全稳定 支持多线程 很好地支持网络编程 Java丰富的类库,1.2 Java结构和特点,Java提供了丰富的类库满足网络化、多线程、面向对象系统的需要: 语言包提供的支持包括字符串处理、多线程、例外处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。 实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日
7、期等。 输入输出包用统一的“流”模型来实现所有格式的I/O,包括文件系统、网络及输入输出设备等。 低级网络包用于实现Socket编程。 抽象图形用户接口包实现了平台的计算机图形用户接口部件,包括窗口、菜单、滚动条和对话框等,使得Java可以移植到不同平台的机器。 网络包支持Internet的TCP/IP协议,提供了与Internet的接口。它支持URL连接,并且简化了用户/服务器模型的程序设计。,1.2 Java结构和特点,2Java平台 Java有三层含义:首先它是一种编程语言;其次又是一种开发环境;同时又是一种应用环境。Java采用虚拟机(Java Virtual Machine-JVM)
8、,对Java的平台独立性和安全性有独特意义。在Java平台的结构中,Java虚拟机处于核心位置,如下图所示 :,Java应用程序接口 (API),Java基本软件 (基本类和扩展类),Java虚拟机(JVM),适配器,实际计算机(硬件和操作系统),1.2 Java结构和特点,3Java虚拟机 Java虚拟机是一种遐想的计算机。从结构上看,它是由一组抽象的部件组成:指令集、寄存器组、类文件格式规定、堆栈、内存垃圾收集器和存储区六个部分: 指令集采用独立于平台的字节码形式; 寄存器组中包含程序计数器、堆栈指针、运行环境指针和变量指针; 堆栈用来传递参数和返回运行结果; 垃圾收集器收集不再使用的内存
9、片段;存储区则用来存放字节码。,1.2 Java结构和特点,4Java运行系统运作过程 Java作为一种半编译半解释语言,其程序的运作过程与编译型和解释型不同。 代码的装入: 类装载器负责装入程序运行时所需要的所有代码,其中还包括程序代码中调用到的所有类。 当装入一个类时,就把这个类放到自己的名字空间中,除了通过符号而引用其他的类外,本地计算机的所有类都被安排到同一个地址空间内,而所有从外部引入的类都有一个自己的独立的名字空间,这使得本地类通过共享相同的名字空间可获得较高的运行效率,同时又保证了它与外部引入的类之间不会相互影响 。,1.2 Java结构和特点,代码的校验: 由字节码校验器对字节
10、码进行安全性检查。Java字节码运行有两种方式:即时编译执行方式(Just-In-Compiler)和解释执行方式(半编译半解释)。第一种方式由代码生成器把字节码转化为本机,然后全速执行本机代码;第二种方式是通过每次翻译并执行一小段代码来完成字节码程序的所有操作。目前,Java运行系统采用第二种方式,即半编译半解释地将字节码转化为机器码,具有较高的效率。对那些要求较高的应用程序,采用即时编译方式,从而能够很好地保证代码的高性能。,1.2 Java结构和特点,代码的执行: Java的目标代码在解释执行时需要有Java运行系统的支持,虽然Java运行系统是建立在各种不同平台上,但为了做到Java的
11、可移植性,并且它的功能要求必须是统一的,为此引入了Java虚拟机的概念。JVM只能执行统一格式的字节码,确保Java的代码执行安全、可靠和稳定。,1.3 Java开发环境,1下载JDK 在浏览器窗口的地址栏中输入Sun Microsystems公司的网址: 图1-1Sun Microsystems公司网页,1.3 Java开发环境,单击上图的Download JDK 5.0 Update 6出现如图1-2所示的网页,单击Accept选项: 图1-2授权声明窗口,1.3 Java开发环境,在接下来的下载窗口中,单击如图1-3所示的需要下载的内容 : 图1-3选择下载选项窗口,1.3 Java开发
12、环境,在保存设置对话框中单击“确定”按钮,会出现另存为对话框,文本框中的默认文件名为jdk-1_5_0_06-windows-i586-p.exe,选择要存放的该文件的位置,如C:Downloads,然后按下“保存”按钮即可开始下载。,1.3 Java开发环境,2安装JDK 找到下载后的文件jdk-1_5_0_06-windows-i586-p.exe,双击,此时安装程序检查你的计算机,直到出现图1-4所示的窗口,选择“我接受该许可证协议中的条款(A)”选项,单击“下一步”按钮,进入图1-5对话框。 图1-4 JDK安装向导-许可证协议,1.3 Java开发环境,在本对话框中可以设置安装路径和
13、选择安装项目,建议使用默认路径。JDK5.0的默认路径为C:Program FilesJavajdk1.5.0_06,如果要修改安装路径,可单击“更改”按钮。设置好安装路径、选择安装项目后,单击“下一步”按钮,这时计算机自动进行安装JDK5.0。 图1-5 JDK安装向导-自定义安装,1.3 Java开发环境,安装完J2SE1.5.0_06后,将弹出JRE的自定义安装对话框,如图1-7所示。此时可以设置安装路径和选择安装项目,建议使用默认路径。设置和选择的方法同上,设置完成后,单击“下一步”按钮,进入“浏览器注册”对话框。 图1-6 JRE安装向导-自定义安装,1.3 Java开发环境,由于在
14、Internet Explorer 6.0以后不再集成JRE运行环境,因此需在相应的浏览器中注册JRE插件。在图1-7所示的浏览器注册对话框中,选择注册本机使用的浏览器,如果机器两种浏览器都使用,可以都选择。选择完后,单击“下一步”按钮,安装JRE运行时环境。安装完成后,单击“完成”按钮,结束JDK的整个装过程。 图1-7JDK安装向导-浏览器注册,1.3 Java开发环境,3Windows2000/XP/NT环境的设置 打开“系统特性”对话框。打开“控制面版”,选择“系统”选项,弹出“系统特性”对话框,在对话框中选择“高级”选项卡。如图1-8所示。 图1-8“系统特性”对话框,1.3 Jav
15、a开发环境,设置系统环境变量。单击“环境变量”按钮,弹出“环境变量”对话框。如图1-9所示。 图1-9“环境变量”对话框,1.3 Java开发环境,设置JAVA_HOME变量。单击“新建”按钮,在变量名文本框中输入“JAVA_HOME”,在变量值文本框中输入JDK的安装路径“C:Program FilesJavajdk1.5.0_06”,如图1-10所示。单击“确定”按钮。 图1-10“新建系统变量”对话框,1.3 Java开发环境,设置CLASSPATH变量。在“系统变量”列表框中选择“CLASSPATH”变量,如果没有该变量,同样要新建该变量,在变量的值文本框中输入:“.;%JAVA_HO
16、ME%libdt.jar; %JAVA_HOME%libtools.jar”。 设置PATH变量。在“系统变量”列表框中选择“PATH”变量,单击“编辑”按钮,在最后加入值“;%JAVA_HOME%bin”。如图1-11所示。单击“确定”按钮。 图1-11“编辑环境变量”对话框,1.3 Java开发环境,4java的API文档 Java的API文档是Java程序开发的帮助文件,你可以在Sun公司网站下载JDK的网页 图1-12Java API文档索引页,1.4 第一个应用程序,1输入源程序 首先打开一个你所熟悉的编辑器,这里使用记事本,然后键入下面的应用程序:如图1-13 图1-13记事本窗口
17、 说明: (1)关键字class声明了一个新类,名字为MyFirst类,整个类用大花括号括起来,是一个public类。 (2)main()方法必须有,并且只有一个作为程序的入口。如果有多个main()方法,java运行系统只把第一个main()方法作为程序的入口,其他main()方法视一般方法处理。void指明该方法不返回任何值。String args 是传递给main()方法的参数,必须有,否则算错。static说明是静态的,必须有。,1.4 第一个应用程序,(3)System.out.println( )用于输出字符串。其中println表示输出后换行,如果不想换行,可以使用print。
18、(4)存盘的文件名必须与类名相同,也就是说一个文件中只能有一个public类。文件名写好后再加上扩展名为.java。选择相应的路径,这里选择D:JAVA,保存文件。如图1-14所示。 图1-14保存文件对话框,1.4 第一个应用程序,2对程序进行编译 使用JDK中的javac进行编译。 单击“开始”/“程序”/“附件”/“命令提示符”,打开“命令提示符”窗口,进入D:JAVA文件夹下。如图1-15所示。 图1-15 “命令提示符”窗口 输入:javac MyFirst.java 如果程序有错误,编译器会提示你第几行有错误,如图1-16所示,在记事本中修改后保存,重新编译,直到没有错误,这时在同
19、一目录下形成一个名为MyFirst.class文件。这就是Java字节码文件。,1.4 第一个应用程序,3运行 运行即是Java的解释器来解释执行这个字节码文件。 输入:java MyFirst 运行结果如图1-16所示。 图1-16第一个程序运行的结果,1.5 为什么学习JAVA语言,在学习Java语言的过程中,应注意以下几个方面: 作为一种程序设计语言,Java源于C+语言,它的语法与C+语言类似,只是在很多方面做了简化,要注意两种语言语法上的细微差别。 Java语言作为一种较纯粹的面向对象的程序设计语言,处处体现了面向对象程序设计的思想,应该体会Java语言面向对象的设计 Java AP
20、I实际上与C+语言库类似,是Java的语言库。由于Java语言是一种纯面向对象的语言。所以Java语言的各种功能是以提供各种不同的类来体现的。 与学习任何一种程序设计语言一样,编程实践是必不可少。目前,Java语言最主要的用途是开发Web上的Java语言小程序,许多漂亮、生动的Web页面就是用Java语言小程序实现的,读者不妨自己编写Java语言小程序,体会一下程序设计的乐趣。,1.6 上机实战,程序调试 public class Add public static void main(String args ) a = 5; b = 7; c = a + b; system.out.prin
21、tln(a + + + b + = + c); 通过此上机实战,熟悉Java应用程序的执行过程,学会调试程序的方法。,1.6 上机实战,(1)在记事本中输入上述程序,保存文件,存到D:JAVA文件夹下,文件名一定为Add.java。 (2)编译程序。在“命令提示符”窗口输入:javac Add.java,出现提示错误信息,如图1-18所示。 图1-17 错误提示信息,1.6 上机实战,通过观察,一共有9个错误,其中8个错误是由于变量没定义,在Java中,变量在使用前应先定义。第9个错误是system不存在,应该改为System,即Java是区分大小写的。重新回到记事本中,修改程序如下: pub
22、lic class Add public static void main(String args ) int a,b,c; a = 5; b = 7; c = a + b; System.out.println(a + + + b + = + c); 保存文件,重新编译,直到没有错误为止,生成Add.class字节码文件。,1.6 上机实战,(3)运行字节码文件。在“命令提示符”窗口输入:java Add,显示运行结果,如图1-18所示 : 图1-18显示运行结果,1.7 本章小结,本章以实用为目的,使读者对Java语言有一个比较全面的了解。 由于Java语言是一种新型的计算机语言,没有兼容
23、低版本计算机的负担,所以Java语言在采用计算机新技术方面比传统的计算机语言显得更为纯粹,Java语言的特点也更为鲜明。 Java语言通过Java虚拟机的机制基本克服了不同计算机平台之间的差别。 目前,有许多很好的Java程序开发环境可用,但学习Java最好选用Sun公司推出的软件开发工具箱JDK。 Java应用程序的开发过程包括编辑、编译和运行。 学习Java语言非常重要,希望大家多多练习,真正掌握Java语言的编程要领,设计出即美观又实用的应用程序。,返回目录, Java编程概况, 常量、变量运算符和表达式, 数组,流程控制语句,上机实战 本章小结,第2章 Java程序设计基础,2.1 J
24、AVA编程概况,1JAVA语言程序结构 Java语言的源程序代码由一个或多个编译单元组成,每个编译单元只能包含下列内容: 一个程序包语句; 导入语句; 类的声明; 接口声明。 每个Java语言的编译单元可包含多个类或接口,但是每个编译单元最多只能有一个类或者接口是公共的。 Java语言的源程序代码被编译后,便产生了Java字节代码。Java的字节代码由一些不依赖于机器的指令组成,这些指令能被Java的运行系统有效地解释。 每个编译单元就是一个以.Java为后缀的Java语言源程序文件。每个编译单元有若干个类,编译后,每个类生成一个.class文件是Java虚拟机能够识别的代码。,2.1 JAV
25、A编程概况,2标识符 标识符就是用来标识包名、类名、方法名、变量名、 类型名、数组名和文件名的有效字符序列。 Java语言的标识符可由任意顺序的大小写字母、美元符号($)、数字和下划线(_)组成,并且第一个字符不能是数字。同时,也不能是Java的保留关键字。 以下是合法的标识符: myname、network2、Ch_2_1、path$bill 以下是不合法的标识符: 3student、165.7、public,2.1 JAVA编程概况,3关键字 关键字又称为保留字,是程序设计语言本身已经使用且被赋予特定意义的一些标识符,它们主要是类型标识符或程序控制语句中的关键字,用户定义的任何标识符不能与
26、它们冲突。 表2-1 Java 关键字表,2.1 JAVA编程概况,4基本数据类型 Java 数据类型及其定义的关键字、占用空间大小详见表2-2: 表2-2 Java 数据类型及其定义关键字、占用空间大小,2.1 JAVA编程概况,1整型 整型可分为四种:基本型、短整型、长整型和字节型。 (1)字节型:以byte表示,取值范围128127(-27 27 -1)。 (2)短整型:以short表示,取值范围3276832767(-215 215 -1)。 (3)基本型:以 int表示,取值范围-231231 -1。 (4)长整型:以long表示,取值范围-263263 -1。 2浮点型:浮点型用来
27、表示实型数据。浮点型分为两种:单精度和双精度,分别以float和double表示。 3字符型:字符型用char表示,Java语言用16位来存放一个字符,实际上存放的是Unicode码,其数据表示范围为065535。 4布尔类型:布尔类型用boolean表示,用来处理逻辑值,代表一个逻辑量的两种不同的状态,所以其值只有两个,分别为true和false,分别表示“真”和“假”。,2.1 JAVA编程概况,5JAVA中的一些注意事项 (1)Java语言的标识符区分大小写字母。比如:A和a代表两个不同的标识符。 (2)功能执行语句的后面必须以分号(;)结束,这是提示该执行语句结束的标志。 (3)注释是
28、程序中不可或缺的部分,它可以使程序更加易读易懂。Java来源程序中,允许用三种插入注释方法。 以/作为开头,直到此行末尾,称为单行注释。 以/*作为开头,直到*/结束,称为多行注释。 以/*作为开头,以*/作为结束。 第三种方式主要用于一种特殊的注释。这类注释通常用在创建Web页面的HTML文件中。Java文档生成器能从这类注释中提取信息,并将其规范化,然后用于创建Web页面的过程中。,2.2 常量、变量、运算符和表达式,1常量 常量是指在整个程序运行过程中其值始终保持不变的量。常量包括整型常量、浮点型常量、布尔型常量、字符型常量和字符串常量。 1整型常量 整型常量有3种表示形式: (1)十进
29、制整数。如:56,-24,0。 (2)以0开头的八进制整数。如:013,0,0126(不能出现7以上的数字)。 (3)以0 x开头的十六进制整数,如:0 x15,0 xd,0 x8a9。 整型常量在机器内一般用4个字节存储,如果要表示比较大的常量可在数据的尾部加l或L,表示长整型,这样可使整型常量在机器内以8个字节存储,2.2 常量、变量、运算符和表达式,2浮点型常量 浮点型常量用来表示有小数部分的十进制常量,有两种形式: (1)小数形式。它由数字和小数点组成,必须有小数点。如:26.38,-0.12,.48。 (2)指数形式。由数字、小数点和E或e组成。如1.8e5,.3E-3。 注意:指数
30、形式的常量E或e前后必须有数字,E或e后面必须为整数,而前面可为整数或小数。 浮点型常量机器内的存储方式又分两种,单精度与双精度。在浮点型数据后面不加任何字符或加上D或d表示双精度,如3.8e4,58.9d,-27.6D,在机器内用8个字节存储。在浮点型常量后加f或F,表示单精度,如3.8e4f,58.9F,-27.6f,在机器内用4个字节存储。 3布尔型常量 布尔型常量只有两个,true和false。,2.2 常量、变量、运算符和表达式,4字符型常量 字符型常量有两种形式: (1)单引号括起来的单个字符。如:a,5,!。 (2)单引号括起来的转义字符。转义字符如表2-3。 表2-3 转义字符
31、表,2.2 常量、变量、运算符和表达式,5字符串常量 字符串常量是用双引号括起来的零个或多个字符序列,字符串中可包括转义字符。 如:Hello,I am teachernYou are student。 在Java语言中的字符串常量是作为String标准类的一个对象来处理的,而不是一个数据。在常量类型中只有字符串是以对象方式存储的。 6其他文字常量 文字常量的定义格式为: final 类型 常量名=常量值 例如,PI表示3.14。 final double PI=3.14; 用final声明的PI只能被赋值一次。,2.2 常量、变量、运算符和表达式,2变量 1变量的定义 变量是在程序运行期间其
32、值可以改变的量。一个变量由一个名字来标识,此名字称为该变量的标识符,变量在内存中占据一定的存储单元,该存储单元中存放变量的值。变量名与内存中的某一存储单元相联系,而变量值是指存放在该存储单元中的数据的值,同一个变量名对应的变量在不同的时刻可以有不同的值。 变量遵循先声明后使用的原则,声明变量包括给出变量的名称和指明变量的类型,必要时还可以指定变量的初始值。变量声明的 一般形式是: =初值1 , = 初值2; 变量经声明以后,可以对其赋值和使用,但在赋值前就使用会出现编译错误。下面是一些合法的变量声明语句: int i,j; float f=34.5f; double d=56.7d; char
33、 ch1=a,ch2=115,ch3=u23d5;,2.2 常量、变量、运算符和表达式,2变量类型 Java语言有两种数据类型,一种是基本数据类,另一种是引用数据类型。 3类型之间的转换 (1)自动类型转换 要实现这一类型的转换,必须同时满足两个条件:一是两种类型彼此兼容;二是目标类型的取值范围要大于源数据类型。 例如, byte a=5; int b=a; /将具有byte型的b的结果自动转换成int型。 (2)强制类型转换 格式为:(目标类型)变量名或表达式 例如, byte x; int y=6; x=(byte)y;,2.2 常量、变量、运算符和表达式,3运算符与表达式 表达式是用运算
34、符把操作数连接起来表达某种运算或含义的式子。 1运算符的优先级 运算符的优先级决定表达式中不同运算执行的先后次序,优先级高的先进行运算,在优先级相同的情况下结合性决定运算的顺序。 表2-4运算符和优先级与结合性,2.2 常量、变量、运算符和表达式,2算术运算符和算术表达式 (1)算术运算符包括: +、-、*、/、%(取模)、+(自增)、-(自减)。 说明: 两个整数类型的数据做除法时,结果只保留整数部分。如6/5=1; 只有两个整数才能进行取模运算,其结果是两数相除的整数的余数。如9%2=1,而4.5%2是非法的; 自加和自减运算只适用于变量,而不能用于常量或表达式,i+是合法的,5+是非法的
35、。还要注意i+和+i的区别,前者先使用i的值,然后i的值增加1,后者是先使i的值增加1,然后再使用i的改变后的值。 (2)算术表达式是由算术运算符与操作数连接组成的表达式,表达式的类型由运算符和操作数确定。如下面是一个合法的算术表达式: a*(b+(c%d)/e)*(f+g/h) 在计算该表达式的值时要注意运算符的优先级。,2.2 常量、变量、运算符和表达式,3关系运算符和关系表达式 关系运算符包括: (大于)、=(大于等于)、= =(等于)、=y 5!=3 i= =j ch!=a+6 4逻辑运算符和逻辑表达式 逻辑运算符包括: 13的二进制为0000000000001101,右移一位的结果为
36、0000000000000110,即为十进制的6。左边的空位用0来填充。,2.2 常量、变量、运算符和表达式,6赋值运算符和赋值表达式 (1)最基本的赋值运算符是“=”。由赋值运算符连接起来的表达式称为赋值表达式。 (2)复合赋值运算符,Java语言提供了几个简洁的赋值运算符以进行算术、移位或者按位操作或者赋值操作。假如你想为一个变量增加一个数并将结果指定给该变量,你可以这样做:i=i+2; 或 i+=2;下表给出了所有的复合赋值运算符和它的等价形式。,2.2 常量、变量、运算符和表达式,7其他运算符 (1)条件运算符和条件表达式 条件表达式的一般形式为: op1?op2:op3 条件运算表达
37、式在op1为true的时候返回op2的值,否则返回op3的值。 例如:min=ab?a:b; 含义是比较a和b的大小,如果ab,min=a;否则min=b。 (2) 运算符 用来声明数组、创建数组并且访问数组中一个特定的元素。以下是数组声明的一个例子:float A=new float10; 声明了一个数组来容纳10个浮点型的数值。访问第7个元素的方法:A6,数组元素的下标从0开始。,2.2 常量、变量、运算符和表达式,(3).运算符 点运算符是用来表示对象实例或类的成员方法。如: a.attr=3; a.meth(); (4)new运算符 对象实例化运算符,其功能是实例化一个对象,即为对象分
38、配内存。如: ClassA a=new ClassA(); (5)instanceof运算符 Instanceof运算符是测试一个对象是否是某一个类的实例或该对象对应的类是否是某一个类的子类。如果是返回true,否则返回false。格式为: op1 instanceof op2 这里,op1必须是对象的名字而且op2必须是类的名字。如果对象直接或者间接地来自类,那么对象就被认为是类的一个实例。,2.3 数组,1数组的定义及初始化 数组就是相同类型的数据按顺序组成的一种复合数据类型。数组中的每一个数据也叫数组的一个元素。在使用数组之前必须先对其进行声明,声明数组有两种格式,这两种形式是等价的。
39、1.一维数组 (1)一维数组的声明 数组元素类型 数组名 ; 数组元素类型 数组名; (2)一维数组的创建 声明数组后,接下来就是为所声明数组分配内存空间,即创建数组,在创建时,必须指明数组元素的个数与类型。格式如下: 数组名=new 数组元素类型数组元素个数 例如: int man ; man=new int5;/有5个元素,每个元素是整型 声明数组与创建数组可以在一起进行, 例如:int man =new int5;,2.3 数组,2二维数组 (1)二维数组的声明 数组元素类型 数组名 ; 数组元素类型 数组名; (2)二维数组的创建 二维数组的创建与一维数组一样。 例如: int x ;
40、 x=new int24; 或 int x=new int24;,2.3 数组,2使用数组时应该注意的问题 (1)在Java语言中声明数组时,不管用什么方式定义数组,都不能指定其长度。例如下面的定义是非法的。int c7; (2)数组的下标是从0开始的,如果有一个数组有5个元素,那么它的下标为0、1、2、3、4。例如:int c=1,2,3,4,5;/给数组元素赋初值 或 int c=new int1,2,3,4,5;/给数组元素赋初值 这行代码中定义了一个c数组,它一共有5个元素,分别为: C0=1 c1=2 c2=3 c3=4 c4=5 如果在使用时用到了c5,即数组下标超出范围,就会发生
41、“数组越界异常”错误。 (3)当为数组引用变量赋值时,必须赋一个有效的数组对象,否则不能引用数组中的任何一个元素。例如下面的程序代码就导致了这种错误。 int a =null; a1=4; 在代码运行时,将会有空指针异常错误(NullPointerException)发生,因为数组a没有指向任何数组对象,因此无法引用其中的元素。,2.3 数组,3数组的应用 / ArrayDemo.java public class ArrayDemo public static void main(String args) int a =new int10; for(int i=0;i10;i+) ai=i+
42、1; System.out.print (a+i+=+ai+,); /不换行输出 运行结果为: a0=1,a1=2,a2=3,a3=4,a4=5,a5=6,a6=7,a7=8,a8=9,a9=10,2.4 流程控制语句,1顺序结构 顺序结构是一种按照从上到下、逐行执行程序中的语句,即按书写顺序执行程序的结构,中间没有判断与跳转语句直到程序执行完为止。如下图所示。 图2-1顺序结构,S1,S2,S3,2.4 流程控制语句,1分支结构 分支结构提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。分支语句分为两类,一类是if语句,另一类是switch语句。 1if-else语句 (1)没有e
43、lse if(条件) 语句; 说明:如果条件为true,则执行语句,否则不执行语句,接着执行下一条语句。流 程图如图2-2(1)所示。 (2)有else If(条件)语句1; else 语句2; 说明:如果条件为true,则执行语句1,否则执行语句2。执行流程图如图2-2(2)所示。(2)假真假真条件语句序列1语句序列2ENDIF后面的语句图2-2 分支语句执行流程图条件语句后面的语句(1)(2)假真假真条件语句1语句2后面的语句图2-2 分支语句执行流程图条件语句后面的语句(1),2.4 流程控制语句,(1) (2) 图2-2分支语句执行流程图 任何语句部分可以是一条语句,也可以是用大括号(
44、 )括起来的多条语句的组成。,2.4 流程控制语句,例题:比较两个数的大小 /IfDemo1.java public class IfDemo1 public static void main(String args) int a=8,b=5; if(a=b) System.out.println(a+=+b); else System.out.println(a+=5,2.4 流程控制语句,(3)复合条件语句 if(条件1)语句1; else if (条件2) 语句2; . else if(条件n) 语句n; else 语句n+1; 说明:从头往后判断如果条件为true,则执行后面相应的语句
45、。如果条件都不满足则执行最后else后面的语句。执行流程图如图2-3所示。 图2-3多分支语句执行流程图,2.4 流程控制语句,例题: 给成绩评定等级 /IfDemo2.java public class IfDemo2 public static void main(String args) int testscore=78; char grade; if(testscore=90) grade=A; else if(testscore=80) grade=B; else if (testscore=70) grade=C; else if(testscore=60) grade=D; el
46、se grade=E; System.out.println(Grade=+grade); 运行结果为:Grade=C,2.4 流程控制语句,2switch语句 switch是Java所提供的多分支选择语句。实际应用中常常会碰到多种可能性的情况,虽然可用复合条件语句来处理,但会使程序变得冗长繁琐,可读性也会降低。而使用switch语句能够很方便地处理这些多种可能性。 switch语句的一般格式如下: switch (表达式) case 判断值1: 语句1; break; case 判断值2: 语句2; break; . case 判断值n:语句n; break; default:语句n+1;
47、,2.4 流程控制语句,上面结构中,每条语句均可用break语句加以终止。这是因为,如果没有break语句,程序将不再与下一个判断值比较,继续执行下一个case后面的语句,直到结束或遇到break语句。如果表达式没有与判断值相匹配,则执行default后面的语句。执行流程图如图2-4所示。switch表达式与case判断值的类型可为byte、char、short、int类型,不能是关系表达式和逻辑表达式。同一个switch语句不能有两个case判断值相等。 图2-4分switch语句执行流程图,2.4 流程控制语句,例题:使用switch给成绩评定等级 /SwitchDemo.java pub
48、lic class SwitchDemo public static void main(String args) int testscore=78; char grade; switch(testscore/10) case 10: case 9:grade=A; break; case 8:grade=B; break; case 7:grade=C; break; case 6:grade=D; break; default:grade=E; System.out.println(Grade=+grade); 运行结果为:Grade=C,2.4 流程控制语句,3循环语句 循环结构是在一定
49、的条件下,反复执行某段程序直到条件不满足为止的流程控制结构,而被反复执行的程序段称为循环体。Java语言中的循环语句有while语句、do while语句和for语句三种。 1while语句 while语句的一般形式为: while(条件表达式) 循环体 执行过程:首先计算条件表达式的值,它将返回一个boolean值(true或者false)。如果条件表达式返回true,则执行循环体。然后继续测试条件表达式,如此反复,直到条件表达式的值为false。执行流程图如图2-5所示。 图2-5 while执行流程图,2.4 流程控制语句,例题: 用while语句计算10的阶乘 / WhileDemo.
50、java public class WhileDemo public static void main(String args) int n=1; long f=1; while(n=10) f*=n; n+; System.out.println(10!=+f); 运行结果为:10!=3628800,2.4 流程控制语句,2.do-while语句 如果需要循环体至少执行一次,可使用do-while语句,do-while语句的格式为: do 循环体 while(条件表达式); 执行过程:先执行一次循环体,然后再判断条件表达式的值,若值为false,则跳出循环;若值为true,则再执行循环体,如
51、此反复,直到条件表达式的值为false。do-while语句的循环体至少执行一次。执行流程图如图2-6所示。 图2-6 while执行流程图,2.4 流程控制语句,例题:用do-while语句计算10的阶乘 /DoWhileDemo.java public class DoWhileDemo public static void main(String args) int n=1; long f=1; do f*=n; n+; while(n=10); System.out.println(10!=+f); 运行结果为:10!=3628800,2.4 流程控制语句,3for语句 for语句的格
52、式: for (初值表达式;条件表达式;增量) 循环体 执行过程为:(1)求解初值表达式(一般是给循环变量赋初值); (2)求解条件表达式的值,若为true,则执行循环体,然后执行(3);若值为false,则跳出循环体; (3)求解增量表达式,然后转(2)。 图2- 7for执行流程图,2.4 流程控制语句,例题: 用for 语句计算10的阶乘 /ForDemo.java public class ForDemo public static void main(String args) long f=1; int i; for(i=1;i=10;i+) f*=i; System.out.pri
53、ntln(10!=+f); 运行结果为: 10!=3628800,2.4 流程控制语句,4转移语句 转移语句是用来直接控制执行流程的语句。Java语言提供了3个转移语句:break、continue和return语句。它们的功能就是改变while、do - while、for及switch语句的正常运行。 (1)break语句 break语句可以终止switch语句和循环体中的执行语句。 它的基本语法格式为: break label; 其中,括号中的参数为标号,它为可选项。用未带标号的break语句从它所在的switch分支语句或最里面的循环体中跳转出来,执行分支或循环体后面的语句。而一个带标
54、号的break语句,执行时,是从这个语句块中跳出来,控制会被传递给当前方法中的带有这一标号的语句。,2.4 流程控制语句,(2)continue语句 continue语句的功能是终止本次循环的作用。即不再执行本次循环中continue语句后面的语句,而是转入下一次循环。其一般使用格式为: continue label; 说明:无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。带标号的continue语句中的标号应该定义在程序中外层循环语句的前面,用来标志这个循环结构。 例如,下面的程序段实现求110除了5的和。 s=0 lab: for (i=1;i=10;i+
55、) if(i=5) continue lab; s=s+i; ,2.4 流程控制语句,(3)return return语句用在方法中,其功能是从当前执行的方法中返回到调用者调用的位置,然后执行下一个语句。当用void定义了一个返回值为空的方法时,方法体内不一定要有return语句,程序执行完,它自然返回。若要从中间返回,则使用下面的格式: retrun; 如果一个方法的返回类型不是void,则用下面格式: retrun 表达式; 表达式的类型应同这个方法的返回类型一致。“一致”指Java自动类型允许范围内,即小值域的数可以赋给大值域的变量。 比如一个方法返回类是double,那么return语
56、句包含的表达式的类型可以是 double,float或byte,short,int long char等。例如: double sample(double x,boolean b) int i=0; if(b) return i; else return x; ,2.5 上机实战,1判断指定年份是否是闰年 分析:判断某一年是否是闰年的条件是:如果这个年份能被4整除,但不能被100整除;或者,如果这个年份能被400整除;满足以上两个条件中的一个的年就是闰年。 通过此上机实战,希望读者能掌握分支语句的使用。 /LeapYear.java public class LeapYear public s
57、tatic void main(String args) IsLeapYear(1999); IsLeapYear(2008); ,2.5 上机实战,/下面是用来判断是否是闰年的方法。 static void IsLeapYear(int year) boolean flag=false; if(year % 4=0)flag=true; if(year % 100=0)flag=false; if(year % 400=0)flag=true; if(flag) System.out.println( +year+ is LeapYear.); else System.out.println( +ye
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 剑麻制品工基础管理水平考核试卷含答案
- 手工地毯制作工岗中规程考核试卷含答案
- 2、施工组织设计总体设想及方案
- 2026年中考二轮复习之选择题复习3:《分式》(学生版+教师版合并)
- 2021 空气源热泵集中供暖工程设计规范
- 2026年春招:中国林业笔试题及答案
- 巩膜炎专项试题及答案呈现
- 青岛特色知识小测试及答案
- 演唱《热爱地球妈妈》教学设计-2026-2027学年新苏少版(简谱)小学音乐四年级上册
- 招聘组织新颖试题及具体答案
- 车险人伤培训
- (2026年)急性心肌梗死患者PCI术后护理课件
- 监控系统维护施工方案
- 中国马克思主义与当代2024考试题
- 食堂托管协议书范本
- 房建安全管理培训课件
- 科学注塑工艺培训课件
- 2025年海航机务笔试试题及答案
- (新教材)人教版二年级上册小学数学教学计划+教学进度表
- 叉车日常检查及异常问题处理记录、特种设备运行故障记录、维护保养记录、叉车月度检查记录、叉车年度检查记录填写样本模板
- 喷涂考试试题及答案
评论
0/150
提交评论