版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计案例教程CONTENTS
Java初步模块1
Java语言基础模块2
Java流程控制模块3
Java面向对象初步模块4深入Java面向对象模块5
数组和字符串模块6
异常处理模块7
多线程并发编程模块8
Java数据库编程模块9Java安全应用模块10模块1Java初步学习目标1.了解Java编程开发的基本条件和Java程序的运行流程。2.掌握Java文件的命名原则。3.掌握Java应用程序的开发过程和简单Java应用程序的编写与运行方法。技能目标1.能够在MyEclipseIDE(integrateddevelopmentenvironment,集成开发环境)中配置JRE。2.能够在MyEclipseIDE中创建Java项目。3.能够在MyEclipseIDE中编写简单Java程序并运行Java程序。1.1Java基础知识1.1.1Java编程开发简介1.Java版本Java技术标准和体系发展到今天,形成了3个独立的版本,它们分别是:JavaSEJavaEEJavaME1.1Java基础知识1.1.1Java编程开发简介2.Java编程环境Java编程开发离不开JDK(Javadevelopmentkit,Java开发包)和JRE(Javaruntimeenvironment,Java运行时环境)。JDK是开发Java程序的核心,包含JRE、Java常用工具(如Java编译器、Java解释器、Java文档生成器等)和Java核心类库。JRE是支持Java程序运行的标准环境,包含:JavaSE核心类库JVM(Javavirtualmachine,Java虚拟机)1.1Java基础知识1.1.2Java程序运行流程编写好的Java源代码文件(扩展名为“.Java”,也可称为源程序文件或简称为源文件),经Java编译器编译后,生成与平台无关的字节码文件(扩展名为“.class”),这些字节码能够被安装在不同计算机上的Java虚拟机识别,因此,也可称之为“虚拟机代码”。当字节码被装载进入Java虚拟机后,再经Java解释器转换成对应特定平台或系统的机器码而被解释执行。Java程序运行流程如图1-1所示。图1-1Java程序运行流程1.1Java基础知识1.1.3Java程序类型Java程序主要分为两类:JavaApplication(Java应用程序)JavaApplet(Java小程序)Java应用程序是指能通过Java解释器解释独立运行的程序。可执行的Java应用程序的主类中必须有main方法。main方法是Java应用程序执行时的入口。Java小程序是用来增强网页功能,产生特殊效果的程序。不能单独运行Java小程序,必须将其嵌入用HTML编写的Web页面中,通过与Java兼容的浏览器或小程序查看器来控制执行。1.2创建第一个Java项目1.2.1Java应用程序运行环境搭建首先要安装JDK。JDK安装文件可到Java官方网站下载,如图1-2所示,然后运行安装即可。本书建议采用JDK1.6及以上版本。1.JDK图1-2Java官方网站图1.2创建第一个Java项目1.2.1Java应用程序运行环境搭建安装成功后,JDK的目录结构如图1-3所示。1.JDK1-3JDK的目录结构1.2创建第一个Java项目1.2.1Java应用程序运行环境搭建其主要部分的描述如下。1.JDK(1)bin文件夹:存放Java开发工具的可执行文件(.exe)。(2)db文件夹:存放示例的相关数据文件。(3)include文件夹:存放用于本地计算机的C语言头文件。(4)jre文件夹:存放Java运行时环境文件。(5)lib文件夹:存放JDK的类库文件。(6)javafx-src.zip:存放用于创建RichInternetApplications的源代码。(7)src.zip:存放JDK的源代码。1.2创建第一个Java项目1.2.1Java应用程序运行环境搭建Java应用程序通过JDBC驱动可访问多种数据库管理系统。在实验室学习环境下,数据存取规模不大,故本书选用MySQL数据库管理系统提供应用数据库服务。MySQL数据库管理系统可到MySQL官方网站下载,如图1-4所示。本书采用MySQL5.5版本。2.应用数据库图1-4MySQL官方网站1.2创建第一个Java项目1.2.2Java应用程序集成开发环境MyEclipseMyEclipseIDE是一个成熟的用于Java项目开发的企业级平台。MyEclipseIDE可到MyEclipse官方网站或下载,如图1-5所示。本书采用MyEclipse8.5版本。图1-5MyEclipse官方网站1.2创建第一个Java项目1.2.2Java应用程序集成开发环境MyEclipse在Windows操作系统中,执行“开始”→“所有程序”→“MyEclipse8.5”命令,启动MyEclipse8.5,会出现图1-6所示的MyEclipse8.5主窗口。图1-6MyEclipse8.5主窗口1.2创建第一个Java项目1.2.2Java应用程序集成开发环境MyEclipse每次启动MyEclipse时,系统都会提示选择工作区,选定好且以后不打算更改,可选中左下方的复选框,再单击OK按钮,如图1-7所示。图1-7选择MyEclipse工作区1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序运行Java应用程序时需要JRE的支持。可根据需要手动配置已下载的较高版本的JRE。启动MyEclipse8.5,执行“Window”→“Preferences”命令,在打开的“Preferences”窗口中展开左侧目录树中的“Java”项,从中选择“InstalledJREs”项,如图1-8所示。可以发现MyEclipse8.5内嵌的JDK版本为1.6.0。图1-8已安装的JRE1.配置JRE1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序如果需要更换为更高版本的JRE,可单击Add按钮,在打开的“AddJRE”窗口中选择“StandardVM”,单击Next按钮,如图1-9所示。图1-9JRE类型选择1.配置JRE1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序在出现的“JREDefinition”界面中单击Directory按钮,如图1-10所示。图1-10JRE定义1.配置JRE1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序在打开的“浏览文件夹”对话框中选择已安装的较高版本的JDK,单击“确定”按钮,如图1-11所示。图1-11选择已安装的较高版本的JDK1.配置JRE1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序在MyEclipse8.5主窗口中,执行“File”→“New”→“Project”命令,打开“NewProject”窗口,展开Java项,从中选择“JavaProject”,如图1-12所示。图1-12创建Java项目2.创建Java项目1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序单击Next按钮,打开如图1-13所示的“NewJavaProject”窗口,在“Projectname”文本框中输入项目名称“myPro”,其他选项保持默认设置,单击Finish按钮,完成Java项目的创建。图1-13完成Java项目创建2.创建Java项目1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序Java项目要求按特定的目录结构组织文件,当在MyEclipse中创建好一个新的Java项目后,便可以在MyEclipse的包资源管理器(PackageExplorer)中看到该Java项目的目录结构,如图1-14所示。它是由MyEclipse自动生成的。图1-14Java项目的目录结构3.Java项目的目录结构1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序Java项目的目录和文件如下。3.Java项目的目录结构(1)src目录:用来存放Java源文件,在其中可以创建若干个不同层级的包,分别存放功能或用途相近的Java源文件。(2)JRESystemLibrary目录:包含运行Java项目所需的“.jar”文件。扩展名为“.jar”的文件由若干“.class”文件打包生成,名称源自“JavaArchiveFiles”(Java存档文件)。1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序首先,创建一个Java文件。右击myPro项目下的src目录,在弹出的快捷菜单中执行“New”→“Class”命令,如图1-15所示。4.编写Java程序图1-15创建Java文件1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序接着,在弹出的“NewJavaClass”窗口中输入类名MyFirstClass,选中下方的“publicstaticvoidmain(String[]args)”复选框,如图1-16所示。4.编写Java程序图1-16完成Java文件创建1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序这里的文件名为MyFirstClass.java,直接放在/myPro/src目录下。最后,单击Finish按钮,完成Java文件的创建。MyFirstClass.java在MyEclipse主窗口的编辑区同时被打开,如图1-17所示。4.编写Java程序图1-17Java文件编辑区1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序4.编写Java程序publicstaticvoidmain(String[]args)是类MyFirstClass所包含的main()方法。main()方法是Java程序运行的起点,没有它,Java程序就无法启动。main()方法前面的修饰符必须是public、static及void(在模块4做详细解释)。main()方法括号中的参数String[]args表示程序运行时,所输入的参数会由字符串类型的数组args来存放。在main()方法的大括号{}之间输入以下代码“System.out.println("HelloJava!");”,然后保存(执行“File”→“SaveAs”命令或在编辑区中按Ctrl+S快捷键),如图1-18所示。1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序4.编写Java程序图1-18在Java文件编辑区编写代码1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序5.Java文件的命名可以把很多类写在一个Java源文件中。但是,其中至多只能有一个类用public修饰符修饰。Java源文件的名称必须和用public修饰符修饰的类的名称相同。如果文件中所有的类都是默认访问控制,那么Java源文件的名称可以不用与类的名称相同。在组成Java源文件的多个类中,如果有一个类的名称与源文件一致且含有main()方法,这个类通常被称为主类。1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序6.运行Java程序将光标停留在编辑区,在MyEclipse主窗口的“Run”菜单项中执行“RunAs”→“JavaApplication”命令,或者单击工具栏中的“RunAs”图标右侧的下拉箭头,在弹出的下拉菜单中执行“RunAs”→“JavaApplication”命令,即可运行Java程序MyFirstClass.java,如图1-19和图1-20所示。1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序6.运行Java程序图1-19运行Java程序的方式1图1-20运行Java程序的方式21.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序6.运行Java程序图1-21Java程序运行结果在控制台显示MyFirstClass.java的运行结果为“HelloJava!”,如图1-21所示。1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序7.有参数的Java程序运行main()方法的参数永远是String[]类型(字符串数组)。其用意在于以参数的方式接收传入程序的数据。args[0]存放第一个数据,args[1]存放第二个数据,以此类推。这些数据都是String(字符串)类型。1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序7.有参数的Java程序运行现在要求通过MyFirstClass类中main()方法的参数向程序中传入数据,在控制台同样能显示“HelloJava!”。首先,修改MyFirstClass类,将其main()方法的代码“System.out.println("HelloJava!");”改为“System.out.println(args[0]+""+args[1]);”。在MyEclipse主窗口的“Run”菜单项中执行“RunConfigurations”命令,如图1-22所示。图1-22Java程序运行配置1.2创建第一个Java项目1.2.3在MyEclipse下开发Java应用程序7.有参数的Java程序运行打开“RunConfigurations”窗口,进行Java程序运行配置。在右侧界面中选择“Arguments”选项卡,在出现的“Programarguments:”列表框中输入“HelloJava!”,单击Apply按钮使输入生效,如图1-23所示。最后单击Run按钮运行,就可以在控制台看到同样的输出结果。图1-23输入程序实际参数1.3JavaAPI帮助文档应用程序编程接口(applicationprogramminginterface,API)是预先定义好的功能及服务,使得程序开发人员无须了解源代码或理解内部工作机制的细节,通过外部接口就能直接访问所提供的功能及服务。如果打算在某个平台上支持Java程序,必须事先在此平台上实现JavaAPI功能及服务。1.3JavaAPI帮助文档JavaAPI以文档的方式为用户提供帮助。可到Java官方网站在线查看或下载JavaAPI文档。JavaAPI文档是从事Java程序开发所必备的权威性参考资料。在Java程序开发过程中要养成查阅JavaAPI文档的习惯,在JavaAPI文档中寻求解决方案。JavaAPI文档如图1-24所示。图1-24JavaAPI文档1.4小结Java是一门面向对象编程语言。Java具有以下特点:简洁性面向对象分布式健壮性安全性平台独立与可移植性多线程动态性1.4小结Java有3个独立的版本:JavaSE、JavaEE和JavaME。运行Java程序时需要JRE。JDK是开发Java程序的核心。JDK包含了JRE。Java源程序文件经编译器编译后,生成与平台无关的字节码文件,再经解释器解释后,在Java虚拟机上执行机器码。Java虚拟机实现了Java字节码的跨平台。Java程序有两类:Java应用程序和Java小程序。进行Java应用程序开发,需要JDK、Java集成开发环境、应用数据库等开发工具。1.5习题1.用百度搜索Java、JavaSE、JDK、JRE、JVM、MyEclipse、API等关键词,收集相关信息进行学习和分析。2.回顾并总结在MyEclipseIDE中开发Java项目的软件安装及配置全过程,并在计算机上进行实践。3.文件名为A.java,其代码如下。代码合法吗?为什么?(1)(2)1.6上机实践1.在MyEclipse8.5下编写一个Java程序,向控制台输出“HelloWorld!”。2.在MyEclipse8.5下编写一个Java程序,向控制台输出“这是我的第一个Java程序”。3.在MyEclipse8.5下编写一个Java程序,向控制台输出专业信息,输出结果如图1-25所示。图1-25上机实践3运行结果谢谢观看!模块2Java语言基础学习目标01掌握标识符、关键字、分隔符、变量和常量的含义和使用方法。02了解Java注释的格式和代码书写风格。03掌握基本数据类型及数据类型转换。05掌握从控制台获取用户键盘输入数据的方法。04掌握运算符的分类和使用,以及表达式中运算符的优先级和结合性。技能目标能够在MyEclipseIDE中定义标识符、变量和常量;使用关键字及分隔符。01能够在MyEclipseIDE中编写适当的Java注释。02能够在MyEclipseIDE中运用基本数据类型并进行数据类型转换。03能够在MyEclipseIDE中编写表达式并进行各类运算。04能够在MyEclipseIDE中编写程序从控制台获取用户键盘输入。052.1回顾与思考【例2-1】编写一个Java应用程序,根据所给圆的半径,计算并输出圆的周长。文件名为Example2_1.java,其代码如下。2.1回顾与思考【例2-1】编写一个Java应用程序,根据所给圆的半径,计算并输出圆的周长。以上代码中,Example2_1、main、args、PI、radius和perimeter都是标识符;public、class、static、void、final、double和int都是关键字;“{}、()、[]、;”和“.”都是分隔符;radius和perimeter是变量;PI是常量;double和int属于基本数据类型;PI*radius涉及数据类型转换;=、*和+都是运算符;""是字符串定义符;+也是字符串运算符;/**至*/之间、/*至*/之间、//之后的同一行的内容为注释。寥寥几行代码就涉及了Java中很多基本语法。接下来将逐个分析Java语言中的各类基本语法要素。2.2变量和常量2.2.1标识符标识符用来表示变量、常量、类、方法、参数、接口、包、文件等元素的名字。Java语言中的标识符由字母、数字、下画线和美元符号($)组成,并且需要遵守以下规则。(1)不能以数字开头。(2)区分大小写。(3)没有长度限制。(4)不能使用Java语言中的关键字。标识符命名惯例上(但不强迫)遵循见名知义原则和驼峰命名法。2.2变量和常量2.2.2关键字关键字是Java语言中已被赋予特定含义的标识符,只能供Java编译系统使用。Java语言中不允许用户对关键字再赋予其他含义。Java语言中的关键字见表2-1。表2-1Java语言中的关键字另外,还有两个特殊标识符goto和const。2.2变量和常量2.2.3分隔符(1)大括号({}):用来定义语句块、类、方法及局部范围;也用于以赋值方式初始化数组。(2)方括号([]):用来声明数组和引用数组元素。(3)圆括号(()):用来容纳方法的参数列表;也用于由控制语句和强制类型转换组成的表达式;还用来表示执行或计算的优先级。2.2变量和常量2.2.3分隔符(4)分号(;):用来终止一条语句;也用来分隔for循环控制语句圆括号中的表达式。(5)逗号(,):用来分隔变量列表中的各个变量或参数列表中的各个参数;也用来分隔for循环控制语句圆括号中各表达式部分的语句序列。(6)圆点(.):用来分隔包与其子包或类;也用于类和实例对象调用成员变量和成员方法。(7)空白():这类分隔符比较特殊,包括空格(Space)、跳格(Tab)和换行(Enter)。2.2变量和常量2.2.4变量变量是程序运行过程中值可以发生改变的量。Java中的变量是程序在计算机内存中的一个基本存储单元。Java中的变量必须先声明后使用。声明变量的格式为:变量名必须是Java中合法的标识符,可以依据个人的喜好命名变量。习惯上以其所代表的含义给变量命名,如num代表数字、age代表年龄等。尽量不要用简单的英文字母命名变量,因为简单的变量名称所代表的含义往往令人费解,它会增加阅读及调试程序的难度。2.2变量和常量2.2.4变量变量声明后,可对变量进行初始化,即为其赋初值,格式如下。也可以在声明变量的同时立即对其进行初始化,格式如下。如果需要声明或声明并初始化多个同一类型的变量,可以采用如下方式。数据类型变量名1,变量名2,…;数据类型变量名1=变量值1,变量名2=变量值2,…;因为变量的值在程序运行过程中可以发生改变,所以下面的语句语法是正确的。2.2变量和常量2.2.5常量常量是程序运行过程中值始终保持不变的量。声明并初始化常量只要在声明变量的数据类型前加上关键字final即可,格式如下。final数据类型常量名;然后常量名=常量值;或者final数据类型常量名=常量值;常量只能赋一次值,其值在之后的代码中不可被修改。为了与变量名表示进行区分,Java语言中约定常量名中的字母全部为大写。2.3Java注释及代码书写风格2.3.1Java注释注释是对所编写代码的解释和说明。适当的注释有助于阅读和调试程序。注释不属于Java程序代码的组成部分,因此,编译器在读到注释时会将其忽略。Java语言中有以下3种形式的注释。1.单行注释2.多行注释3.文档注释2.3Java注释及代码书写风格2.3.2Java代码书写风格编写代码必须形成特定的风格。Java对代码编写格式的要求是非常自由的,在符合语法的前提下,可以把所有代码写成一行,也可以每行只写一个代码。如果这样书写或自由发挥,编写的代码就难以阅读,给程序员的后续工作带来很多麻烦。对于代码的书写,推荐以下风格(在MyEclipseIDE中可以设置)。类及其所属包、导入包顶格书写,类体语句块的左大括号在上一行的行尾,右大括号独占一行。类体中的成员变量、构造方法、成员方法等逐级缩进,如图2-1所示。图2-1Java代码书写风格2.4数据类型2.4.1基本数据类型基本数据类型有8种,分别是:基本数据类型字符型(char)布尔型(boolean)4种整数型字节型(byte)短整型(short)整型(int)长整型(long)两种浮点数型单精度型(float)双精度型(double)2.4数据类型2.4.1基本数据类型1.字符型字符型(char)用来表示单个字符,如字母、数字、符号等。Java使用Unicode字符集,所以字符型数据都是无符号的16位整数,范围为0~65536,即0x0000~0xffff(0x表示十六进制数)。字符型数据占两个字节,用加一对单引号引起来的Unicode字符来表示,如‘南''N''9'等都是合法的字符型数据。也可以直接用加一对单引号引起来的Unicode编码来表示字符型数据,以“\\u”开头加上4个十六进制数,如'\\u0042'表示'B'。2.4数据类型2.4.1基本数据类型1.字符型有些字符在程序中难以直接表达,Java中就定义了这样一些特殊字符,称为转义字符。转义字符以“\”开头,跟在后面的字符含义发生了转变,所以称之为“转义”。常用的转义字符见表2-2。表2-2常用转义字符表2.4数据类型2.4.1基本数据类型2.布尔型布尔型(boolean)用来表示两个逻辑状态,只有true和false两个取值,分别代表逻辑“真”和逻辑“假”。truefalse2.4数据类型2.4.1基本数据类型3.整数型整数型是指没有小数部分,但有符号的数据类型。Java提供字节型(byte)、短整型(short)、整型(int)和长整型(long)4种整数型数据。这4种整数型数据的区别是它们在内存中所占用的字节数不同,因而它们所能存储的整数的取值范围也相应地不同。整数型数据的基本指标见表2-3。表2-3整数型数据的基本指标2.4数据类型2.4.1基本数据类型4.浮点数型浮点数型是指带有小数部分的数据类型,包括单精度型(float)和双精度型(double)两种浮点数型。默认情况下,浮点数型数据为double类型。float类型的数据须在浮点数后加上后缀F或f,如10.9f。浮点数型数据的基本指标见表2-4。表2-4浮点数型数据的基本指标2.4数据类型2.4.2引用数据类型引用数据类型包含:类接口数组2.4数据类型2.4.3数据类型转换1.自动类型转换取值范围小的数据类型向取值范围大的数据类型转换,Java编译器自动实现,不需要做特殊处理。这类数据类型转换称为自动类型转换。沿箭头方向取值范围从小到大的顺序为:①byte→short→int→long→float→double;②char→int→long→float→double。沿以上①和②中箭头方向发生的数据类型转换属于自动类型转换。例如,“inti=10;doubled=i;”。2.4数据类型2.4.3数据类型转换2.强制类型转换(1)double→float→long→int→short→byte。(2)double→float→int→long→char。沿箭头方向,取值范围大的数据类型向取值范围小的数据类型转换,会导致溢出或精度下降,转换后必然会丢失部分信息。这类数据类型转换称为强制类型转换。2.4数据类型2.4.3数据类型转换2.强制类型转换强制类型转换有语法格式要求,其格式为:目标数据类型变量名=(目标数据类型)源数据类型;例如doubled=5.5;inti=(int)d;当然,强制类型转换后,源数据本身类型不会发生改变。例如,上例中变量d的数据类型仍为double。2.4数据类型2.4.4包装类以上Java中的8种基本数据类型也被称为原始数据类型。为提高程序运行效率,可以不把原始数据类型当成对象考虑。然而,Java中所有的一切都可作为对象,所以Java为原始数据类型提供了一些特殊的类,让原始数据类型在使用上如同对象一般。这些特殊的类称为WrapperClass(包装类)。表2-5列出了基本数据类型及其对应的包装类。表2-5基本数据类型及其对应的包装类2.5运算符2.5.1算术运算符Java中的算术运算符见表2-6。表2-6算术运算符+、-、*、/实现两个操作数的加、减、乘、除四则运算,%取两个操作数相除的余数。+和-也是一元运算符,表示单个操作数的正和负。2.5运算符2.5.2关系运算符关系运算符用来比较两个数值的大小,结果返回布尔型的值true或false。关系运算符两边的数据类型要一致。数值型数据的关系运算是比较其值的大小,字符型数据的关系运算是比较其Unicode码的大小,布尔型数据只能进行==和!=比较。Java中有6个关系运算符,见表2-7。表2-7关系运算符2.5运算符2.5.3逻辑运算符参与逻辑运算的操作数和运算结果都属于布尔型。Java中有6个逻辑运算符,见表2-8。其中,只有!是一元运算符,其他都是二元运算符。表2-8逻辑运算符2.5运算符2.5.4位运算符位运算符以二进制为单位对操作数进行运算。位运算符通常与硬件有关,在Java应用开发中出现不多。Java中的位运算符见表2-9。表2-9位运算符2.5运算符2.5.5赋值运算符赋值运算符用一个等号“=”来表示。赋值运算符用于把等号右边的值指定给等号左边的变量或常量。赋值运算符可以与算术运算符和逻辑运算符组成复合赋值运算符,使得程序运行效率更高。复合赋值运算符示例见表2-10。表2-10复合赋值运算符示例2.5运算符2.5.6其他运算符条件运算符由“?”和“:”构成,是一个三元运算符,格式如下。1.条件运算符表达式1?表达式2:表达式3;表达式1的运算结果为布尔型数据。条件运算符的执行过程为:先计算表达式1的值,如果结果为true,则表达式2的值作为整个表达式的值;如果结果为false,则表达式3的值作为整个表达式的值。例如:intx=1,y=2,z;z=x>y?x:y;//z的取值为x和y中的较大者2.5运算符2.5.6其他运算符“+”除了作为算术运算符外,还能作为字符串连接符,实现两个字符串的连接。例如:2.字符串连接符inta=123,b=456;intc=a+b;//整型数c的值为579Stringx="123",y="456";Stringz=x+y;//字符串z的值为1234562.5运算符2.5.6其他运算符对象运算符使用关键字instanceof来判断对象是否为某种类型,运算结果为布尔型数据。其格式如下。3.对象运算符对象标识符instanceof类型标识符;例如:2.6表达式表达式是符合语法规则的操作数、操作符和运算符的有效组合。每个表达式的运算结果都是一个值,表达式的值的数据类型就是表达式的类型。Java中的运算符都有各自的优先级和结合性。优先级是指运算符在表达式运算中的执行顺序。同一个表达式中往往有多个运算符,必须为这些不同的运算符规定一个执行顺序。运算符优先级越高,其在表达式中的执行顺序越靠前。结合性是指同一个表达式中多个相同级别运算符的运算方向,有从左向右和从右向左两种结合性。2.6表达式各种运算符的优先级和结合性见表2-11,优先级从上到下逐级降低。表2-11运算符的优先级和结合性2.6表达式【例2-2】计算并输出表达式“23+7>8||30-5>7&&8-3*6+2>(10-4)*2+15”的值。文件名为Example2_2.java,其代码如下。2.6表达式【例2-2】按照表2-11列出的运算符的优先级和结合性,先计算括号中的10-4,表达式被简化为“23+7>8||30-5>7&&8-3*6+2>6*2+15”;再计算3*6及6*2,表达式再次被简化为“23+7>8||30-5>7&&8-18+2>12+15”;然后计算23+7、30-5、8-18+2及12+15,表达式进一步被简化为“30>8||25>7&&-8>27”;接着计算30>8、25>7及-8>27,表达式又被简化为“true||true&&false”;接着计算true&&false,表达式最后被简化为“true||false”;最终表达式的结果为true。2.7控制台输入/输出2.7.1控制台输出Java中最常见的是用println()方法输出数据到控制台并换行。该方法由System类的PrintStream型静态常量out调用执行。如果把println()改成print(),则后续的内容输出会紧接在这一次的输出之后(不换行)。也可用printf("输出格式",输出数据列表)方法实现增强的格式化输出。例如,“System.out.printf("%s%.1f\n","该圆的面积为:",area);”。其中,%s表示格式化输出字符串,%.1f\n表示格式化输出浮点数,小数点后位数为1,\n表示输出后换行。2.7控制台输入/输出2.7.2控制台输入Scanner类是用于扫描输入文本的实用程序。Scanner类位于java.util包中。如果要使用Scanner类,则必须使用import语句导入Scanner类。然后,使用Scanner类的相应方法获取用户从键盘输入至控制台的数据。2.7控制台输入/输出2.7.2控制台输入【例2-3】用Scanner类实现用户数据的控制台输入。文件名为Example2_3.java,其代码如下。2.7控制台输入/输出2.7.2控制台输入【例2-3】运行结果如图2-2所示。图2-2【例2-3】运行结果2.8小结标识符、关键字、分隔符、变量和常量是Java语言中最基本的语法要素。Java语言中的注释有3种形式:单行注释、多行注释和文档注释。Java语言中有8种基本数据类型,分别是:字符型(char)、布尔型(boolean)、字节型(byte)、短整型(short)、整型(int)、长整型(long)、单精度型(float)和双精度型(double)。不同类型数据之间的运算会导致两种数据类型转换:自动类型转换和强制类型转换。基本数据类型有各自对应的包装类。Java中的运算符包括赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符,以及条件运算符、字符串连接符、对象运算符等。2.9习题1.判断下列陈述是否正确。(1)Java中可以用中文汉字给变量命名。(2)instanceOf是一个合法的Java关键字。(3)赋值运算符的左边必须是变量。(4)表达式“inti=(int)(5.5+3);”中只包含强制类型转换。2.9习题2.写出下列代码片段运行的结果。(1)(2)2.9习题2.写出下列代码片段运行的结果。(3)(4)2.9习题3.问题与思考。(1)main()方法中的main是属于标识符还是关键字?为什么?(2)查阅JavaAPI中有关WrapperClass的内容。WrapperClass位于哪个包中?如何用WrapperClass声明并初始化原始数据类型变量?(3)字符串属于何种数据类型?如何声明并初始化字符串变量?2.10上机实践1.编写程序,从控制台获取输入的长方形的长和宽,输出其周长和面积。2.已知摄氏温度转为华氏温度的公式为F=C×9/5+32编写程序,从控制台获取输入的摄氏温度,将其转为华氏温度并输出。3.编写程序,从控制台获取输入的一个4位整数,求出各位数的数字之和并输出。4.编写程序,实现一个数字加密器,加密规则是:加密结果=(整数×10+5)/2+3.14159从控制台输入待加密的整数,要求输出的加密结果仍为一个整数。谢谢观看!模块3Java流程控制学习目标01了解语句、语句块和作用域的概念。02掌握分支控制结构if-else和switch的使用。03掌握循环控制结构while、do-while和for的使用。04掌握转移控制语句break、continue和return的使用。技能目标能够在MyEclipseIDE中用分支控制结构if-else和switch编写程序。01能够在MyEclipseIDE中用分支控制结构if-else和switch编写程序。02能够在程序设计中使用转移控制语句break、continue和return。033.1回顾与思考【例3-1】编写程序获取用户输入的年份,判断该年是否为闰年。文件名为Example3_1.java,其代码如下。3.1回顾与思考【例3-1】运行结果如图3-1所示。代码中出现的if-else语句块属于分支结构,dowhile语句块属于循环结构。接下来在了解Java语句、语句块和作用域的基础上详细分析分支结构和循环结构。图3-1【例3-1】的运行结果3.2语句、语句块和作用域阅读Example3_1.java的代码,可以发现一段完整的Java程序由若干条语句组成,每条语句都是一个完整的执行单元,以分号结束。语句块由一对大括号{}和其中的语句组成,语句块中的语句可以为一行、多行或另一个语句块,也可以一行也没有,称为空语句块。例如,Example3_1.java中的do-while语句块。语句块中的语句仅为一行或仅包含另一个语句块时,大括号{}可以省略。例如,Example3_1.java中的if-else语句块。3.3分支控制结构3.3.1if-else结构语句格式如下:1.标准形式如果表达式的值为true,就执行语句块1的代码,并跳过语句块2的代码;如果表达式的值为false,就执行语句块2的代码,并跳过语句块1的代码。3.3分支控制结构3.3.1if-else结构【例3-1】判断用户输入的成绩,如果为60分或60分以上,就输出“成绩及格”,否则输出“成绩不及格”。1.标准形式文件名为Example3_2.java,其代码如下。3.3分支控制结构3.3.1if-else结构【例3-1】输出结果:1.标准形式请输入成绩:85成绩及格3.3分支控制结构3.3.1if-else结构语句格式如下:2.悬垂形式
if(表达式){语句块1;}这种形式是把标准形式中的else语句块去掉。如果表达式的值为true,就执行if语句块的代码;反之,则跳过这段代码。3.3分支控制结构3.3.1if-else结构【例3-3】判断用户输入的成绩,如果为60分或60分以上,就输出“考试通过”。2.悬垂形式输出结果:请输入成绩:65考试通过3.3分支控制结构3.3.1if-else结构语句格式如下:3.多分支形式
if(表达式1){语句块1;}elseif(表达式2){语句块2;}else{语句块3;}当存在多个条件判断时,需要使用多分支形式处理。如果表达式1的值为true,就执行语句块1,并跳过其后所有语句块;反之,计算表达式2的值。如果表达式2的值为true,就执行语句块2,并跳过语句块3;反之,则执行语句块3。多分支形式中的elseif语句块可以有多个。最后的else语句块是可选项,可根据实际需要进行取舍。3.3分支控制结构3.3.1if-else结构【例3-4】将百分制成绩换算为等级制成绩。文件名为Example3_4.java,其代码如下。3.多分支形式3.3分支控制结构3.3.1if-else结构【例3-4】将百分制成绩换算为等级制成绩。输出结果:3.多分支形式
请输入成绩:75中等3.3分支控制结构3.3.2嵌套if-else结构嵌套if-else结构是指可以在if语句块和else语句块中插入if-else语句。语句格式如下。其中,插入的if-else语句可以是上述3种形式的任何一种。由此,如果else的数量与if的数量不匹配,则else与最靠近它的尚未匹配的if配对。【例3-4】中的程序运行时,如果输入的成绩超过了100分或低于0分,可以增加一层判断,避免发生上述情况。3.3分支控制结构3.3.2嵌套if-else结构【例3-5】将百分制成绩换算为等级制成绩的改进。文件名为Example3_5.java,其代码如下。3.3分支控制结构3.3.3switch结构switch结构作为多分支if-else结构的替代,使得程序代码变得简洁易读。switch结构格式如下。3.3分支控制结构3.3.3switch结构switch结构的执行流程为:计算出switch后面圆括号中表达式的值并与各case分支的常量值进行比较。如果匹配,则执行该case分支的语句序列。如果所有case分支都不匹配,则执行最后的default语句块。default语句块是一个可选项。3.3分支控制结构3.3.3switch结构【例3-6】用switch结构编写程序,将百分制成绩换算为等级制成绩。文件名为Example3_6.java,其代码如下。3.3分支控制结构3.3.3switch结构【例3-6】用switch结构编写程序,将百分制成绩换算为等级制成绩。文件名为Example3_6.java,其代码如下。3.4循环控制结构3.4.1while结构while结构的语句格式如下。
while(表达式){循环体}while结构的执行流程为:先计算表达式的值,如果为true,就执行循环体内的语句;如果为false,就跳过循环体执行循环结构后面的语句。每进行下一次循环前,要重新计算表达式的值,直到表达式的值为false为止。在循环体内必须存在一个控制循环执行有限次数而能终止的循环变量。3.4循环控制结构3.4.1while结构【例3-7】用while结构编写程序,计算从1累加到100的整数和。文件名为Example3_7.java,其代码如下。3.4循环控制结构3.4.2do-while结构do-while结构的语句格式如下。
do{循环体}while(表达式);与while结构略有不同,do-while结构的执行流程为:先执行循环体内的语句一次,再计算表达式的值,如果为false,就跳过循环体执行循环结构后面的语句;如果为true,就再次执行循环体内的语句。3.4循环控制结构3.4.2do-while结构【例3-8】用do-while结构编写程序,计算从1累加到100的整数和。文件名为Example3_8.java,其代码如下。3.4循环控制结构3.4.3for结构for结构的语句格式如下。
for(表达式1;表达式2;表达式3){循环体}for结构的执行流程为:首先计算表达式1执行初始化。然后计算表达式2,如果值为false,就跳过循环体执行循环结构后面的语句;如果值为true,就执行循环体内的语句。最后计算表达式3,结束一轮循环。接下来重新计算表达式2,进行下一轮循环,直到表达式2的值为false,从而结束循环。表达式1用来初始化循环变量,只执行一次。表达式2判断循环条件成立与否,值为boolean型。表达式3用来更新循环变量的值。3.4循环控制结构3.4.3for结构【例3-9】用for结构编写程序,计算从1累加到100的整数和。文件名为Example3_9.java,其代码如下。3.4循环控制结构3.4.4多重循环多重循环是指一层循环结构的循环体中再包含一层或多层循环结构,也称嵌套循环。不同类型的循环结构可以相互嵌套。3.4循环控制结构3.4.4多重循环【例3-10】输出九九乘法表。文件名为Example3_10.java,其代码如下。3.4循环控制结构3.4.4多重循环【例3-10】运行结果如图3-2所示。图3-2【例3-10】的运行结果3.5转移控制语句Java语言支持3种类型的转移控制语句,也称跳转语句,分别为:break语句continue语句return语句3.5转移控制语句break语句在以下3种情况下使用。3.5.1break语句(1)用在switch结构中,作用是跳出switch结构,执行switch结构后面的语句。(2)用在循环控制结构中,作用是跳出当前循环。(3)在循环控制结构中和标签配合使用,作用是跳出标签所标记的那层循环,继续执行其后的语句。3.5转移控制语句【例3-11】利用break语句编程输出100以内的素数。文件名为Example3_11.java,其代码如下。3.5.1break语句3.5转移控制语句【例3-11】利用break语句编程输出100以内的素数。3.5.1break语句输出结果如下:
23571113171923293137414347535961677173798389973.5转移控制语句continue语句在以下两种情况下使用。3.5.2continue语句(1)用在循环控制结构中,作用是结束本次循环而执行下一次循环,执行前会先判断循环条件是否满足。(2)在循环控制结构中和标签配合使用,作用是结束本层循环,执行标签所标记的那层循环的下一次循环。3.5转移控制语句【例3-12】利用continue语句编程输出100以内的素数。文件名为Example3_12.java,其代码如下。3.5.2continue语句3.5转移控制语句return语句的作用是结束当前方法的执行并返回到调用该方法的语句处。return语句有以下两种形式。3.5.3return语句(1)有返回值。语句格式如下。return表达式;表达式值的数据类型必须和方法声明中的返回值类型一致,且return语句必须是方法体内的最后一条语句。例如,以下语句返回num1与num2的和。3.5转移控制语句3.5.3return语句(2)无返回值。如果方法声明中的返回值类型为void,则return后面的表达式可省略。例如,以下语句没有返回值,用return使方法结束。3.6小结语句块由一对大括号{}和其中一条或若干条语句组成,每个语句块定义了一个作用域。Java程序流程控制结构包括顺序结构、分支结构和循环结构。分支结构根据条件判断的结果来选择执行不同的程序分支。Java中的分支结构包括if-else和switch两种类型。循环结构根据循环条件的成立而重复性地执行循环语句块。Java中的循环结构包括while、do-while和for3种类型。转移控制语句break、continue和return用来实现某些分支结构和循环结构的跳转,使得程序流程控制更为灵活。3.7习题1.编写程序从控制台输入3个正数,判断这3个正数能否构成一个三角形。2.身体质量指数BMI=体重/身高2(单位:千克/米2)。BMI中国参考标准见表3-1。编写程序从控制台输入身高和体重,计算BMI分类。表3-1BMI中国参考标准3.7习题3.编写程序从控制台输入一批数,输出其中的最大值和最小值,输入数字0结束输入。程序运行效果如图3-3所示。图3-3习题3的运行效果3.7习题4.编写一个猜数字游戏程序。程序运行后产生一个0~9的整数,用户有3次机会去猜。在规定次数内猜对及猜错,程序都要给出相应提示。程序运行效果如图3-4所示。提示:用Math.random()方法产生一个大于等于0且小于1的随机浮点数。图3-4习题4的运行效果3.8上机实践1.编写程序从控制台获取用户输入的年份和月份,输出该年该月的天数。2.一个自然数恰好等于它所有因子的和,则这样的数被称为完全数。例如,6=1+2+3。编写程序找出1000以内的完全数,并以因子和的形式列式表示。3.编写程序验证1000以内哥德巴赫猜想。哥德巴赫猜想:一个大于4的偶数可以表示为两个素数和的形式。例如,6=3+3,8=3+5等。4.把习题第4题做一些改进,在程序提示下,由用户决定猜数字游戏结束与否。程序运行效果如图3-5所示。图3-5上机实践4的运行效果谢谢观看!模块4Java面向对象初步学习目标01了解Java面向对象程序设计的思想原则。02掌握类的结构、定义及对象的创建和使用。03掌握成员变量(实例变量、静态变量)和成员常量(实例常量、静态常量)的定义和使用。05理解访问控制、数据安全性、包及封装的概念。04掌握成员方法(实例方法、静态方法)的定义和使用,以及成员方法重载的概念。06掌握构造方法(隐式、显式)的定义和使用,以及构造方法重载的概念。07掌握this关键字的使用。08了解基本数据类型变量和引用数据类型变量在数值传递上的区别。技能目标1.能够在MyEclipseIDE中定义类,以及创建和使用对象。2.能够在MyEclipseIDE中定义和使用成员变量和成员常量。3.能够在MyEclipseIDE中定义和使用成员方法,以及编写setter方法和getter方法。4.能够在MyEclipseIDE中定义和使用构造方法。5.能够在类的定义中使用this关键字。6.能够在MyEclipseIDE中创建包及在源文件中引用包。4.1回顾与思考在前面几个模块的学习过程中,我们发现Java程序中至少要有一个类,在类所圈定的范围内编写代码。可以认为类是Java程序的核心。把众多的事物归纳、划分为类是人类认识世界、改造世界时经常采用的思维方式。类是具有相同属性和行为的一组对象的集合。类为属于该类的所有对象提供了统一的、综合的、抽象的定义,该类的每个对象则是符合这种定义的一个实体。类和对象的关系就是抽象和具体的关系。类是对象的模板,类的实例化结果便是生成了对象。类的对象也被称为类的实例。4.2类和对象4.2.1类的结构类的属性在类中上升为成员变量及成员常量,或称它为全局变量及全局常量。与局部变量及局部常量不同,成员变量及成员常量在整个类中都是可见的。同时,类的行为则上升为成员方法。除了成员变量、成员常量和成员方法外,类至少还要有一个或多个构造方法以便创建有所差异的同型对象。定义类的基本语法格式如下。
修饰符class类名{成员变量(成员常量);构造方法{}成员方法{}}4.2类和对象4.2.1类的结构【例4-1】编写程序定义类Circle,代表圆,能够计算圆的周长和面积。文件名为Circle.java,其代码如下。4.2类和对象4.2.2创建对象创建对象就是对类进行实例化。创建对象的基本语法格式如下。类名对象名;//声明对象对象名=new构造方法名([实际参数列表]);//初始化对象也可以把声明对象和初始化对象合并起来,即类名对象名=new构造方法名([实际参数列表]);其中方括号中的实际参数列表是可选项,参数间用“,”分隔。4.2类和对象4.2.2创建对象【例4-2】创建Circle类的对象。文件名为Example4_2.java,其代码如下。代码中Circle()是Java编译系统提供的默认构造方法。因为在Circle类中没有定义任何构造方法,所以此时Java编译系统就自动提供默认构造方法供用户创建对象使用。4.2类和对象4.2.3使用对象对象创建完成后,就可以利用该对象访问类中的各个成员了。使用对象访问或调用类中各类型成员的基本语法格式如下。对象名.成员变量名;//访问成员变量对象名.成员常量名;//访问成员常量对象名.成员方法名([实际参数列表]);//调用成员方法4.2类和对象4.2.3使用对象【例4-3】在Example4_1.java文件中添加代码,使用Circle类的对象访问其成员变量和成员方法。文件名为Example4_3.java,其代码如下。4.2类和对象4.2.3使用对象【例4-3】运行结果如下。该圆的周长为:31.4该圆的面积为:78.54.3成员变量和成员常量类的成员变量定义了类的对象所拥有的属性。类中的所有构造方法和成员方法都可以访问类的成员变量。类的成员变量的作用域是整个类,所以也称它为全局变量。定义成员变量的基本语法格式如下。访问控制修饰符有public、private、protected和默认等常用的几种。static是可选项,表示成员变量是静态变量(后面详细解释)。初值是可选项。如果没有赋初值,Java编译系统会自动给成员变量赋一个默认值,这一点与局部变量不同。例如,int型的默认值为0,double型的默认值为0.0,实例型的默认值为null,等等。Circle类的成员变量radius的初值即为0.0。4.3成员变量和成员常量成员变量(常量)中有一类成员变量(常量),其取值跟随各自的对象而改变,对象之间所拥有的成员变量(常量)数据相互独立。这种类型的成员变量(常量)被称为实例变量(常量)。Circle类中的成员变量radius属于实例变量。不同的Circle对象,其radius的数值是不同的。即便是radius数值相同的Circle对象,因为其分属于不同的对象,这些成员变量的数据在存储空间上也是相互独立的,所以称其为实例变量。给对象的实例变量赋值的语法格式如下。4.3.1实例变量及实例常量4.3成员变量和成员常量4.3.2封装【例4-3】中的代码“c.radius=5;”的作用是给成员变量radius赋值。这样直接访问及修改成员变量的数值有一个潜在的危险。例如,“c.radius=-5;”,半径变成了负数,一般情况下这是不允许的。Java是一门安全性很高的语言,如何避免这类情况的出现呢?最彻底的办法是提升成员变量的访问控制级别,将这类非法访问拒之门外。Java通过public、private、protected和默认等修饰符实现访问控制。对于类的成员变量,可以选择private修饰符,使成员变量只能在本类中可见,在类的外部无法被访问。4.3成员变量和成员常量4.3.2封装【例4-4】修改【例4-1】的Circle类,使成员变量radius无法在类的外部被访问。文件名为Circle_revised1.java,其代码如下。4.4成员方法类的成员方法定义了类的对象所拥有的行为,是具有某种相对独立功能的程序模块,可在不同的程序段中被多次调用。Java抛弃了函数的概念,用方法的概念取而代之。通常有返回值的程序计算模块被称为函数,没有返回值的程序计算模块被称为过程。在Java中,把上述两种调用类型合称为方法。定义成员方法的基本语法格式如下。4.4成员方法4.4.1setter方法和getter方法针对成员变量radius,可通过定义get×××()方法来获取成员变量的值,通过定义set×××()方法来设置成员变量的值。【例4-5】修改【例4-4】的Circle类,使之能够通过setter和getter成员方法访问成员变量及修改其数据。文件名为Circle_revised2.java,其代码如下。4.4成员方法4.4.1setter方法和getter方法【例4-5】代码中粗体部分为增加的setter和getter成员方法。因为PI是成员常量,在初始化后,其值在程序中不可再改动,所以没有针对PI的setter方法。4.4成员方法4.4.1setter方法和getter方法也可通过MyEclipseIDE自动生成getter方法和setter方法。操作步骤如下:右击myPro项目下的“Circle_revised2.java”文件,在弹出的快捷菜单中选择Source选项。然后在弹出的子菜单中选择“GenerateGettersandSetters”命令,或者直接在Source菜单项中选择“GenerateGettersandSetters”命令,打开图4-1所示的“GenerateGettersandSetters”窗口。图4-1“GenerateGettersandSetters”窗口4.4成员方法4.4.1setter方法和getter方法【例4-6】修改【例4-3】的Example4_3.java文件,使得能够通过Circle类的setter和getter成员方法访问成员变量及修改其数据。文件名为Example4_6.java,其代码如下。4.4成员方法4.4.1setter方法和getter方法【例4-6】运行结果如下。该圆的半径为:5.0该圆的周长为:31.4该圆的面积为:78.5圆的半径必须大于0!运行结果4.4成员方法4.4.2实例方法成员方法中有一类方法必须由已生成的实例或已创建的对象调用执行。此类方法执行后产生的结果依赖于调用它的对象。这种类型的成员方法被称为实例方法。调用实例方法的语法格式如下。实际参数列表是可选项,参数间用“,”分隔。4.4成员方法4.4.3成员方法重载在Java同一个类中,允许两个或两个以上的方法有相同的方法名,只要它们的参数数量、类型和次序不同即可。这种情况称为方法重载。有时在同一个类中,多个方法的功能相似,如果用不同的方法名来区分,管理和应用都不方便。采用方法重载的方式定义方法就显得非常简洁、方便。4.4成员方法4.4.3成员方法重载【例4-7】成员方法重载。文件名为Example4_7.java,其代码如下。见书本P68-69。运行结果如下:两个整数相加,和为:7三个整数相加,和为:12一个浮点数和一个整数相加,和为:7.5一个整数和一个浮点数相加,和为:7.4两个浮点数相加,和为:7.9一个整数和一个字符串连接,结果为:344.5构造方法4.5.1隐式构造方法和显式构造方法Java语言是这样规定的:如果没有定义类的任何构造方法,Java编译系统就自动产生一个构造方法。该构造方法不带参数,方法体为空。那么,在Circle类中,Java编译系统提供的构造方法形如:publicCircle(){}这种由Java编译系统提供的构造方法被称为默认构造方法,也被称为隐式构造方法。类的设计者定义的不带参数的构造方法也可被称为隐式构造方法。与之对应,类的设计者定义的带参数的构造方法则被称为显式构造方法。4.5构造方法4.5.1隐式构造方法和显式构造方法【例4-8】、【例4-9】讲解详见书本P70-72。4.5构造方法4.5.2构造方法重载“构造方法必须与它所在的类同名”和“一个类可以有多个构造方法”这两条规则决定了构造方法必然是重载的。也就是说,Java类中可以有多个参数数量、类型和次序不同的构造方法存在。4.5构造方法4.5.2构造方法重载【例4-10】构造方法重载。文件名为Circle_revised4.java,其代码如下。见书本P72-74。可通过调用同一个类中重载的构造方法来初始化或创建类型上有所差异的对象。4.5构造方法4.5.2构造方法重载【例4-11】调用重载的构造方法来创建有类型差异的对象。文件名为Example4_11.java,其代码如下。见书本P74-75。运行结果如下。圆c1的半径为:1.0圆c1的周长为:6.3圆c1的面积为:3.1圆c2的半径为:5.0圆c2的周长为:31.4圆c2的面积为:78.5圆心坐标是(0.0,2.0)圆c3的半径为:5.0圆c3的周长为:31.4圆c3的面积为:78.54.5构造方法4.5.3this关键字【例4-12】在构造方法和成员方法中参数变量与成员变量同名。修改【例4-8】中的Circle_revised3类,另存为文件名Circle_revised5.java,其代码如下。见书本P75-76。在构造方法Circle_revised5(doubleradius)和成员方法setRadius(doubleradius)中,粗体代码“radius=radius;”处会出现“给变量radius的赋值无效”的语法错误提示。在构造方法Circle_revised5(doubleradius)和成员方法setRadius(doubleradius)中的参数变量radius是一个局部变量,其作用范围是其所在方法的内部,在方法外部是不可见的。4.5构造方法4.5.3this关键字现总结this关键字的用法如下。(1)访问当前对象的成员变量,基本语法格式如下。this.成员变量;(3)在类的构造方法中调用同一个类中重载的构造方法,基本语法格式如下。this([实际参数列表]);(2)访问当前对象的成员方法,基本语法格式如下。this.成员方法;2314.5构造方法4.5.3this关键字【例4-13】this关键字的使用。修改【例4-10】中的Circle_revised4类,另存为文件名Circle_revised6.java,其代码如下。见书本P78-80。运行结果如下。圆心坐标是(2.0,3.0)该圆的半径为:5.0该圆的周长为:31.4该圆的面积为:78.54.6静态成员【例4-14】在Circle_revised5.java文件的基础上修改代码,增加一个成员变量num用来统计所创建的圆的数量,再增加一个成员方法getNum()获取所创建的圆的数量。见书本P81-82。代码中粗体部分为增加的代码,运行结果如下。总共创建了1个圆。总共创建了1个圆。总共创建了1个圆。4.6静态成员类的成员变量分为两种:4.6.1静态变量和静态常量实例变量类的成员变量静态变量/类变量4.6静态成员【例4-15】修改Circle_revised7类,把num由实例变量改为静态变量。修改后的文件名为Circle_revised8.java,其代码如下。4.6.1静态变量和静态常量见书本P83-85。运行结果如下。总共创建了1个圆。总共创建了2个圆。总共创建了3个圆。静态常量也属于整个类。静态常量在初始化后,它的值就不能再改变了。不同位置和不同大小的圆,其圆周率是一个恒定的值,因此Circle类中的成员常量PI应该定义为静态常量类型。4.6静态成员【例4-16】修改Circle_revised8类,把成员常量PI定义为静态常量类型。文件名为Circle_revised9.java,其代码如下。4.6.1静态变量和静态常量见书本P85-87。运行结果参考【例4-15
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026外企审计面试题目及答案
- 2026西安三医院面试题目及答案
- 2026消防监管职位面试题及答案
- 2026年医学专升本试题及答案
- 2026年行政管理学测试题带答案
- 2026年维修电工高级技师职业理论知识题库带答案
- 江西省赣州市高三文科政治第三次测评试卷
- 2026年育婴师证考试题库及答案
- 2026年新版体育期末素质考试题及答案
- 2026年共青团入团入门刷题知识测试试题含答案
- 初中七年级道德与法治《让家更美好》单元教学设计
- 2025年中级会计实务试题及答案
- 成都都江堰投资发展集团有限公司2026年第二批专业技能岗位人员招聘的笔试备考试题及答案详解
- 2026年特种设备安全管理人员知识考试题库试题及答案
- 2026年重庆事业单位招聘考试综合面试真题试卷及答案
- 中国移动企业文化知识考核题库
- (高清版)DG∕TJ 08-2314-2020 建筑同层排水系统应用技术标准
- 2025年第三届全国技能大赛竞赛(餐厅服务赛项)省选拔赛考试题库(含答案)
- 2025年安徽九华山旅游发展股份有限公司招聘66人笔试参考题库附带答案详解
- 交通设计(Traffic Design)知到智慧树章节测试课后答案2024年秋同济大学
- 2025年江苏江南水务股份有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论