《Java程序设计教程(第2版)》全套教学课件_第1页
《Java程序设计教程(第2版)》全套教学课件_第2页
《Java程序设计教程(第2版)》全套教学课件_第3页
《Java程序设计教程(第2版)》全套教学课件_第4页
《Java程序设计教程(第2版)》全套教学课件_第5页
已阅读5页,还剩860页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计教程(第2版)全套可编辑PPT课件Java概述01Java的产生与发展02Java的特点CONTENTS目录1Java的产生与发展Java的产生与发展Sun公司开发了一种面向对象语言,命名Oak。19911995.5Sun公司正式发Java语言。1996.1Sun公司发布了第一个开发工具包JDK1.0。1997.2Sun公司发布了JDK1.1。1998.12Sun公司发布了发布了JDK1.2。Sun公司发布了JavaSE6。2005.6时间轴Java的产生与发展Java主要技术分支Java2J2SEJ2EEJ2MEJavaSEJavaEEJavaMEJava标准版,主要用于桌面应用程序的开发。企业版,主要用于企业级分布式的网络程序。微型版,主要用于嵌入式系统的开发。核心2Java的特点Java的特点总的来说,Java语言具有以下特点:(1)Java语言是简单的。(2)Java语言是面向对象的。(3)Java语言是分布式的。(4)Java语言是解释执行的。(5)Java语言是可移植的。(6)Java语言是安全的。(7)Java语言是健壮的。(8)Java语言是多线程的。(9)Java语言是高性能的。(10)Java语言是动态的。第一个Java程序01最简单的Java程序结构02Java的编程规范03Java程序的开发流程04总结CONTENTS目录1最简单的Java程序结构最简单的Java程序结构/*Welcome.java*/publicclassWelcome{publicstaticvoidmain(Stringargs[]){ //输出字符串System.out.println("欢迎学习Java语言!"); }}“/*”和“*/”是Java语言的多行注释信息class用来定义一个新的类,其类名是Welcome,它是一个公共类(public)整个类定义用大括号{}括起来,其内部称为类体1.public用于表示访问权限;2.static表示该方法是一个静态方法;3.void表示main()没有返回值;4.Stringargs[]为main()传入的参数,一般是通过命令传入的参数;5.main()为Java程序的入口,并且创建main()只能按照固定写法,否则不能作为Java程序的入口。双斜线“//”后面的内容是Java语言的单行注释信息System表示系统类,out是PrintStream类的对象,println是out对象的方法,其功能是输出“”里面的内容并换行2Java的编程规范Java的编码规范1.代码注释代码注释是对程序中的代码进行解释说明,是程序的非执行部分。在程序代码中适当地添加注释,可以提高程序的可读性和可维护性。Java语言提供了3种添加注释的方法,分别是单行注释、多行注释和文档注释。(1)单行注释标记为“//”

例如://输出一句话(2)多行注释标记为“/**/”

例如:/*

开发人员:张某某

修改人员:李某某*/

(3)文档注释标记为“/***/”例如:/***参数1:name姓名*参数2:age年龄*/Java的编码规范2.空格和空行Java的编码规范3.缩进在Java中代码块最好使用4个空格进行悬挂式缩进,并且同一级别的代码块的缩进量尽量相同。类、方法、条件语句及循环语句中的代码都采用缩进方式。例如:

提示:如果使用Tab键缩进,在代码编辑器中可将1个Tab键视为4个空格。Java的编码规范4.换行Java每行代码的长度最好不要超过120个字符。对于过长的代码,建议进行换行。

没有换行有换行3Java程序的开发流程Java程序的开发流程需求分析算法设计编写程序编译程序运行程序编写程序文档分析代码是做什么的,输入的参数是什么,输出的参数是什么对要解决的问题设计出解决问题的方法和具体步骤。用Java语言编写代码,实现需求分析和算法设计的功能用Java的编译器,将写好的代码,编译成为计算机所能识别的,能够运行的二进制文件将编译好的二进制文件运行,真正能够处理需求分析所提出的问题编写用户的使用说明书4总结总结1.最简单的Java程序的基本结构注释类的定义main()方法main()方法中的内容2.编码规范代码注释、空格和空行、缩进、换行3.Java程序的开发流程需求分析->算法设计->编写程序->编译程序->运行程序->编写程序文档搭建Java开发环境01下载和安装JDK02配置JDK的环境变量03开发简单Java程序04课后作业CONTENTS目录1下载和安装JDK下载和安装JDK1.下载/java/technologies/javase-downloads.html下载和安装JDK2.安装2配置JDK的环境变量配置JDK的环境变量配置JAVA的环境变量

3.配置环境变量

温馨提示:在配置Path变量时,所添加的路径要放在最前面,因为其他软件(尤其是Oracle)也可能会对Path变量进行配置,而这种配置可能会对JDK的配置产生影响。配置JDK的环境变量3开发简单Java程序开发简单Java程序1.创建Java程序的文件夹E:\allworkspace\java_workspace2.创建Java程序的文件HelloWorld.java3.编写Java程序的代码/*HelloWorld.java*///创建类publicclassHelloWorld{ //主方法 publicstaticvoidmain(Stringargs[]){ //主方法 //输出字符串 System.out.println("HelloWorld!"); }}开发简单Java程序4.编译和运行Java程序编译命令:javac文件名.java运行命令:java文件名4课后作业课后作业1.动手安装JDK2.配置Java环境变量3.编写自己的第一个Java程序使用集成开发工具Eclipse01Eclipse简介02下载和安Eclipse03Eclipse的使用04课后练习CONTENTS目录1Eclipse的简介Eclipse的简介1.Eclipse已经是最流行的Java集成开发工具之一。2.Eclipse是一个开放源代码的、基于Java的可扩展开发平台。3.Eclipse自身的核心框架是非常小的,其他所有功能都是以

插件的形式附加到该核心框架上的。4.Eclipse的用途并不限于Java语言,支持诸如C/C++等语言。2下载和安装Eclipse下载和安装Eclipse1.下载/downloads/2.安装下载和安装Eclipse下载和安装Eclipse2.安装下载和安装Eclipse1.汉化/babel/downloads.php解压缩进入eclipse目录复制两个文件夹粘贴到eclipse安装目录的dropins目录里3Eclipse的使用Eclipse的使用1.修改字体Eclipse的使用2.创建Java项目Eclipse的使用3.创建Java类Eclipse的使用4.编写代码在控制台打印:欢迎使用Eclipse!Eclipse的使用5.运行4课后练习课后练习1.自己动手安装并汉化Eclipse2.创建Java项目,编写代码,在控制台中打印《锄禾》这首诗感谢大家观看Java程序设计教程(第2版)标识符与关键字01标识符02关键字03课后练习CONTENTS目录1标识符标识符1.什么是标识符现实生活中,所有事物都有自己的名字,以此与其他事物进行区分。在程序设计中,也常常用一个记号对变量、数组、方法和类等进行标识,这个记号就称为标识符。简单地讲,标识符就是一个名字。标识符2.标识符的定义规范(1)标识符由字母、数字、下划线(_)、美元符号($)组成,没有长度限制。√√√×标识符2.标识符的定义规范(2)标识符的首字符必须是字母、下划线或美元符号。√√√×标识符2.标识符的定义规范(3)标识符中的字母是区分大小写的,如Dog和dog是不同的标识符。(4)常量通常以大写字母英文单词命名,变量通常以小写字母英文单词命名。

如果一个变量名由多个单词构成,则第一个单词小写,第二个单词首字母大写。(5)类标识符通常以大写英文字母开始。标识符2.标识符的定义规范(6)Java关键字、保留字等不能作为用户自定义标识符使用。√××2关键字关键字1.什么是关键字关键字(keyword)是指编程语言预先定义的标识符,在程序中有其特殊的含义,用户不能将其用作自定义标识符。关键字2.Java中有哪些关键字关键字2.Java中有哪些关键字其中,保留字(reservedword)为Java语言中预留的但暂时没有使用的关键字。此外,true、false和null不是Java的关键字,它们只是常量值,但也不可以作为标识符使用。3课后练习课后练习1.熟记Java中的标识符的定义规范2.熟记Java中的关键字变量与常量01变量02常量03课后练习CONTENTS目录1变量变量1.什么是变量变量是指在程序运行过程中其值可以改变的量,它用于在程序运行时临时存放数据。变量2.变量的声明类型变量名1[=初值1][,变量名2[=初值2]……];注意:1.变量初始化后还可以对变量重新赋值,重新赋值后,新的值将会覆盖原来的值。2.Java语言中允许使用汉字或其他语言文字作为变量名。3.声明变量时应选择有意义的单词作为变量名变量2.变量的有效范围(1)成员变量:在类体中定义的变量,它在整个类中,自声明变量处开始到整个类结束的范围内有效。变量2.变量的有效范围(2)局部变量:在类的方法内部定义的变量,它只在当前定义的方法中,自变量声明处开始到方法结束范围内有效,不能用于类的其他方法。变量3.注意问题(1)为了使变量在类或方法的整个范围内有效,通常将变量声明到类或方法的最上方。(2)变量在声明时可以不赋初值,但在使用变量前必须对其赋值。(3)在小范围内使用大范围变量的时候,有些情况下,小范围将其修改后,会影响大范围变量的值。(4)局部变量尽量避免与全局变量重名。2常量常量1.什么是常量常量是指在程序运行过程中其值不能改变的量,通常也称为“final变量”,它在整个程序中只能赋值一次。2.语法final类型常量名[=初值];使用场景:一般来说,如果在程序中多处引用某个值,则可以将它定义为常量。这样,既可以避免反复输入同一个值,也可以在这个值发生变化时,只修改常量值,避免多处修改。3课后练习课后练习public

classEclipseTest{ int

f9; public

static

voidmain(String[]args){ final

char

name='e’; byte

b=4;

int

userAge=20; }}指出下面代码中的成员变量、局部变量和常量基本数据类型01数据类型分类02整型07课后练习CONTENTS目录03字符型04浮点型布尔型0506数据类型转换1数据类型分类数据类型分类Java提供了8种基本数据类型来存储数值型、字符型和布尔型数据2整型整型1.整型的取值范围数据类型关键字内存空间(位)取值范围字节型byte8−27~27−1(−128~127)短整型short16−215~215−1(−32768~32767)整型int32−231~231−1(−2147483648~2147483647)长整型long64−263~263−1整型2.整型的3种表示形式(1)十进制整数:由正、负号和数字0~9组成,但数字部分不能以0开头,例如:intx=10,y=-24;(2)八进制整数:由正、负号和数字0~7组成,数字部分以0开头,例如:shortx=010,y=-024;(3)十六进制整数:由正、负号,数字0~9,字母A~F或a~f(表示数值10~15)组成,数字部分以0X或0x开头,例如:intx=0xffff,y=-0X3D4;3浮点型浮点型1.浮点型的取值范围数据类型关键字内存空间(位)取值范围单精度型float32[−3.4028235e38~−1.4e−45]∪[1.4e−45~3.4028235e38]双精度型double64[−1.7976931348623157e308~−4.9e−324]∪[4.9e−324~1.7976931348623157e308]浮点型2.浮点型的两种表示方法(1)小数表示法,它由整数部分和小数部分组成。例如:floatc=4.0f;floatd=5.32f;(2)科学表示法,它常用来表示很大或很小的数,表示方法是在小数表示法后加“E”或“e”及指数部分。例如:floatf1=0.123f,f2=4.2e-5F;doubled1=0.123,d2=0.789d,d3=3e6D;注意:“E”或“e”前面必须有数字,指数部分可正可负,但必须都是整数4字符型字符型1.什么是字符型字符型数据是指使用单引号括起来的一个字符,它是区分大小写的,如'A'和'a'是两个不同的字符。除此之外,还可以使用字符在Unicode字符集中的位置来表示,如字符a在Unicode字符集中位置是97。例如:字符型2.字符型中的转义字符转义字符含义转义字符含义\ddd1~3位八进制数据所表示的字符,如\123\t制表符\uxxxx4位十六进制数据所表示的字符,如\u02b6\r回车符\'单引号字符\n换行符\"双引号字符\b退格符\\反斜杠字符\f换页符一些无法正常显示的字符,如回车符、换行符等,可用转义字符表示5布尔型布尔型布尔型数据只有true和false两个值,分别代表逻辑“真”和逻辑“假”。布尔型使用关键字boolean表示,它所占的内存空间为8位。例如:6数据类型转换数据类型转换1.什么是数据类型转换Java在进行赋值或运算时要对数据类型进行检查,如果数据类型不一致,则要进行数据类型转换。2.基本数据类型优先级从低到高顺序(byte、short、char)→int→long→float→double数据类型转换3.自动数据类型转换转换场景:☞当数据从低级类型向高级类型转换时,系统将自动执行,编程人员无须进行任何操作,这种转换称为自动数据类型转换。☞当参与运算的数据包含多种数据类型时,低级数据类型的数据将被自动转换为高级数据类型,以参与运算。例如://定义long型变量xlong

x=10;//由于float型优先级比long型高,x自动转换为float型,所以y的值为10.0float

y=x;//x*y的结果为float型,自动转换为double型,z的值为100.0double

z=x*y;数据类型转换4.强制数据类型转换转换场景:☞当把数据类型优先级较高的数据赋值给数据类型优先级相对较低的变量时,必须进行强制数据类型转换。语法格式:

(数据类型)数据注意:进行强制数据类型转换时,可能会产生数据溢出或精度损失。3课后练习课后练习1.下面语句不能编译成功的是()。A.inta=1+2+3; B.doubled=(int)(1+2+3);C.floatf=1+(int)(2.1+3.1); D.inta=(int)1.1+2.2;2.如有定义“doublex=3.5;”,则表达式(int)x*0.5的值是________。运算符与表达式01算术运算符与表达式02关系运算符及其表达式07运算符的优先级CONTENTS目录03位运算符及其表达式04逻辑运算符及其表达式赋值运算符及其表达式0506条件运算符及其表达式08课后练习1算术运算符与表达式算术运算符与表达式算术表达式由算术运算符和操作数组成,用于完成基本的算术运算。算术表达式的操作数包括常量、变量等。分

类运算符名

称示例运算结果二元运算符+加法运算A+BA和B的和−减法运算A−BA和B的差*乘法运算A*BA和B的积/除法运算A/BA除以B的商%取余运算A%BA除以B的余数一元运算符+正号+AA的值−负号−AA的负数++自增++A,A++A自加1−−自减−−A,A−−A自减1例如:算术运算符与表达式算术运算符应注意的问题:☞

不同类型的数据进行算术运算时,运算结果与精度最高的数据类型一致。☞

对于除法运算,如果是两个整数相除,则结果亦为整数,小数部分将被舍去,如7/2=3。只有两个数中有一个是浮点数,结果才为浮点数。且除数不能为0,否则会抛出异常。☞

自增、自减运算符前置与后置的区别:当自增(减)运算符前置时,操作数先增(减)1再使用;当自增(减)运算符后置时,则操作数先使用再增(减)1。算术运算符与表达式通过代码比较自增、自减运算符前置与后置的不同。案例:2关系运算符及其表达式关系运算符与表达式关系表达式由关系运算符和操作数组成,用来比较两个操作数的大小,比较的结果是一个布尔值(true或false)。操作数可以是算术表达式、布尔表达式、整数、浮点数和字符等。运算符名

称示

例运算结果==等于A==B如果A与B相等则结果为真,否则为假!=不等于A!=B如果A与B不相等则结果为真,否则为假>

大于A>B如果A大于B则结果为真,否则为假<

小于A<B如果A小于B则结果为真,否则为假>=大于等于A>=B如果A大于等于B则结果为真,否则为假<=小于等于A<=B如果A小于等于B则结果为真,否则为假注意:(1)关系表达式的运算次序是先分别算出运算符两侧表达式的值,然后再将两者进行比较。(2)字符型数据按其在Unicode标准字符集中的位置值进行比较。常见字符的位置值由小到大的顺序是:空格<'0'<…<'9'<'A'<…<'Z'<'a'<…<'z'<任何汉字。3逻辑运算符及其表达式逻辑运算符与表达式逻辑表达式由逻辑运算符和操作数组成。操作数可以是布尔值或布尔表达式,运算结果是布尔值。运算符名

称示

例运算结果!非!AA为true时结果为false,A为false时结果为true&&、&与A&&B、A&BA、B同为true时结果为true,否则为false||、|或A||B、A|BA、B同为false时结果为false,否则为true^异或A^BA、B同为true时或同为false时结果为false,否则为true“&&”和“||”运算符又分别称“短路与”和“短路或”。逻辑运算符与表达式关系运算符和逻辑运算符示例。案例:4位运算符及其表达式位运算符与表达式位表达式由位运算符和操作数组成,用于完成二进制位的运算。例如,将一个存储单元中的各二进制位左移或右移一位,位表达式的操作数可以是整型和字符型数据。运算符名

称示例说

明&按位与A&BA与B对应的两个二进制位均为1时,结果才为1,否则为0|按位或A|BA与B对应的两个二进制位有一个为1时,结果就为1^按位异或A^BA与B对应的两个二进制位不同时,结果为1,否则为0~按位取反~A对A的每个二进制位取反<<

左移A<<BA的二进制位全部左移B位,移出的高位舍弃,低位补0,如6<<2=(00000110)<<2=(00011000)=18>>

带符号右移A>>BA的二进制位全部右移B位,移出的低位舍弃,正数高位补0,负数高位补1。例如,9>>2=([0]0001001)>>2=([0]0000010)=2,−9>>2=([1]1110111)>>2=([1]1111101)=−3,其中[0]、[1]表示符号位>>>

无符号右移A>>>BA的二进制位全部右移B位,移出的低位舍弃,正数和负数高位都补0,如−9>>>2=([1]1110111)>>>2=([0]0111101)=0x3d5赋值运算符及其表达式赋值运算符与表达式赋值表达式由赋值运算符和操作数组成。赋值运算符以符号“=”表示,它是一个二元运算符,其功能是将右边操作数的值赋给左边操作数。左边操作数必须是一个变量,而右边操作数可以是任何表达式。运算符示

例示例表达式等价于+=A+=BA=A+B(两数相加)−=A−=BA=A−B(两数相减)*=A*=BA=A*B(两数相乘)/=A/=BA=A/B(两数相除)%=A%=BA=A%B(两数求余)&=A&=BA=A&B(两数按位与)|=A|=BA=A|B(两数按位或)^=A^=BA=A^B(两数按位异或)<<=A<<=BA=A<<B(A左移B位)>>=A>>=BA=A>>B(A带符号右移B位)>>>=A>>>=BA=A>>>B(A无符号右移B位)6条件运算符及其表达式条件运算符与表达式条件运算符属于三元运算符,即包含3个操作对象。语法格式:表达式1?表达式2:表达式3;例如:7运算符的优先级运算符的优先级运算符的优先级决定了表达式中运算符执行的先后顺序,如果两个运算符有相同的优先级,则根据它们的结合性决定先后顺序。优先级运算符结合性1()从左到右2+(正)、−(负)、++、−−、~、!从右向左3*、/、%从左向右4+(加)、−(减)从左向右5<<、>>、>>>从左向右6<、<=、>、>=从左向右7==、!=从左向右8&从左向右9^从左向右10|从左向右11&&从左向右12||从左向右13?:从右向左14=、+=、−=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=从右向左运算符的优先级如果想要改变它们的计算顺序,可以使用圆括号。2+3*4 //结果为14(2+3)*4 //使用括号后,结果为208课后练习课后练习1.已知i=0xFFFFFFFF,j=0x0,下面表达式值为0的是(

)。A.i<<2 B.i&j C.i^j D.i|j2.下面语句的输出结果是__________。!(3>5&5<7|8+9<23)Java程序设计教程

之典型案例01计算球体体积02课后作业CONTENTS目录1计算球体体积典型案例问题描述

编写一个Java程序,根据输入的球体半径,计算球体体积并输出。

2课后作业课后作业输入圆柱体的底面半径和高,计算圆柱体的表面积感谢大家观看Java程序设计教程(第2版)程序结构程序结构结构化程序设计分为顺序、选择、循环3种基本结构。结构化程序设计的3种基本结构按照程序代码先后顺序自上而下地执行,直到程序结束。根据判断条件是否满足来决定是否执行指定操作。重复执行某些操作,直到不满足循环条件才终止循环条件语句01if语句02switch语句03课后作业CONTENTS目录1if语句if语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句简单if语句的语法格式如下:if(表达式){

语句块}注意:若if判断语句的语句代码块中仅有一条执行语句,可省略{}布尔表达式语句块truefalseif语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句if语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句if…else…语句的语法格式如下:if(表达式){

语句块1}else{

语句块2}布尔表达式语句块1true语句块2falseif语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句if语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句if…elseif…else…语句的语法格式如下:if(表达式1){

语句块1}elseif(表达式2){}{

语句块2}…elseif(表达式n){}{

语句块n}else{

语句块n+1}truetruetruefalsefalsefalseif语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句if语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句嵌套的if语句的语法格式如下:if(表达式1){ if(表达式2){

语句块1 } else{

语句块2 }}else{ if(表达式3){

语句块3 } else{

语句块4 }}布尔表达式1语句1true语句4false布尔表达式2布尔表达式3语句2语句3truefalsetruefalseif语句分类简单的if语句if…else…语句if…elseif…else…语句嵌套的if语句2switch语句switch语句if-elseif-else语句分支较多时,会降低程序的可读性。Java中的switch语句可以通过数据匹配的方式实现程序的多分支控制,其语法格式如下:switch(变量){ case变量的可能结果1:[语句块1][break;] case变量的可能结果2:[语句块2][break;]

… case变量的可能结果n:[语句块n][break;] [default:语句块n+1]}switch后面表达式的值必须是整型、字符型或字符串类型;case后面常量表达式的值必须与switch后面表达式的值的数据类型相同;方括号括起来的内容是可选项。switch语句注意事项:同一个switch语句中,各个case后的常量表达式的值必须互不相等。case后的语句可以是一条语句,也可以是多条语句,此时多条语句不必用大括号括起来。default可以省略,省略时如果没有与switch表达式相匹配的case常量,则不执行任何语句,程序转到switch语句后的下一条语句执行。break语句和switch语句最外层的右大括号是退出switch选择结构的出口,遇到第1个break即终止执行switch语句,如果程序没有break语句,则在执行完某个case语句后,将继续执行下一个case语句,直到遇到switch语句的右大括号为止。因此,通常在每个case语句后增加一个break语句,来达到终止switch语句执行的目的。switch语句案例:3课后作业课后练习下面if语句语法正确的是(

)。A.

B.if(x>0) ifx>0 x=1; x=1;else else x=-1; x=-1;C. D.if(x>0): if(x>0) x=1; x=1else else x=-1; x=-1循环语句01while语句02do-while语句05课后练习CONTENTS目录for语句03循环嵌套041while语句while语句1.while语句的语法格式while(表达式){

语句块 //循环体}表达式语句块truefalsewhile语句2.while语句的注意事项变量初始化描述要完整、准确。在循环体中应有使循环趋向于结束的语句。while语句3.案例分析使用while语句求S=1+2+3+…+100的值。2do-while语句do-while语句1.do-while语句的语法格式do{

语句块 //循环体}while(表达式);表达式语句块truefalsedo-while语句2.案例分析使用do-while语句求S=1+2+3+…+100的值。3for语句for语句1.for语句的语法格式for(表达式1;表达式2;表达式3){

语句块 //循环体}表达式1:通常是赋值表达式,实现循环变量的初始化。只在循环开始前执行一次。表达式2:通常是关系表达式或逻辑表达式,是循环是否继续的判断依据。如果其值为true,则执行循环体,如果为false则结束循环。表达式3:用来描述循环变量的变化,多数情况下为自增或自减表达式,实现对循环变量的修改。例如:for(inti=1;i<=10;i++){

语句块}for语句2.案例分析使用for语句实现,输入一个整数,输出该整数的所有因子。4循环嵌套循环嵌套1.什么是循环嵌套一个循环语句的循环体内包含另一个完整的循环结构,称为循环的嵌套。while语句、do-while语句和for语句可以互相嵌套,自由组合。例如:for(inti=1;i<5;i++){ for(intj=0;j<i;j++){ System.out.print("$");}}循环嵌套2.案例分析编写程序,输出以下乘法表。1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=16…………1*9=92*9=93*9=274*9=36……9*9=815课后练习课后练习使用while循环输出2~100的所有素数(只能被1和自己整除的自然数),每行输出5个。跳转语句01跳转语句使用场景03continue语句05课后练习CONTENTS目录02break语句04return语句1跳转语句使用场景跳转语句使用场景1.什么是跳转语句跳转语句的作用是使程序从一个位置跳转到另一个位置。Java提供了一种在条件满足的时候跳出循环的机制。即当我们不知道循环将要执行的次数时,可以通过设置终止循环的条件来跳出循环。2.跳转语句的分类break语句continue语句return语句throw语句throw语句会抛出异常,且后面的语句不会执行,跳到捕获异常的地方。2break语句break语句1.break语句的使用范围break语句用于switch语句时,可以使程序跳出switch语句,从而执行swith语句之后的语句。break语句用于循环语句时,可以使程序终止循环而执行循环后的语句。2.break语句的用例计算满足条件的最大整数n,使得1+2+3+…+n<=1000。循换结构的选择,for循环或者while循环break语句通常用在switch语句及循环语句中,循环语句包括for、while、dowhile等。3continue语句continue语句1.continue语句的使用范围与break语句终止整个循环不同的是,continue语句用于终止本次循环,即跳出continue语句后边的语句,然后执行下次循环。2.continue语句的用例输出1~20所有的奇数。取数的范围循环中的非奇数如何处理4return语句return语句1.return语句的使用范围return语句用在方法中,以终止当前的方法,返回到方法的调用处。2.return语句的表达式(1)return语句后面可以带返回值,也可以不带。return[表达式];(2)表达式可以是常量、变量、对象等。return语句后面表达式的数据类型必须与方法声明的数据类型一致。(3)当程序执行return语句时,先计算表达式的值,然后将表达式的值返回到调用该方法的语句处。(4)位于return语句后面的代码不会被执行,所以return语句通常位于语句块的最后。3课后练习课后练习使用for循环语句完成break的用例输出1-30中偶数典型案例 —猜数字游戏01猜数字游戏02课后练习CONTENTS目录1猜数字游戏猜数字游戏1.案例需求根据提示(数字太大或太小),输入数字。如果猜错了,则继续游戏,猜对了则终止游戏,并输出猜数字次数。2.案例分析使用while循环实现多次输入数字在循环中嵌套使用if-elseif-else语句判断是否猜对定义计数变量记录猜数字次数,每执行一次循环,计数变量增加1如果输入的数字大于或小于目标数字,则输出数字太大或太小的提示,使用continue跳出本次循环如果输入的数字等于目标数字,则输出猜对提示,并输出猜数次数,使用break跳出循环2课后练习课后练习输出1,2,3,4,5所有的组合整数(不能出现重复的数)感谢大家观看Java程序设计教程(第2版)面向对象概述01对象和类02面向对象程序设计的基本特征CONTENTS目录对象和类对象属性行为类:对这些具有共同特征的对象的概括、归纳和抽象表达。图4-1类和对象的关系对象和类面向对象程序设计具有封装、继承和多态3个基本特征。1.封装(3)用户只能通过已定义的接口访问数据,避免了外部操作对内部数据的影响。封装可提高程序的安全性和可维护性。(1)封装是OOP的核心思想,它将对象的属性和行为封装起来(其载体是类),隐藏其实现细节,用户只需通过接口来访问对象。(2)封装控制了用户对类的修改和访问数据的程度,从而保证了类内部数据结构的完整性。对象和类2.继承继承:面向对象程序设计中两个类之间的一种关系,是指从已有的类中派生出新的类。被继承的类继承父类的类超类或父类子

类继承父类的属性和行为增加自己的属性和行为改变从父类继承来的行为继承使父类的代码得到重用,在继承父类提供的共同特性的基础上增加新的代码,从而使编程不必从头开始,有效提高了编程效率。对象和类3.多态多态性可以用“一个对外接口,多种实现方法”来表示。子类继承父类的属性和行为后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或行为在父类及其各个子类中具有不同的含义。类01类定义02成员变量07课后练习CONTENTS目录03成员方法04方法重载05this关键字06构造方法1类定义类定义语法格式[类修饰符]class类名[extends父类名][implements接口名]{//类声明 …… //类体}注意:类修饰符可以是public、abstract和final等关键字,如果缺省,Java编译器默认该类为friendly类;class是Java的关键字,表示一个类的声明;类名必须是合法标识符,通常是一个有意义的名称,且首字母一般是大写字母;extends关键字表示继承,父类名是要继承的类名;implements关键字表示类实现接口。类定义例子2成员变量成员变量语法格式[修饰符]数据类型变量名[=初值];注意:修饰符可以是访问控制修饰符,也可以是static、final等关键字;数据类型可以是基本数据类型,也可以是引用数据类型;在定义成员变量时,可以设置初值,也可以不设置初值。如果不设置初值,Java使用默认值对其进行初始化。数据类型默认值byte、short、int、long0float、double0.0char''(空格)booleanfalse引用类型null(空值)成员变量例子Stringname="张三"; //定义学生姓名,并赋初值为“张三”intage; //定义学生年龄,默认初值为0floatscore; //定义学生成绩,默认初值为0.03成员方法成员方法语法格式[修饰符]返回值类型方法名([参数列表])[throws异常类型]{//方法声明 …… //方法体}注意:修饰符可以是访问控制修饰符,也可以是static、abstract、final等关键字;返回值类型用来指定返回数据的类型,必须是Java合法的数据类型,如果不需要返回值,则使用void关键字;参数列表表示调用该方法时传递给方法的参数;[throws异常类型]表示抛出异常;如果定义的方法有返回值,则必须使用return关键字返回一个指定类型的数据,并且返回值的类型要与方法返回值的类型一致。成员方法classStudent{ intage; //定义学生年龄 publicintgetAge(){ //定义成员方法 returnage; //返回学生年龄 }}例子4方法重载方法重载什么是方法重载Java中方法重载是指一个类中可以定义名字相同但参数不同的多个方法。调用方法时会自动根据不同的参数选择相应的方法。特点:(1)方法名必须相同。(2)方法的参数不同,包括参数的个数、类型或顺序。(3)可以有不同的返回类型。(4)可以有不同的修饰符。(5)可以抛出不同的异常。方法重载案例定义一个类,在该类中重载pay()方法,描述所有超市都支持现金付款,大型商超还支持刷卡付款,以及计算本次支付金额。5this关键字this关键字this关键字的几种用法当成员变量的名字和局部变量的名字相同时,如果要在方法中访问成员变量,可以使用this关键字。this关键字this关键字的几种用法在方法体中,通过this关键字可访问当前类的成员变量和方法。this关键字this关键字的几种用法辅助调用类的构造方法尤其是当构造方法有多个时。但要注意的是,this()语句前不能有其他语句。6构造方法构造方法构造方法的特点构造方法没有返回值。构造方法的调用时机与一般的方法不同。一般的方法是在需要时调用,而构造方法则是在创建对象时自动调用。所以构造方法一般用于初始化成员变量。构造方法能被访问控制修饰符修饰,但不能被static、abstract、final等关键字修饰。构造方法1.无参构造方法构造方法2.有参构造方法6课后习题课后习题下列关于构造方法的叙述中,错误的是()。A.构造方法不可以重载 B.构造方法没有返回值,但不用void声明C.构造方法名与类名相同 D.构造方法可以通过new自动调用下列关于this的说法中,正确的是()。A.this特指对某个成员的引用 B.this不能在静态方法中引用C.this是对某个类的引用 D.this可以用在构造方法中对象01创建对象02使用对象04课后练习CONTENTS目录03销毁对象1创建对象创建对象语法格式类名对象名=new类的构造方法(参数列表);例子Stringname=“张三”;intage=20;Students1=newStudent(name,age);2使用对象使用对象调用对象的成员变量和成员方法的语法格式<对象名>.<变量名><对象名>.<方法名>([实参])案例:定义一个学生类Student,定义成员变量name(姓名)、age(年龄)和score(成绩),并定义有参构造方法初始化成员变量,然后定义成员方法display()显示学生信息,最后在公共类的主方法中创建对象,通过对象调用成员变量输出学生的年龄,并调用成员方法输出学生的成绩。3销毁对象销毁对象对象的生命周期创建→使用→销毁对象如何销毁:Java有一个垃圾回收器,它周期性地扫描对象的内存区,并将没有被引用的对象作为垃圾收集起来,定期释放不再使用的内存空间。用户可以在Java程序中调用System类的gc()方法来显式地运行垃圾回收程序。可以调用对象的finalize()方法,释放对象的内存空间。4课后习题课后习题设Point为已定义的类,创建Point对象a的语句是________________。修饰符01访问控制修饰符02static关键字04final关键字CONTENTS目录03abstract关键字05课后练习1访问控制修饰符访问控制修饰符什么是访问控制修饰符访问控制修饰符是一组限定类、成员变量或成员方法是否可以被程序里的其他部分访问和调用的修饰符。访问控制符的修饰范围访问范围Private(私有)Friendly(默认)Protected(被保护)Public(公有)同一个类可访问可访问可访问可访问同一个包中的其他类不可访问可访问可访问可访问不同包中的子类不可访问不可访问可访问可访问不同包中的非子类不可访问不可访问不可访问可访问类的访问控制修饰符只能是public,变量和方法的访问控制修饰符有4个,分别是private、friendly、protected和public,缺省时为friendly。2static关键字static关键字static修饰变量static变量也称为静态变量,静态变量和非静态变量的区别:静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化。非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。staticStringname=“李四”;static关键字static修饰方法static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问。对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。案例创建一个累加器,其变量为静态变量,方法为静态方法,并分别通过类和对象的方式调用,观察结果。3abstract关键字abstract关键字abstract关键字可以修饰类和方法abstract类:带有abstract修饰符的类称为抽象类,相当于类的抽象。一个抽象类可以包含抽象方法,它不具备具体功能,只用于衍生出子类。因此,抽象类不能实例化。abstract方法:带有abstract修饰的方法称为抽象方法,是指没有方法体的方法,且抽象方法只能出现在抽象类中。4final关键字final关键字final关键字可以修饰类、方法和变量final类:带有final修饰符的类称为最终类。final方法:带有final修饰符的方法称为最终方法。在面向对象程序设计中,子类可以覆盖父类的方法。但是,如果父类的某个方法用final关键字修饰,则其子类就不能覆盖这个方法。final变量:带有final修饰符的变量称为最终变量。final关键字修饰基本数据类型的变量时,该变量即为常量。如果final关键字修饰引用数据类型的变量,其本身可以修改,但指向该对象或数组的地址的引用不能修改。5课后习题课后习题用private修饰成员变量时,下面说法正确的是()。A.可以被其他包中的类访问 B.只能被同一个包中的其他类访问C.只能被所在类访问 D.可以被任意public类访问下列选项中,可以使一个类中定义的成员变量只能被同一类访问的是()。A.private B.无修饰符 C.public D.protected包01创建包02导入包CONTENTS目录03Java常用的包04课后练习1创建包创建包如何创建包启动Eclipse,在Eclipse窗口的菜单栏中选择“文件”→“新建”→“包”选项。创建包如何在包中创建类在创建好的包处,右键单击,选择“新建”→“类”选项。2导入包导入包语法格式例子:importchapter4.Book; //单类导入chapter4包中的Book类importchapter4.*; //按需导入chapter4包中的公共类import包名.公共类名;import包名.*;导入包例子://按需导入chapter4包中的公共类importchapter4.*;//按需导入chapter4.example4_8包中的公共类importchapter4.example4_8.*;包之间在存储结构上存在层次关系,但在使用方面是完全平等的。导入包案例分析在chapter4中创建包example4_8,在该包中创建公共类,导入chapter4包Book类,并创建对象调用Book类中的方法。3Java常用的包Java常用的包Java常用的包包说明java.langJava语言的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统默认加载这个包java.util包含处理时间的Date类,处理变长数组的Vector类,实现栈的Stack类和实现哈希(散列)表的HashTable类等java.awt实现构建图形用户界面(GUI)的类库。例如,低级绘图操作的Graphics类,图形界面组件和布局管理类(如Checkbox类、Container类、LayoutManger接口等),以及用户界面交互控制和事件响应的Event类java.io实现Java程序与操作系统、用户界面及其他Java程序进行数据交换的类库java.sql实现JDBC(Javadatabaseconnection)的类库,动态地安装不同驱动程序来访问不同数据源java.applet实现运行于Internet浏览器中的JavaApplet的工具类库实现网络功能的类库,如实现套接字通信的Socket类、ServerSocket类;编写用户自己的Telnet、FTP、邮件服务等实现网上通信的类;用于访问Internet上资源和进行CGl调用的类,如URL等4课后习题课后习题创建一个包,叫“com.test.example“,并在该包下创建类”Example1”典型案例—模拟贷款系统01模拟贷款系统CONTENTS目录02课后练习1模拟贷款系统模拟贷款系统题目描述模拟贷款系统,根据输入的贷款年利率、贷款年限和货款总额,计算等额本息情况下的月均还款额和总还款额并输出。等额本息情况下的计算方法

模拟贷款系统案例要求创建包chapter4.example4_9,在该包下创建Loan类和LoanTest类。Loan类实现计算等额本息情况下的月均还款额和总还款额,LoanTest类实现输入贷款年利率、贷款年限和货款总额,然后创建Loan类的对象,最后调用Loan类中的方法计算月均还款额和总还款额并输出。2课后习题课后习题定义一个店员类SalesClerk,包括一个推荐图书的成员方法,实现顾客咨询哪一类图书,店员就推荐该类图书的其中一本。例如,顾客咨询“Java”,店员推荐《Java程序设计教程(第2版)》。感谢大家观看Java程序设计教程(第2版)内部类01什么是封装02封装的案例CONTENTS目录03课后练习1什么是封装什么是封装封装就是把客观事物封装成抽象的类,并规定类中的变量和方法只让可信的类或对象操作。(1)将客观事物封装成抽象的类,类中的变量和方法只能通过类名或对象名加“.”的方式来访问。(2)将类的某些变量和方法隐藏在类内部,不允许用户直接访问,或者留下少量的方法供外部访问。2封装的案例封装的案例创建员工通信录定义一个员工类Employee,包括4个私有成员变量name(姓名)、age(年龄)、phone(联系电话)和address(家庭住址)。如果用户编程时想要实现对这4个成员变量的赋值和取值,可在该类中定义公有方法对变量进行赋值和取值,然后用户可调用该公有方法实现其功能。3课后练习课后练习定义一个职位类Position,包括4个私有成员变量title(职位名称)、salary(薪水)、requirement(职位要求)和address(地址)。如果用户编程时想要实现对这4个成员变量的赋值和取值,可在该类中定义公有方法对变量进行赋值和取值,然后用户可调用该公有方法实现其功能。继承01extends关键字02方法重写CONTENTS目录03super关键字04课后练习1extends关键字extends关键字语法格式[类修饰符]class<子类名>extends<父类名>{ …… //类实体}注意:Java仅支持单继承,即一个类只能有一个父类。同时,类的继承不改变类成员的访问权限,也就是说,如果父类的成员是公有的、被保护的或默认的,它的子类仍具有相应的特性,且子类不能继承父类的构造方法。extends关键字案例定义自行车类Bicycle,包括成员变量wheel(车轮)和刹车方法brake()。然后定义ElectroBicycle(电动自行车)类,继承Bicycle类,并新增成员变量battery(电量)。2方法重写方法重写方法重写方法重写(override)又称为方法覆盖,它在子类中创建一个与父类具有相同名称、相同返回值类型、相同参数列表的方法,只是方法体不同,以实现不同于父类的功能。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要重写方法。方法的访问控制权限只能从小的范围修改到大的范围(private<friendly<protected<public)。重写方法一定不能抛出新的检査异常或者比被重写方法声明更加宽泛的异常。例如,父类的一个方法声明了一个检査异常IOException,在重写这个方法时不能抛出Exception,因为Exception是IOException的父类,只能拋出IOException的子类异常。不能重写构造方法。子类和父类在同一个包中时,子类可以重写父类的所有成员方法,除了声明为static、private和final的方法;子类和父类不在同一个包中时,子类只能重写父类的声明为public和protected的非final方法。注意:方法重写案例定义一个学生类Student,包括成员变量name(姓名)和类别方法category(),然后定义两个Student的子类Undergraduate和Graduate,在子类中重写category()方法,输出不同的学生类别,最后定义测试类StudentTest,在main()方法中创建对象后,调用category()方法。3super关键字super关键字super关键字是一个引用变量,用于引用直接父类对象。用法:(1)调用直接父类的构造方法。由于子类不能继承父类的构造方法,因此,要调用父类的构造方法时,必须在子类构造方法体的第一行使用super关键字。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。

例如: super(); //调用直接父类的无参构造方法 super(param); //调用直接父类的有参构造方法,可有多个参数

//实参列表必须与父类构造方法对应(2)调用直接父类的成员方法和成员变量。子类重写了父类的方法后,可以通过“super.方法名”调用父类原有的成员方法。如果子类定义了和父类同名的成员变量,此时父类的成员变量被隐藏,可以通过“super.变量名”调用父类原有的成员变量。4课后习题课后习题创建和显示学生信息,要求如下。①定义Person类,在该类中定义成员变量name(姓名)、sex(性别)和age(年龄),然后定义有参构造方法,初始化成员变量,最后定义成员方法toString()返回姓名、性别和年龄信息。②定义Student类继承Person类,在该类中增加成员变量no(学号)、scoreEn(英语成绩)、scoreMath(数学成绩)和scoreCh(语文成绩),然后增加成员方法aver()、max()和min()分别返回三门功课的平均分、最高分和最低分,最后重写toString()方法返回姓名、性别、年龄、学号、平均分、最高分和最低分信息。多态01编译时多态02运行时多态CONTENTS目录03课后练习1编译时多态编译时多态什么是编译时多态编译时多态是静态的,主要是指方法的重载,根据参数列表的不同来区分不同的方法。

例如:

//pay()方法描述所有超市都支持现金付款 publicstaticStringpay(StringpayStyle){ return"所有超市都支持"+payStyle; } //pay()方法描述大型商超还支持刷卡付款

publicstaticStringpay(StringmarketStyle,StringpayStyle){ returnmarketStyle+"还支持"+payStyle; } //pay()方法描述计算本次支付金额 publicstaticStringpay(floatmoney){ return"本次支付"+money+"元"; }2运行时多态运行时多态什么是运行时多态Java实现运行时多态有3个必要条件:继承、重写和向上转型。只有满足这3个条件,才能在同一个继承结构中使用统一的逻辑处理不同的对象,从而执行不同的行为。(1)继承:必须存在有继承关系的子类和父类。(2)重写:子类对父类中某些方法进行重新定义。(3)向上转型:将子类的对象赋给父类对象,只有这样该对象才既能调用父类的方法,又能调用子类的方法。运行时多态案例定义动物类Animal,包括成员变量species(种类)、吃方法eat()和奔跑方法run();然后定义两个子类Cat和Dog,都继承Animal类,并重写eat()方法;最后定义测试类AnimalTest,在main()方法中分别基于不同子类Cat和Dog实例化Animal类的对象。3课后练习课后练习下面程序运行的结果是_______classPclassx{ protectedvoidf(){ System.out.print("A'smethod!"); }}publicclassTemp2extendsPclassx{ protectedvoidf(){ System.out.println("B'smethod!"); } publicstaticvoidmain(String[]args){ Pclassxa=newTemp2(); a.f(); }}抽象类与抽象方法01抽象类02抽象方法CONTENTS目录03课后练习1抽象类抽象类什么是抽象类抽象类即为类的抽象,是对相似类的归纳与总结

语法格式:

publicabstractclass类名{ //声明抽象类 …… }注意:抽象类是不能实例化的,也就是说,不能基于抽象类来创建对象。2抽象方法抽象方法什么是抽象方法只包含方法声明,而不包含方法体,它的具体实现由其派生出的各子类来完成,这使得程序的功能描述和功能实现得以分离。注意:抽象类也可以包含普通成员变量和成员方法。但是,抽象方法只能出现在抽象类中。在子类中,必须重写父类中所有的抽象方法。

语法格式:

publicabstract返回值类型方法名(); //声明抽象方法,必须加分号抽象方法案例定义抽象的平面图形类PlaneGraphics,然后定义长方形子类Rectangle和椭圆形子类Eclipse,分别覆盖抽象类中的抽象方法,使程序能够用一种方法计算不同类型图形的面积。3课后练习课后练习下面关于抽象类和抽象方法说法正确的是()。A.抽象类中至少有一个抽象方法B.抽象类中只能定义抽象方法C.利用抽象类也可以创建对象D.抽象方法只包含方法声明,不包含

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论