




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础(Java版) 第1章 程序设计基础 学习目标理解计算机系统的组成了解计算机软件和程序的基本概念会使用流程图表示程序逻辑了解Java语言的发展和特点能够获得、安装和使用Java SDK能够编译、解释和运行第一个简单Java程序能够大致了解Java程序的结构对面向对象有初步的知识Java程序的编辑、解释和运行1.1 计算机系统概述 1.1.1 计算机系统的组成1.1.2 计算机软件概述 1.1.1 计算机系统的组成1.1.2计算机软件概述 计算机软件是指能使计算机工作的程序和程序运行时所需要的数据,以及与这些程序和数据有关的文档。 软件 = 程序 + 数据 + 文档 1.2计算机程序
2、介绍1.2.1 计算机程序概述1.2.2 程序执行的阶段1.2.3机器语言和高级语言1.2.4 程序逻辑的实现1.2.1 计算机程序概述计算机程序可分为3种类型 : 应用程序 操作系统 设备驱动程序1.2.2 程序执行的阶段 程序执行过程从功能上可以分为输入阶段、处理阶段和输出阶段。 在输入阶段中,需要通过输入设备向计算机提供字符、声音、图片和动画等数据。 在处理阶段中,计算机在输入阶段提供的数据上执行操作,通过中央处理器进行计算、统计、文本编辑、逻辑判断、图形缩放和色彩配置等数据处理。 在输出阶段中,计算机通过输出设备以文本、声音、图片或各种控制信号的形式输出处理结果。 1.2.3机器语言和
3、高级语言1. 机器语言 计算机每做的一次动作,一个步骤,都是按照有序的指令集合来执行的,每个计算机指令都对应一个计算机应该执行的物理操作,这些操作是用0和1序列表示的,它是计算机的内部语言,又称为机器语言。 2. 汇编语言 机器语言是面向机器的,即某种机器语言只能在某特定型号的计算机上使用,用机器语言编程繁琐,容易出错,且难以记忆和识别。为了克服机器语言的缺点,人们采用助记符来表示机器指令进行程序设计的语言,称为汇编语言。 1.2.3机器语言和高级语言3. 高级语言 汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是编语言仍然是面向机器的语言,即使一个简单任务也需要多条指
4、令才能完成。掌握和使用这种语言比较困难,因此,人们研制出了高级语言。 高级语言按转换方式可以分为两类 : (1)解释类:应用程序源代码一边由相应语言的解释器“翻译”成目标代码,一边执行。效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。(2)编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码,因此其目标程序可以脱离其语言环境独立执行。1.2.3机器语言和高级语言4. 程序的执行1.2.4 程序逻辑的实现 所有的程序都是为了解决现实生活中的问题而开发的,在开始编写程序之前,必须根据一系列的逻辑步骤来分析
5、要解决的问题。这些步骤包括: 识别输出和输入要求 确定相关的处理方法 实现逻辑 :用流程图或者伪代码表示出程序逻辑1.2.4 程序逻辑的实现【例1-1】用程序逻辑表示工人的月薪某工厂工资以计件形式发放,每月月末根据工人生产的产品个数来计算其月薪:月薪=每生产一个产品的酬金该月生产产品的个数,求工人的月薪。 1.2.4 程序逻辑的实现【例1-2】用程序逻辑表示应聘者的筛选某软件公司欲招聘一位资深系统分析员,很多人前来应征。经过笔试,需要向所有笔试成绩在60分以下的应聘者发出拒绝信,同时通知有资格者前来面试。可以用以下步骤来规划解决方案。 1.3 初识Java程序 1.3.1 Java语言的发展和
6、特点1.3.2 JDK的获得与安装1.3.3 一切都是对象(面向对象初步)1.3.4 第一个应用程序(Java Application)1.3.5 第一个小程序(Java Applet)1.3.6 Java程序的结构1.3.1 Java语言的发展和特点 Java语言的主要特点有:简单性平台无关性3. 分布性和安全性4. 丰富的API文档和类库1.3.2 JDK的获得与安装 Java的解释器又称为“Java虚拟机(JVM:Java Virtual Machine)”,它是一个想象中的机器,它是虚拟计算机或逻辑计算机,实际上是一段负责解释执行Java字节码的的程序。JVM能够从字节码流中读取指令并
7、解释指令的含义,从这个意义上说,Java可以被称为一种“解释型”的高级语言。 为了创建、运行和调试Java程序,我们不仅仅需要解释器,还需要编译器和其他一系列工具,这些内容都由一系列文件组成。这些文件的集合称为Java的开发工具。 1.3.2 JDK的获得与安装 若要安装Java开发环境,必须有支持该环境的操作系统,Java产品面向的主流平台有Solaris、Linux和Windows等,JDK可以从http:/下载。 1. 下载 从http:/下载Java JDK 6的Windows单机版本,得到程序“jdk-6-windows-i586.exe”,2. 安装对于Windows环境下的JDK
8、安装,可以直接双击运行jdk-6-windows-i586.exe,安装程序会自行解压并配置文件。根据安装程序向导的指引安装文件,在“许可证协议”对话框中选择点击“接受”按钮即可向下进行。接受协议后,安装向导会弹出“自定义安装”对话框 。1.3.2 JDK的获得与安装完成“自定义安装”的选择后,点击【下一步】按钮,用户可以在向导提示下完成。1.3.2 JDK的获得与安装3. 路径设置如果选择的安装目录是C:jdk,可运行的工具包含在C:jdkbin目录中,设置路径后,可以在任何目录中运行。对JDK的设置主要是环境变量,以方便使用bin目录中的各种工具。如果你使用的是Windows9x操作系统,
9、可以在的C盘根目录的autoexec.bat文件中加入如下语句:set classpath=.;C:jdklib;path= C:jdkbin;设置路径后,需要重新启动计算机。 1.3.2 JDK的获得与安装如果使用的是Windows 2000或Window XP等高版本系统,可以选择【控制面板】|【系统】|【高级】|【环境变量】,即可打开“环境变量”对话框 。1.3.2 JDK的获得与安装1.3.2 JDK的获得与安装4. 开发工具简介JDK软件包中常用的工具包括:javac、java、appletviewer、javah、javap、javab、javadoc等,这里介绍最常用的三种。编译
10、器javacjavac.exe是Java语言的编译器,用来编译Java源程序(.java文件),并生成字节码文件(.class)文件。解释器javajava.exe文件是Java语言的解释器,用来解释执行Java字节码(.class)文件。小程序浏览器appletviewerappletviewer.exe提供了一个Java小程序(Java Applet)的运行环境。appletviewer读取嵌入有小程序的HTML文件,并在一个窗口中运行。 1.3.2 JDK的获得与安装5.测试 安装成功后,可以测试一下开发工具是否能够正常使用,一般可以进行“javac”、“java”以及“appletvi
11、ewer”的测试,最简单的方法可以在命名提示符下输入相应的命令根据提示信息判断,或者对简单的程序进行测试,看是否能够出现预期结果。 在命令提示符下,输入“javac”,回车,如果出现如图所示界面,则说明该机器上未安装JDK,或者安装不成功。1.3.2 JDK的获得与安装如果安装成功,则出现图1-12所示界面。1.3.3 一切都是对象(面向对象初步)Java语言是一种面向对象(Object Oriented,简称OO)的程序设计语言,Java程序是以类为基础构建的, 面向对象程序设计(OOP)是当今最流行的程序设计方法,它是我们思考现实世界的一种自然方法,也是编写计算机程序的一种自然方法。我们在
12、现实中看到的万事万物都是对象(object),所有的对象具有一定的共同处,它们都有属性,他们都表现出一定的行为。 人类通过研究对象的属性和观察对象的行为而了解对象。不同的对象可以具有类似的属性和行为 ,从这些共性可以归纳出某“类”事务的共性,从而得到一个类(class)。 1.3.3 一切都是对象(面向对象初步)在Java语言中定义这个球类,一般就是如下形式:/定义一个球类class 球 /球的属性定义 尺寸; 重量; 材质; 颜色; /球的成员方法定义 滚动(); 反弹(): 膨胀(); 1.3.3 一切都是对象(面向对象初步) 面向对象的概念构成了Java的核心,面向对象具有封装、继承和多
13、态三个主要特征。 1. 封装性它有两个涵义:第一个涵义是,把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位(即对象)。第二个涵义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接地存取对象的属性,只能通过几个允许外部使用的服务与对象发生联系。1.3.3 一切都是对象(面向对象初步)2. 继承性在面向对象程序设计中,继承是指在已有类的基础上建立一个新类,新类自动拥有父类的所有元素:属性和方法,然后根据需要添加新任务所需要的属性和方法。被继承的类被称为父类或超类,派生出来的类被称为
14、子类或派生类。3. 多态性不同对象对于相同的方法表现出不同的理解和响应,如篮球和气球都具有膨胀的方法,但它们的膨胀系统数等确是不同的。在面向对象程序设计语言中,多态性意味着一个对象具有多张面孔。1.3.4 第一个应用程序(Java Application) 如果Java解释器是一个独立的应用程序,并可以在操作系统下直接启动,那么它解释执行的程序被称为“Java Application(Java 应用程序)”;如果Java解释器包含在一个浏览器内部,使得这个浏览器可以解释字节码文件,则这种浏览器能够自动执行的Java程序被称为“Java Applet(Java小程序)”。 1.3.4 第一个应用
15、程序(Java Application)如何来开发Java应用程序呢?下面是使用Java SDK的方法。1. 编辑一般情况,可以创建一个文件夹用来存放自己的Java源文件,比如可以在D:创建一个文件夹myjava。打开任意文本编辑程序(如记事本),在其中键入例1-3的“Hello World”程序(注意,注释部分可以不写,它不会被执行,只是为了增加程序的可读性)。键入程序后,点击记事本菜单文件,选择保存,在弹出的对话框中,选择保存目录为D:myjava,文件名为FirstApplication.java,保存类型最好选为“所有文件”。1.3.4 第一个应用程序(Java Application
16、)2. 编译进入命令提示符状态:【开始】|【所有程序】|【附件】|【命令提示符】。转到Java源文件所在目录,在本例中,就是FirstApplication.java存放的目录(在本例中就是转入D:myjava,具体步骤是在命令提示符下输入“d:”,回车,此时命令提示符光标变为“D:”;接着输入“cd myjava”,回车,此时命令提示符光标变为“D:myjava”。编译: 在命令提示符光标后输入javac Hello.java,其中javac是编译命令,Hello.java是要编译的源文件名,如下形式,粗体部分由用户输入。 D:myjavajavac Hello.java回车,如果编译没有通
17、过,会给出错误提示,对源文件改错后,可再次编译,直至编译成功。成功后,命令提示符光标停留在D:myjava后,同时在D:myjava目录下生成了字节码文件FirstApplication.class。1.3.4 第一个应用程序(Java Application)3. 运行编译成功后,用解释器java运行字节码文件FirstApplication.class,在命令提示符下转入目录D:myjava,运行D:myjavajava FirstApplication回车后在命令提示符下显示一行文本“Hello World!” 。1.3.4 第一个应用程序(Java Application)【例1-4】
18、对第一个应用程序改进,输出字符串“除了时间,什么也不属于我”。 1.3.4 第一个应用程序(Java Application)【例1-5】第一个应用程序的改进,输出多行文字。 1.3.5 第一个小程序(Java Applet)【例1-6】 输出“Hello World!”的小程序。 1.3.5 第一个小程序(Java Applet)【例1-8】对第一个小程序进行改进,输出多行字符串。1.3.6 Java程序的结构package 自定义包名;import 包名;修饰符 class 类名1extends 父类名 /注释 域(属性、变量) 修饰符 方法名1(参数表) 修饰符 方法名2(参数表) cl
19、ass 类名2 1.3.6 Java程序的结构 从Java程序结构可以看出Java源程序一般由以下三部分组成:1. package语句:表示本程序所属的包,可以没有,最多1条,如果有,必须放在最前边,如果没有,表示本程序属于默认包。2. import语句:表示引入其它类,可以没有,也可以是多条,必须放在类定义前。3. 类定义:至少一个,也可以是多个。类定义是Java源程序的主要部分,编写Java程序就是编写各种类的过程。 1.3.6 Java程序的结构定义类的关键字是class,每个类有类头和类体两部分组成。类头部分除了声明类名外,还可以说明类的继承性,如例1-4。类头部分还可以定义一些修饰府
20、,例如public、static等。类体部分由括起来,通常由两部分组成,分别描述类的属性和方法。属性部分也称为域,包括常量、变量的定义等,在例1-3和例1-4中没有涉及到,我们在后续章节中再作介绍。方法部分是对方法的定义和实现,方法体也用括起,方法体部分由若干个结尾加上;的语句构成。如例1-3中的main()和例1-4中的paint()就是两个方法。第2章 数据运算2.1 标识符、保留字和分隔符2.2 数据类型2.3 运算符2.4 输入输出初步2.1 标识符、保留字和分隔符2.1.1 标识符2.1.2 保留字2.1.3 分隔符 2.1.1 标识符标识符(identifier)是赋予变量、对象、
21、类或方法的名称。在Java语言中,标识符可以由字母、数字、下划线(_)或美元符号($)组成;标识符必须以字母、下划线(_)或美元符号($)开始(即不能以数字开始);标识符区分大小写,没有规定最大长度。因为Java语言使用Unicode字符集,因此,组成标识符的字母和数字都是广义的。例如字母不仅仅指英文,也可以是中文的、德文的等。2.1.2 保留字abstractcontinuefloatlongshorttruebooleandefaultFornativestatictrybreakdoublegoto*newsupervoidbytedoIfnullswitchvolatilecaseel
22、seimportpackagesynchronizedwhilecatchextendsimplementsprivatethischarfalseIntprotectedthrowclassfinalinterfacepublicthrowsconst*finallyinstanceofreturntransient*2.1.3 分隔符分隔符是用来分隔开Java程序中的基本语法元素的符号,可以分为注释、空白符和普通分隔符。1注释在Java语言中,可以采用三种注释方式:单行注释,注释形式为:/注释内容 段落注释,注释形式为,/*注释内容*/特殊注释:注释形式为:/*注释内容*/,这是Java所
23、特有的一种注释,是为支持JDK工具javadoc而设计的。2空白符空白符包括空格符、回车符、换行符和制表符等。3普通分隔符普通分隔符各具有确定的语法含义,要按照语法规定去使用。有如下四种:大括号():用于定义复合语句、类体、方法体等。分号(;):添加在语句之后。逗号(,):用于分隔变量声明时的各个变量和方法的各个参数等。冒号(:):用于标号和语句之间。2.2 数据类型2.2.1 数据类型概述2.2.2 常量2.2.3 变量2.2.1 数据类型概述类型(type)是程序设计语言中的基本概念,它包括两部分:取值范围和在这些值上的操作。定义一个类型就要定义这两个部分。数据类型有基本数据类型和复合数据
24、类型两种。基本数据类型是不可再分割的数据类型,简称为基本类型或简单类型。简单类型代表单值,而不是复杂的对象。Java是面向对象的,而简单数据类型不是。Java定义了8个基本数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double)和布尔型(boolean),这些类型可以分为四组:整型:包括byte、short、int和long,它们是有符号整数。实型:包括float和double,它们代表有小数精度要求的数值。字符型:包括char,代表字符集的符号,如字母和数字等。布尔型:包括boolean,表示真
25、、假值。2.2.1 数据类型概述2.2.2 常量对于基本数据类型量,按其取值是否可改变又可分为常量和变量,常量是在整个程序执行过程中不能变化的量,变量是值可以发生改变的量。常量和变量可与数据类型结合起来分类,例如有整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量等。常量有字面(Literal)常量和符号常量两种。1整型常量Java的整型常量有三种形式:十进制、十六进制和八进制。十进制整数:由09的数字和正、负号组成,没有前缀。十六进制整数:由09的数字、AF(不分大小写,代表1015)的字母和正、负号组成。必须以0 x或者0X开头。八进制整数:由07的数字和正、负号组成。2.2.2
26、常量2. 实型常量实型又叫浮点型,Java的实型常量有标准和科学计数法两种表达方式。标准形式,由09的数字和小数点组成。科学计数法形式:数字中带E或者e,数字后面可以带后缀F、f或D、d分别表示单精度实数和双精度实数,浮点数缺省为双精度实数。2.2.2 常量3. 字符型常量字符类型用来表示单个字符,字符常量可以是用单引号括起来的一个字符,如a、B、 、=、+等;字符常量也可以是转义字符或者字符对应的Unicode码;也可以直接把0到65535的整数作为字符常量。转义字符是一种特殊的字符常量,以反斜杠开头,后面跟一个或多个字符。 2.2.2 常量转义字符含义ddd1到3位8进制数据所表示的字符u
27、xxxx1到4位16进制数据所表示的字符n回车r换行 反斜杠字符单引号字符双引号字符t横向跳到下一制表位置b退格2.2.2 常量4. 字符串常量字符串常量就是用双引号括起零个或者多个字符。例如: /一个空字符串 /一个包含转义字符的字符串,该字符串包含我们青春飞扬! /一个包含汉字的字符串眉飞色舞nThe second line! /一个包括两行的字符串在Java中,可以用连接运算符(+)把两个或多个字符串常量连接在一起,组成一个更长的字符串。5. 布尔常量布尔常量用来表示真和假,只有两个值:true和false,占8位内存。 2.2.2 常量6. Java常用数学常量方法作用数值类型Math
28、.E自然对数edoubleMath.PI圆周率doubleDouble.POSITIVE_INFINITYdouble型的正无穷数doubleDouble.NEGATIVE_INFINITYdouble型的负无穷数double2.2.3 变量在程序运行时,有些数据的值会被改变,在使用前必须被临时存储,这就需要用于标识数据的存储单元,也就是变量。变量名是一个合法的标识符,由字母、数字、下划线和$组成,变量名区分大小写。变量的类型可以是我们所讲到的数据类型中的任意一种。Java中的变量在使用前必须被声明,指明变量的数据类型和作用域,声明时可以对其赋初值,如果不赋初值,不同类型的变量会有不同的默认的
29、初值。变量的声明格式为:type identifier=value,type identifier=value2.2.3 变量1.整型变量整型变量按照所占位数分为:byte、short、int和long四种类型。 2. 实型变量实型变量按长度分为:单精度浮点型float和双精度浮点型double。3. 字符型变量字符型变量类型为char,所占位数为16位,取值范围为065535。4字符串变量在Java语言中,字符串变量是对象,是复合类型。有两种类型的字符串变量:String类和StringBuffer类。String类是常量类,所有字符串常量都是String类的对象。StringBuffer类
30、是字符串缓冲区。5. 布尔型变量布尔型变量类型为bollean,占8位内存,只有true和false两个值。2.3 运算符2.3.1 算术运算符2.3.2 关系运算符2.3.3 布尔运算符2.3.4 赋值运算符2.3.5 位运算符2.3.6 条件运算符2.3.7 字符串运算符2.3.8 类型转换2.3.9 优先级和结合性2.3.1 算术运算符操作数运算符运算示例一元+取原值+x-求反值-x+自增x+, +x-自减x-, -x二元+加x+y-减x-y*乘x*y/除x/y%取模x%y2.3.2 关系运算符运算符运算示例小于ab,45, a小于ab, 56, b6=小于等于a=b, 5=5, a=大
31、于等于a=b, 5=5, a=8=等于a=b, 5=6, a=8!=不等于a!=b, 5!=5, a!=82.3.3 布尔运算符运算符运算示例运算规则!逻辑非!aa真时为假,a假时为真&简洁与a&ba,b都真时才为真|简洁或a|ba,b都假时才为假&非简洁与a&ba,b都真时才为真|非简洁或a|ba,b都假时才为假异或abab真假不同时为真2.3.4 赋值运算符运算符运算示例运算规则!逻辑非!aa真时为假,a假时为真&简洁与a&ba,b都真时才为真|简洁或a|ba,b都假时才为假&非简洁与a&ba,b都真时才为真|非简洁或a|ba,b都假时才为假异或abab真假不同时为真2.3.5 位运算符运
32、算符运算示例按位取反133=122&按位与1&1=1,1&0=0,0&1=0,0&0=0|按位或1|1=1,1|0=1,0|1=1,0|0=0按位异或11=0,10=1,01=1,00=0左移16算术右移161=8逻辑右移161=82.3.6 条件运算符条件运算符是一种三元运算符,一般形式为:表达式1?表达式2:表达式3;表达式1的值为布尔值,先计算表达式1,如果值为true,计算并返回表达式2的值,否则计算并返回表达式3的值。例如:max=(ab)?a:b;将a和b中值较大的那一个赋给max。2.3.7 字符串运算符运算符“+”可以将两个或多个字符串连接,也可以将字符串和其他类对象连接起来,
33、在连接时,其他类对象也转换成字符串。另外,“+=”把两个字符串连接起来,并把结果放到第一个字符串里。在本章的例子中,在输出多项内容时,就是使用“+”将各项连接起来的。2.3.8 类型转换表达式是由操作数和运算符按一定的语法规则组成的符号序列。每个表达式都会产生一定的值,称为表达式的值。一个常量或一个变量是最简单的表达式,用运算符和表达式连接起来组成的符号序列是表达式。在一个表达式中可能有不同类型的数据进行混合运算,这是被允许的,在运算时,可以进行类型转换。所谓类型转换就是将一种数据类型的常数或变量转换到另外的一种数据类型。类型转换有两种:自动类型转换(或称隐含类型转换)和强制类型转换。2.3.
34、8 类型转换1. 自动类型转换运算数1类型运算数2类型结果类型byte或shortIntintbyte或short或intLonglongbyte或short或int或longFloatfloatbyte或short或int或long或floatDoubledoublecharIntint2.3.8 类型转换2. 强制类型转换高级数据要转换为低级数据时,需要进行强制类型转换,强制类型转换的格式是:(数据类型)变量名经过强制类型转换,将得到一个在“()”中声明的数据类型的数据,该数据是从指定变量所包含的数据转换而来的。值得注意的是,指定变量本身不会发生任何变化。例如:long x;int y;y
35、=(int)(x+1);将占用位数较长的数据转化成占用位数较短的数据时,可能会造成数据超出较短数据类型的取值范围,造成“溢出”。2.3.9 优先级和结合性优先级运算符结合性高低. ( )从左至右+ - ! 从右至左New (type)* / %从左至右+ -从左至右 从左至右 =从左至右= !=从左至右&从左至右从左至右|从左至右&从左至右|从左至右?:从右至左= += -= *= /= %= =从右至左&= |= = =从右至左2.4 输入输出初步2.4.1 输出2.4.2 输入2.4.1 输出System.out.println()在程序中可以把常量、变量或表达式的值输出到屏幕上。 pri
36、ntln方法可以有0个或1个参数,参数的类型可以是char、byte、int、boolean、float、double、String和Object(对象)类型,这些类型的数据在转换成相应的字符串后输出。如果是0个参数,则输出一个回车换行,即光标移到下一行行首;如果有1个参数,则输出相应内容后,输出一个回车换行。如果输出内容后,不需要回车换行,可以使用System.out.print()进行输出,该方法需要1个参数,参数类型和println相同,输出参数的值后不输出回车换行。2.4.2 输入在Java语言中,没有和System.out.print()对应的输入方法,只有一个System.in.r
37、ead()方法用于从键盘输入byte类型的数据。1. System.in.read()方法2. 用输入流实现输入3. 给main()方法传递参数第3章 程序逻辑3.1 程序结构的基本类型3.2 顺序结构3.3 分支结构3.4 循环结构3.5 其他流程控制语句3.6 方法3.1 程序结构的基本类型3.2 顺序结构3.2.1 语句3.2.2 块 3.2.1 语句Java语言中,语句是程序最基本且最重要的组成部分。1. 语句最大的特点:以分号结束。如: int i ;2. Java语言中,常用的有下面这几类语句:声明语句 如:char a=A;表达式语句 如:i+; System.out.print
38、ln(“Hello!”);分支语句 如:if-else语句、switch语句循环语句 如:while语句、do-while语句及for语句跳转语句 如:break; continue; 异常语句 如: try-catch-finally语句 空语句 如: ; 3.2.2 块 块是用一对花括号“”将零个或多个语句括起来,就构成一个块(也称复合语句)。它也是Java程序的组成部分。 【例3-1】块的使用。1 public class UseBlock2 3 public static void main(String args)4 5 int a=5;6 a+=8;7 /开始一个块8 int b=
39、6; /变量b只能在这个块内使用9 b=b+a;10 System.out.println(a+ +b);11 12 13 3.3 分支结构3.3.1 if-else语句3.3.2 分支嵌套3.3.3 switch语句3.3.1 if-else语句if-else语句根据条件表达式这个判断条件的值为真或为假来执行两种不同操作中的一种操作。语法格式如下: if (条件表达式) 语句块1; else 语句块2; 3.3.2 分支嵌套分支嵌套是指嵌套的if-else结构。嵌套的if-else结构是通过在if-else的语句块中再放置if-else结构来实现对多种情况的选择。其形式如下: 格式(一) i
40、f(条件表达式1) 语句块1 else if(条件表达式2) 语句块2 else 语句块n; 格式(二) if(条件表达式1) 语句块1 else if(条件表达式2) 语句块2 else if() else 语句块n; 3.3.3 switch语句switch语句的一般格式如下:switch(表达式) case 判断值1:语句块1;break; case 判断值2:语句块2;break;case 判断值3:语句块3;break; case 判断值n:语句块n;break; default:语句块n+1其中,表达式必须是整形或字符型;判断值必须是常数,而不能是变量或表达式。各case后面的常量
41、不能有相同的值。3.4 循环结构3.4.1 while语句3.4.2 do-while语句3.4.3 for语句3.4.4 循环嵌套3.4.1 while语句while语句的一般语法格式为: while(条件表达式) 循环体对该语句的解释:条件表达式的返回值为布尔型。循环体可以是单个语句,也可以是多个语句组成的语句块。while语句的执行过程是:先判断条件表达式的值,若为真,则执行循环体,循环体内一般有迭代部分(循环重复做的操作)和循环变量发生变化的部分,循环体执行完后,再无条件的转向条件表达式去做计算和判断;当计算出条件表达式为假时,则跳出循环体,执行while语句后面的语句。若首次执行wh
42、ile语句时,作为循环条件的条件表达式的值为false,则循环体一次也未执行,即while语句循环体最少执行次数为0次。3.4.2 do-while语句do-while语句和while语句很相似。while语句在执行循环体前先检查条件表达式(循环条件),即循环体未执行之前进行测试。但有些情况下,不管条件表达式的值是true还是false,都希望把循环体至少执行一次,那么就应当使用do-while循环语句。do-while语句在执行循环体后测试循环条件,因此循环体至少执行一次。do-while语句的一般语法格式为: do 循环体 while(条件表达式);3.4.3 for语句for语句是循环语
43、句中功能最强、使用最广的语句,它的用法也比较灵活。 for语句的一般语法格式如下: for(表达式1; 表达式2; 表达式3) 循环体“表达式1(循环变量赋初值)”、“表达式2(循环条件,是返回布尔值的条件表达式,用来判断循环是否继续)”、“表达式3(循环变量增量、用来修改循环变量,改变循环条件)”都是可选项,即可以省略,但“;”不能省略。该语句的执行过程如下:首先计算表达式1,完成必要的初始化工作;再判断表达式2的值,若为真,则执行循环体,执行完循环体后再返回表达式3,计算并修改循环条件。这样for循环的当次循环就结束了。第二次循环从计算并判断表达式2开始,若该表达式的值仍为真,则继续循环;
44、否则,跳出并结束整个for语句的循环,执行for语句下面的其他语句。3.4.4 循环嵌套循环嵌套是指在某个循环语句中又包含了另一个循环语句,也称多重循环,外面的循环语句称为“外层循环”,外层循环的循环体内的循环称为“内层循环”。3.5 其他流程控制语句3.5.1 标号3.5.2 break语句3.5.3 continue语句3.5.1 标号标号是一个标识符,用于给某一程序块一个名字。常用格式如下:label:程序块label是标号名,用标识符表示。标号名用冒号与其后面的语句(块)分开。 3.5.2 break语句break语句分为带标号和不带标号两种格式:格式1: break ;格式2: br
45、eak 标号;对该语句的解释:不带标号的break语句从它所在的switch分支或最内层的循环体中跳转出来,执行switch或循环体后面的语句。带标号的break语句的标号应该标志一个语句块,并且该break语句包含在该语句块中。执行break语句时,从标号所标记的语句块中跳出来,流程直接转到标号语句块后面的语句。break语句一般与if语句一起使用,在满足一定的条件时执行break语句跳出。3.5.3 continue语句continue语句只用在for、while和do-while等循环体中,它的功能是:使得程序跳过程循环体中continue语句后剩下的部分,终止当前这一次循环的执行,直接
46、进行下一次循环条件的判断。continue语句分为不带标号和带标号两种形式: 不带标号的continue语句:continue ; 带标号的continue语句: continue 标号;不带标号的continue的功能:无条件地使流程转移到循环语句的下一次循环条件判定部分。带标号的continue的功能:功能:无条件地使流程转移到带标号的循环语句的下一次循环条件判定部分。continue语句常和if语句放在一起使用,在满足一定的条件时执行continue语句。 3.6 方法3.6.1 方法的定义3.6.2 方法的调用3.6.3 方法的重载3.6.4 方法的嵌套和递归3.6.5 方法和变量的作
47、用域3.6.1 方法的定义方法是描述实现某个特定功能所需的数据及进行的运算和操作。方法是由方法头和方法体组成。方法定义的形式如下:修饰符1 修饰符2 返回值类型 方法名(形式参数列表) throws 异常列表 方法体形式参数列表的格式为:形式参数类型1 形式参数名1,形式参数类型2 形式参数名2, 形式参数列表允许将参数值传递到方法中。列举的参数由逗号隔开,每个参数包含一个类型和一个标识符名。方法名可以是任何合法标识符,当然最好有一定的实际意义。后面的小括号( )是方法的标志,不能省略。方法的修饰符项是可选的,也可以没有,可以是多个。方法的返回值类型是必须的(构造方法除外)。 3.6.2 方法
48、的调用一般而言,有返回值的方法调用形式为表达式形式,即可以在允许表达式出现的地方使用方法调用。若方法无返回值(void类型),方法调用的形式一般为表达式语句的形式,即调用方法的形式为单独加分号的语句。3.6.3 方法的重载Java语言允许在一个类中定义几个同名的方法,只要这些方法具有不同的参数集合,即方法参数的个数、类型和顺序不同,这就称为方法的重载。在调用一个重载方法时,Java编译器通过检查调用语句中方法参数的个数、类型和顺序的不同,来调用合适的方法。方法重载一般用来创建对不同类型的数据进行类似操作的同名方法。如Java自定义的Math类中的方法abs()、max()和min()等都是重载
49、的,它们具有double、float、int、long等参数和返回值类型的重载方法。3.6.4 方法的嵌套和递归在解决较为复杂的问题时,用到方法调用的地方比较多。如果在调用的一个方法的方法体中又调用了另外的方法,这就被称为方法的嵌套调用,也称方法的嵌套。方法嵌套中更为特别的是,如果在被调用一个方法的方法体中又调用一个方法,而这个方法正是它自身,即:如果在被调用的一个方法体中又调用它自身的方法嵌套称为方法的递归。3.6.5 方法和变量的作用域所谓方法和变量的作用域就是指它们在程序中可以被使(引)用的范围。一些方法和变量可以在整个程序中使用,但有些方法和变量只能在程序的有限部分段中使用。1. 变量
50、的作用域变量按其作用域的大小可以分为局部变量和实例变量或类变量。局部变量:是定义在块内、方法体内的变量。这种变量的作用域是以块和方法为单位的,仅在定义该变量的块内或方法体内有效,而且要先定义赋值,然后再使用,即不允许超前使用。局部变量在方法每次被调用时重新初始化,与上次的调用无关。因为局部变量在查找时首先被查找,因此若某一局部变量与类的实例变量名或类变量相同时,则该实例变量或类变量在方法体内被暂时“屏蔽”起来,只有退出这个方法后,实例变量或类变量才起作用。3.6.5 方法和变量的作用域2. 方法的作用域用static修饰符修饰的修饰的方法称为静态方法,又叫做类方法。不用static修饰符修饰的
51、方法,则称为实例方法。实例方法和类方法在整个类内都是可见的,即都是可以被引用的。类方法的本质是它属于整个类,不属于某个实例(具体的对象),所以只要声明了类,它的类方法就存在了,就可以调用;而实例方法则属于每个实例对象,只能在类的实例和子类的实例中调用。第4章 面向对象的程序设计4.1 类4.2 类的继承4.3 接口4.4包4.1 类4.1.1 类的定义4.1.2 对象4.1.3 构造方法4.1.4类的成员和修饰符4.1.1 类的定义类就是具有一组相同属性和行为的对象。在面向对象的程序设计中,建立这种抽象的类,是我们进行程序设计的基础。Java中使用class这个关键字来定义一个类,使用数据成员
52、来描述一个类的属性,使用方法来描述一个类的行为。在Java语言中,用户自己定义一个类的一般形式为:class 用户自己定义的类名 数据成员 方法可以看到,类的声明是由类说明和类实体两部分组成。类说明部分由关键字class与类名组成。类实体是类声明中花括号所括起来的部分,它由成员变量和方法组成,是类的主题部分。4.1.2 对象类是对象的模板,对象是通过类的实例化来创建的。要创建新对象,需要使用Java中的new关键字,创建对象的一般形式为:类名 对象变量new 类名(参数1,参数2,);或者类名 对象变量;对象变量new 类名(参数1,参数2,);new这个关键字用来创建类的实例,也就是对象。当
53、使用new的时候,实际上是在完成以下几件事情:(1) 首先使用类的模板创建了一个对象(2) 接着为这个对象分配内存空间(3) 最后执行由类模板中所定义的构造方法4.1.3 构造方法构造方法的实质是用来进行对象数据的初始化,它必须和定义它的类使用完全相同的名字。构造方法可以被重载,从而更易于用不同的数据值来构造对象。为Circle类定义构造方法如下:Circle ( double r ) / 带参数的构造方法 radius= r; Circle ( ) / 默认的构造方法 radius=1.0;4.1.4类的成员和修饰符1. static修饰符关键字static可以用来修饰类的成员变量或者方法,
54、使它们成为静态成员。(1)静态方法当一个类被static修饰符修饰时,它是一个静态方法,也称为类方法。可以用如下两种方法使用静态方法,它们的作用是相同的。类名.方法名()类对象.方法名()(2)静态变量静态变量与静态方法类似,所有此类的实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,不同类对象访问的静态变量是同一个。 4.1.4类的成员和修饰符2. final修饰符final关键字的意思是最终,它有三个用途,(1) 用来修饰成员变量。这样的成员变量被成为最终成员变量。最终成员变量一般在声明时进行初始化,一旦最终成员变量被赋值,那么它在整个成员执
55、行过程中不能改变。(2) 用来修饰类,被final所修饰的类,不能被继承,也就是说,它没有子类。(3) 用来修饰方法,被final所修饰的方法不能被更改,也就是说,不能被子类重载。3. abstract修饰符abstract修饰符可应用于类和方法 4.1.4类的成员和修饰符4. public修饰符public的意思就是公开的,也就是说如果一个类被修饰为public,那么这个类就是公共类,公共类不仅可以供它所在包中的其他类使用(有关于包的概念会在以后讲到),也可以让其他包中的类使用。5. private修饰符private的意思就是私有的,也就说,假如有一些类的成员不想让别的类来访问,我们就可以
56、把它们设为私有的,使用private这个关键字来修饰。 6. protected修饰符protected的意思就是受保护的,使用protected关键修饰的成员变量和方法,可以被类本身、子类或者包中的方法可以访问,而对于其他类没有访问权限。4.2 类的继承4.2.1 类继承的实现4.2.2 抽象类和抽象方法4.2.1 类继承的实现1. 类继承Java中的继承使通过使用extends关键字来实现的,定义继承的形式为:Class 类名 extends 父类2.类的成员覆盖在类的继承中,如果子类新增的成员名与父类成员相同,则称为成员覆盖。(1) 成员变量的覆盖如果子类中定义了和父类中同名的变量,那么
57、父类中的变量就被隐藏起来了。直接使用的是子类的变量,但父类的变量仍然占据空间,可以通过super或父类名来访问。(2) 成员方法覆盖除了成员变量可以被覆盖以外,子类也可以定义与父类同名的方法,实现对父类方法的覆盖。4.3 接口4.3.1 接口的定义4.3.2 接口的实现4.3.3 接口的继承4.3.4 接口的多态4.3.1 接口的定义在Java语言中,使用关键字interface来定义接口,接口和类的结构类似,也可以通过extends继承其他接口。格式如下:interface 接口名 extends 父接口名1,父接口名2,通过以上定义可以看到,与类相比,接口有一些特点:(1) 在Java中,
58、类不能实现多重继承,而接口可以实现,通过在extends后面的多个接口来定义。(2) 所有的类都是继承于Object,Object类是所有类的最高层;而接口允许没有父接口,即接口不存在最高层。(3) 接口中的方法只能被声明为public和abstract,如果不声明,则默认为public abstract;接口中的成员变量只能用public、static和final来定义,如果不声明,则默认为public static final。(4) 由于接口中的方法都是abstract方法,所以接口中的方法是没有方法体的。 4.3.2 接口的实现接口的实现使用以下格式:class 类名 implemen
59、ts 接口名1,接口名2,其中,在类中使用implements关键字实现接口,而且可以实现多个接口;由于接口中定义的方法都是抽象方法,如果实现接口的类不是抽象类,那么必须要实现指定接口的所有抽象方法;抽象方法在实现时要设定为public属性,否则会产生访问权限错误。4.3.3 接口的继承接口也可以通过extends关键字继承其他接口。子接口将继承父接口中所有的变量和抽象方法。此时,实现子接口的非抽象类不仅需要实现子接口的抽象方法,而且还要实现继承来的抽象方法,不允许存在未被实现的接口方法。4.3.4 接口的多态由于接口中所定义的为抽象方法,因此接口的使用可以使得方法的描述说明和方法功能的实现分
60、开考虑,这样有助于降低程序的复杂性,使程序设计灵活,便于扩充修改,这也是Java面向程序的设计方法中多态特性的体现。4.4包4.4.1 创建包4.4.2 引用Java定义的包4.4.3 自定义包4.4.1 创建包Java的应用程序接口API是以包的形式提供的,每个包中包含有大量相关的类、接口和异常。程序设计者不需要从头编写程序的,可以充分利用API中所提供的大量资源,高效快捷地开发出应用程序。1.java.langjava.lang是Java语言的核心包,有Java程序所需要的最基本的类和接口,包括Object类、基本数据类型包装类、数学类、异常处理类、线程类、字符处理类。系统与运行类和类操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 立陶宛语民间故事的语言风格研究论文
- 护理病历先进的管理模式
- 2025家居设计合同家装设计合同(简化版)
- 2025年政府租赁土地合同
- 2025-2030立式磨行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030科学杂志行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030礼庆服装行业市场发展分析及投资前景研究报告
- 2025-2030硅酮防水涂料行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030石灰行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030睡袋行业风险投资发展分析及投资融资策略研究报告
- 某地区现代有轨电车施工方案
- GB/T 6974.3-2024起重机术语第3部分:塔式起重机
- DB11T 2103.1-2023 社会单位和重点场所消防安全管理规范 第1部分:通则
- 物业品质巡查管理制度
- 高中物理-《互感与自感》课件-新人教版选修3
- 养殖林麝合作协议书模板
- 钢铁项目环评报告 - 2工程分析
- 大学数学《概率论与数理统计》说课稿
- 旅行社安全教育培训制度
- DL 5190.2-2019 电力建设施工技术规范 第2部分:锅炉机组
- 股权转让确认函
评论
0/150
提交评论