Java程序设计基础与实战教学设计_第1页
Java程序设计基础与实战教学设计_第2页
Java程序设计基础与实战教学设计_第3页
Java程序设计基础与实战教学设计_第4页
Java程序设计基础与实战教学设计_第5页
已阅读5页,还剩165页未读 继续免费阅读

下载本文档

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

文档简介

学IT有疑问,就找千问千知千里寻他众百度,锋自苦寒磨砺出千锋教育Java程序设计基础与实战教学设计课程名称:Java程序设计基础与实战__授课年级:_______________________授课学期:_______________________教师姓名:_______________________2022年07月15日课程名称第1章走进Java的世界计划学时3学时内容分析Java语言是一门非常流行的计算机编程语言,广泛应用于个人计算机、数据中心、游戏控制台、超级计算机、移动电话和互联网等领域,本章主要介绍Java的发展史和Java语言的特性,带领学生进行Java开发环境的搭建和IntelliJIDEA工具演示编写一个Java程序:HelloWorld。教学目标与教学要求【知识目标】了解Java语言的发展史。了解Java语言的特性。理解Java程序的编译运行机制。【技能目标】掌握在Windows环境下JDK安装和环境变量配置。掌握使用IntelliJIDEA编写并运行第一个Java程序。【思政育人目标】进行职业认同感和使命担当教育,培养学生职业自豪感和社会责任感。教学重点Java语言的特性、JDK的安装、环境变量的配置、JDK目录的分析、编写并运行第一个Java程序。教学难点Java的编译运行机制。教学方式课堂讲解配合ppt演示2学时,上机演练1学时教学过程第一学时(初识Java、搭建Java开发运行环境)一、提出需求,导入学习任务(1)思考Java语言经久不衰的原因Java语言具有20多年的发展历史,仍是最受欢迎的计算机语言之一,从1995年诞生以来,Java历经了多个版本,折射了不同时代编程语言所关注的重点。引出Java根据市场的需求不断进行完善,语言特性符合互联网发展的需要,应用领域非常广泛。谈到Java语言开发,绕不开Java的IDE,由于Java语言的流行,Java语言的IDE也非常多,这里介绍的是IntelliJIDEA。(2)明确学习方向。了解计算机语言发展史。了解Java语言的发展史。了解Java语言的特性。掌握Windows系统中JDK的安装。掌握环境变量的配置。了解JDK的安装目录二、知识讲解(一)初识Java1.计算机编程语言Java是一门高级编程语言,在介绍Java之前需要先了解什么是编程语言。(1)计算机编程语言的概念计算机编程语言是指用于实现人与计算机之间通信的语言,是人与计算机之间传递信息的媒介。它是用来进行程序设计的,所以又称程序设计语言或编程语言。(2)计算机编程语言的发展历程(详见本章PPT)机器语言:计算机可以直接识别的二进制码。汇编语言:特殊的符号代替机器语言的二进制码。高级语言:高度封装、有一定的语法,接近自然语言。2.Java的发展史(1)Java的诞生Java是Sun公司为进军电子消费市场而研发,一般公认詹姆斯·高斯林是Java语言之父,Java语言最初被称为“Oak”,随着互联网的发展,Sun公司对Oak进行改造,并于1995年发布了Java的第一个版本。20世纪90年代,互联网时代来临,Java语言成为重要的编程语言。2009年4月,美国数据软件巨头甲骨文公司(Oracle)收购Sun公司,Java语言得到了更好的发展。(2)Java技术平台简介Java的应用领域非常广泛,根据应用领域的不同,Java有三大技术平台。JavaSE:标准版,是Java技术的基础和核心JavaEE:企业版,提供了企业级应用开发的完整解决方案JavaME:主要用于移动设备和嵌入式设备的开发3.Java语言的特性(详见本章PPT)Java与C和C++有关联,但组织结构是完全不同的,并且进行了简化和提高。简单易学。面向对象。安全可靠。跨平台性。支持多线程。健壮性。分布式。4.JVM简介(1)JVM的作用Java的跨平台性是通过Java虚拟机——JVM(JavaVirtualMachine)实现的。JVM是Java语言的运行环境,也是Java最具吸引力的特性之一。JVM是Java的解释和执行器,它屏蔽了与具体操纵系统平台相关的信息,从而实现了Java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行,也就是Java的可移植性。JVM是不跨平台的,不同平台对应着不同的JVM。(2)Java模型概念图(二)搭建Java开发运行环境1.下载JDK(详见本章PPT)JDK是Java的核心,包括Java运行环境、Java工具以及Java基础类库。打开Oracle官网(/)进行JDK的下载(建议提前下载好,在网速较慢的情况下,直接使用即可)。2.JDK的安装和配置(详见本章PPT)(1)安装JDKJDK安装过程直接点击“下一步”即可。初学者进行JDK的安装可直接安装在默认路径,也可演示如何选择其他路径安装。(2)配置环境变量Windows10系统中,在桌面右键“此电脑”,在右键菜单栏中选择“属性”,打开系统属性窗口,单击“环境变量”,打开环境变量窗口。在系统变量中新建Java_HOME变量,变量值设置为JDK的安装路径;选择系统变量中的“Path”属性,单击“编辑”,添加“%JAVA_HOME%\bin”变量值,点击“确定”保存。启动“命令提示符”,在对话框中输入“javac”,出现下图所示的页面,表示JDK安装配置成功(3)JDK目录分析①JDK8的目录bin目录:存放了JDK的各种工具命令,即exe可执行文件。include目录:一些供C语言使用的头文件,让Java调用C/C++实现的函数功能。lib目录:Java的核心类库,JDK工具命令的实际存放位置。jre目录:运行Java程序所必须的JRE环境。sic.zip文件:Java源代码的压缩包。javafx-src.zip:JavaFX模块的源代码压缩包。②JDK11目录jmods目录:存放了JDK的各种模块(JDK9开始引入了模块系统)。conf目录:存放了JDK的相关配置文件JDK11不再提供JRE和ServerJRE的下载,用户可以通过其他方式搭建更小的Java运行时环境。src.zip和JavaFX如需使用/。,需要进行额外下载。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)要求学生尝试搭建Java的开发运行环境。第二学时(揭开Java程序的面纱、Java开发利器、综合项目介绍)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。理解Java编译运行机制。掌握使用IntelliJIDEA编写并运行第一个Java程序。二、知识讲解(一)揭开Java程序的面纱1.编写第一个Java程序需求:使用记事本编写Java源程序,实现在cmd窗口打印“没有太晚的开始,不如就从今天行动”。步骤:①新建文件:在磁盘中(E:\com\1000phone\chapter01)创建一个文本文件,命名为“HelloWorld.java”,使用记事本打开该文件,并在文件编写一段Java代码(详见本章PPT)。②切换盘符(e:)进入目录(cd文件路径),编译程序:javacHelloWorld.java。③启动JVM并解释执行:javaHelloWorld使用javac命令编译源文件时,需要输入完成的文件名;使用java命令运行程序时,需要输入的是类名,不能加.class后缀。对于第一个Java程序HelloWorld结构的分析请参见本章PPT,强调class关键字是类的标识、HelloWorld为类名、main方法是程序的入口、两对花括号的作用和分号的作用。大小写敏感:Java是大小写敏感的,Hello与hello是不同的。主方法入口:所有的Java程序由publicstaticvoidmain(String[]args)方法开始执行。花括号必须成对出现。

2.Java的编译运行机制编写源文件(Java文件),源文件中包含源代码(Java代码)。使用javac工具对源文件进行编译操作,语法javac源文件.java。生成字节码文件后,使用IDEA工具启动JVM,运行程序,语法:java拥有主方法的类名。在控制台输出,显示结果。(二)Java开发利器实用的开发工具对于Java程序开发者来说,工作起来事半功倍。市面上常见的可用于Java开发的工具有Eclipse、MyEclipse、NetBeans、VSCode等等,本书中介绍的是目前最受欢迎的IntelliJIDEA(本书使用2021.2版本)。1.IntelliJIDEA介绍IDEA被誉为最好的Java开发工具之一,它功能强大,插件丰富,GUI设计美观,擅长于企业应用、移动应用和Web应用的开发。2.下载IntelliJIDEA(详见本章PPT)进入Jetbrains官网(),在DeveloperTools中选择IntelliJIDEA进行下载,根据操作系统进行选择,IDEA有两个版本:Ultimate版(适用于网络和企业应用开发,本书所用版本)或Community版(适用于Java程序和安卓开发)。3.IntelliJIDEA的安装和配置(详见本章PPT)下载完成后,单击“Next”按钮进行安装,建议初学者将IDEA安装在默认路径即可。使用IDEA创建Java项目可以在在开始界面选择“Projects”→“NewProject”创建,选择Java项目,配置JDK后输入项目名选择本地存储路径后,即可完成创建。4.使用IntelliJIDEA进行程序开发(详见本章PPT)更多情况下,创建Java项目采用在主界面的单击导航条中的“File”按钮进行创建,单击“File”,在右键菜单栏中,选择“New”→“Project”进行项目的创建;在建好的项目的右键src目录,进行package(包)的创建;在建好的package右键进行class(类文件)的创建。建好的类文件中已经有类的基本框架,可以进行Java源代码的编写。如下图所示。编写完成后,单击左侧两个绿色箭头中的任意一个即可运行程序。(三)幸运小猫爱心平台介绍本书中将使用所学的知识点实现一个桌面应用程序——幸运小猫爱心平台。校园中有非常多的流量猫,它们的生存环境恶劣,并且也给校园生活带来了卫生和安全方面的隐患。为了规范化校园内的流浪猫管理,很多学校、社团或大学生开发并上线了流浪猫救助的小程序,可以录入流浪猫的信息,记录猫咪在校园里的游走和留存状态。幸运小猫爱心平台是模拟实现一个流浪猫救助平台,平台的注册用户可以在该平台查阅、搜索、发布或领养宠物。

三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第一章课后作业。第三学时(上机练习)一、目标学生根据教材中的操作步骤和教师的演示进行上机练习,安装和配置好JDK并且分别使用记事本和IDEA完成第一个Java程序的开发,以及检查学生对相关知识点的掌握情况。上机练习完成后将报告通过平台提交给老师。二、上机任务1.安装JDK。(1分)2.配置环境变量。(1分)3.使用记事本完成第一个Java程序的开发。(1分)4.安装IDEA。(1分)5.使用IDEA完成第一个Java程序的开发。(1分)三、教师评分教师根据学生对上机任务的完成度给予评分,满分为5分,并纳入平时成绩中。习题教材第1章习题教学后记

千锋教育Java程序设计基础与实战教学设计课程名称:Java程序设计基础与实战__授课年级:_______________________授课学期:_______________________教师姓名:_______________________2022年07月18日课程名称第2章Java编程基本功计划学时8学时内容分析学习Java的第一步,是学会使用Java语言来编写程序,而学习编程语言的第一步是掌握其基础知识,好比建成一栋高楼大厦的前提是将地基打牢。本章将讲解Java的基本语法,介绍Java编程规范,并讲解如何使用变量和数据类型来存储程序中的数据,以及如何使用运算符来操作变量,最后带领读者学习Java中的流程控制语句,控制程序的执行步骤。教学目标与教学要求【知识目标】熟练掌握Java的基本语法。理解Java的变量和常量。熟练掌握Java的基本数据类型。熟练掌握的Java的运算符。掌握数组的定义。了解JVM内存模型。【技能目标】掌握变量的声明和使用。掌握Java数据类型转换。掌握Java流程控制语句的使用。掌握数组的常用操作。【思政育人目标】进行职业规范教育,培养学生养成规范的编码习惯。教学重点Java基本语法格式、变量的声明和使用、数据类型转换、流程控制语句、数组的定义。教学难点循环结构教学方式课堂讲解配合ppt演示5学时,上机演练3学时教学过程第一学时(Java的基本语法、变量和常量、数据类型)一、提出需求,导入学习任务(1)学习编程语言基本语法的重要性和学习英语需要掌握英语的语法一样,编程语法的细节是非常重要的,编程语法掌握得如何,对于熟练运用编程语言有非常直接的影响。语法知识是基本的编程规则,通过掌握编程语法能够了解编程语言的特点及功能边界。不同的编程语言具有不同的语法规则,这也在根本上决定了编程语言的应用场景。编程语言的语法规范都是确定的,实际上大部分初学者在学习编程语言的时候,往往会忽略很多编程语法的细节,从而导致很多编程问题。(2)明确学习方向。学会使用Java语言的注释。了解Java的关键字。了解Java语言的标识符和分隔符。理解Java语言的变量和常量。掌握变量和常量的声明和使用。二、知识讲解(一)Java的基本语法1.代码注释(详见本章PPT)(1)代码注释的作用注释是对Java源代码的解释说明,不会被编译,可以帮程序员更好的理解程序;注释还可以起代码调试的作用,屏蔽一些暂时不用的语句,等需要使用时直接取消该语句的注释即可。Java提供3种类型的注释:单行注释、多行注释和文档注释(注释讲解基于第1章的例1-1)。(2)单行注释单行注释以“//”开始,从“//”开始到本行结束的所有字符会被编译器忽略。(3)多行注释多行注释以“/*”开头,以“*/”结尾,中间的内容会被忽略。(4)文档注释文档注释以“/**”开头,以“*/”结尾,中间的内容会被忽略,一般用在类、方法和变量上面,用来描述其作用。可以使用javadoc命令将注释内容提取生成正式的帮助文档

。(5)注释嵌套多行注释中可以嵌套单行注释;多行注释不能嵌套多行注释。因为/*会找距离自己最近的*/,组成一个注释语法块。2.关键字、标识符和分隔符(1)关键字关键字在编程语言中有特殊的含义且是语法的一部分,在编程语言设计之时就被预先定义,一般用来标记该语言中的原始数据类型或用来识别程序结构。(2)标识符Java中标识符是开发者为类、方法或变量所定义的名称。标识符可以有一个或多个字符。标识符由数字、字母、下划线和美元符号($)组成,并且不能以数字开头。标识符命名规则:命名时应遵循见名知义的原则。不能使用Java中的关键字作为标识符。下划线对解释器有特殊意义,建议避免使用以下划线开头的标识符。Java中严格区分大小写,如Name和name是完全不同的两个标识符(3)分隔符空格、逗号、分号和行结束符都被称为分隔符,规定任意两个相邻标识符、数字或语句之间必须至少有一个分隔符,以便程序编译时能够识别。分隔符必须都是半角英文符号。字母前加上反斜线“\”来表示常见的那些不能显示的ASCII字符,称为转义字符。(二)变量和常量1.变量(1)内存存放数据计算机使用内存来存储运行时所使用的数据。内存像酒店,酒店中的房型是各式各样的,内存中存储的数据也是各式各样的;酒店前台会根据客人的需求为客人安排房型,内存会根据数据的需求(即类型)为它申请一块合适的空间。(2)变量名数据存入内存中会有一个内存地址,内存地址使用16进制表示,在程序中不方便使用,因此可以通过该内存地址的别名——变量名,存储和使用数据。可以使用酒店的房间类比变量。变量命名规则:变量名必须是一个有效的标识符。变量名不可以使用Java关键字。同一个源文件中变量名不能重复。见名知义:应选择较有意义的单词作为变量名。(3)声明变量数据类型变量名;变量名=初始值。

数据类型变量名=初始值;数据类型变量名1,变量名2,…,变量名n;(4)声明变量示例详见本章PPT2.常量常量是程序中的固定值,是不能被改变的数据。Java程序中使用的直接量称为常量,是在程序中通过源代码直接给出的值,且只能被赋值一次,在整个程序的运行过程中都不会改变,也称为最终量。常量的作用:代表常数,便于程序的修改(例如:圆周率的值)增强程序的可读性(例如:常量UP、DOWN、LEFT和RIGHT分辨代表上、下、左、右,其数值分别是1、2、3和4)。常量的声明:final数据类型常量名称=值;三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第二章课后作业。第二学时(数据类型、表达式和运算符)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。掌握Java的基本数据类型。掌握数据类型转换。了解Java的引用数据类型。掌握Java运算符的使用。了解位运算符。二、知识讲解(一)数据类型1.基本数据类型(详见本章PPT)Java中有8种基本数据类型,根据存储类型分为3个大类:数值型、字符型和布尔型。Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。(1)整数类型整数类型(byte、short、int、long)用来存储整数数值,即数据中不含有小数或分数。Java中默认的整数类型是int类型。表示long类型的常量,要加L或l,建议加L。(2)浮点类型浮点类型用来存储实数值。Java中默认的浮点类型是double。表示float类型的常量,要价F或f,建议加F。(3)字符类型字符类型/字符型用来存储单个字符,表示Unicode编码表中的每一个符号,字符型的值必须使用英文半角格式的单引号括起来。一个英文字符和一个中文字符都用一个char类型表示,它们都占用两个字节。字符类型可以表示0~65535的数值,它其中前128个符号和ASCII码表相同。(4)布尔类型布尔类型(boolean)又称逻辑类型,它的值只有true和false。通常用于逻辑运算和程序流程控制。注意:Java中不能使用0或非0来表示真假。8种基本数据类型的范围和所占内存大小仅做了解即可。2.数据类型转换(1)自动类型转换(详见本章PPT)8种基本数据类型中,boolean不属于数值类型,所以不参与转换,其他数据类型转换的规则如下图。数据类型转换规则:规则1:表达式类型的自动提升规则2:满足自动类型转换的条件:两种类型要兼容且目标类型大于源类型(2)强制类型转换强制类型转换也称显式类型转换,是指必须编写代码才能完成的类型转换。语法格式:范围小的数据类型=(范围小的数据类型)范围大的数据类型的值。注意:不建议使用强制类型转换,会造成精度丢失。演示案例详见本章PPT。此处可以在IDEA中讲解什么是编译型错误,并讲解什么情况下会造成编译型错误。3.引用数据类型简介除基本数据类型以外的数据类型都可以称为引用数据类型,Java中的引用数据类型可以分为3类,如下图。现阶段先了解String类。String类,表示字符串,是由N个字符连接在一起的。字符串要使用双引号括起来的,连接字符串使用“+”符号。(此处注意提示:对于字符串而言,+符号表示连接操作,任何数据类型和字符串相连接,结果都是字符串)演示案例详见本章PPT。实战训练:输出流浪猫信息列表(详见本章PPT)(二)表达式和运算符1.表达式Java表达式是由数字、运算符、数字分组符号(括号)、常量或变量等组成的有意义的序列,它执行指定的运算并返回某个确定的值,运算得到的最终结果就是表达式的结果。演示案例详见本章PPT(示例中的num、a、b、c都表示变量)。2.算术运算符(详见本章PPT)运算符概念:对变量和常量进行操作的符号称为运算符。算术运算符概念:Java语言提供了算术运算符来实现数学上的算术运算功能。++和—需要重点讲解:自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。自减:--,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已,现在单讲++。代码a++和++a,结果都是a变量的值加1。唯一的区别是:前置(++a):表示对a加1之后的结果进行运算,后置(a++):表示对a变量加1之前的值(原始值)进行运算。如果仅仅执行简单的递增操作(只写a++或++a),那么选用任意一个都可以。3.赋值运算符概念:赋值运算符用于为变量指定值或重新指定值。Java中的赋值方式是将右侧的值赋给左侧的变量名语法:变量名=表达式;重点:shorts+=10等价于shorts=(short)s+10;4.关系运算符概念:关系运算符又叫比较运算符,用于判断两个变量或常量的大小关系,结果为boolean类型。语法:booleanresult=表达式A比较运算符表达式B;5逻辑运算符概念:逻辑运算符用于将boolean类型结果的表达式组合成一个复杂的逻辑表达式,以判断程序中的总表达式是否成立。结果为boolean类型。语法:booleanresult=表达式A逻辑运算符表达式B;重点:通过PPT中的示例讲解短路和非短路的区别。记住结论,使用&&和||即可。&:&左边表达式无论真假,&右边表达式都进行运算。&&:如果&&左边表达式为直,&&右边表达式参与运算,否则&&右边表达式不参与运算,故称短路与。|和||的区别同理,左边为真,右边不参与运算。6.位运算符(仅做了解)概念:位运算符主要是以二进制规则进行运算。应用于整数数值类型的的运算速度非常快。注意是将整数转换成整数转换成二进制后进行操作。7.三元运算符概念:三元运算符又称条件运算符或三目运算符,是要求有3个操作数参与运算的运算符。语法:booleanresult=<布尔类型表达式>?<表达式1>:<表达式2>;规则:如果boolean表达式结果:为true,则三元运算符的结果是结果A;为false,则三元运算符的结果是结果B;需要注意的是,三元运算符必须定义变量接受运算的结果,否则报错。三元运算符结果的类型由结果A和结果B来决定的,结果A和结果B的类型是相同的。场景:实际开发中常被用来做分页数据显示。8.运算符的优先级表达式的运算都是有优先级的,基本上和数学中的优先级类似,这里需要注意的是赋值符号。赋值符号最后运算的,并且是从右向左运算的。如果记不清,可以直接使用小括号控制。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第二章课后作业。第三学时(输入和输出、顺序结构、分支结构)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。掌握输入输出语句。了解顺序结构。掌握if、if-else、if-elseif-else语句的语法和使用。了解嵌套分支结构。二、知识讲解(一)输入和输出(详见本章PPT)1.输出System.out是Java的标准输出流。主要方法如下:println():换行并输出。printline的缩写。println()方法中也可以执行表达式运算。print():输出不换行printf():格式化输出2.输入System.in是Java的标准输入流。控制台输入需要使用Scanner类的对象获取输入的内容。Scanner类的主要功能是简化文本扫描,获取控制台输入。主要方法如下:nextInt():接受用户控制台输入的int类型的整数;nextDouble():接受用户控制台输入的double类型的小数;nextLine():接受用户控制台输入的任意字符串;next():接受用户控制台输入的字符串;next()方法和nextLine()方法的区别如下:nextLine()会接收回车字符(包含空格和Tab键,下同)而next()不会,next()会去除前面后者后面的回车字符,只截取有效字符。此处可以通过演示案例对比使用nextLine()和next()接受含有空格的字串的效果。(二)顺序结构概念:顺序结构是线性的程序结构,没有特定的语法,按代码编写的先后顺序从上而下依次执行,一条语句执行完继续执行下一条语句,直到程序结束。可通过PPT中演示案例进行讲解,无论代码怎么运行,输出顺序总是固定的。(二)分支结构(详见本章PPT)概念:分支结构又称条件语句、选择结构,是根据给定条件进行判定,以决定执行某个分支程序段。Java中存在两种分支结构:if语句switch语句1.if语句if语句是指满足某种条件,就进行某种操作,if语句会对条件表达式进行判断,当条件表达式为true时,就会执行{}中的执行语句。语法:if(条件表达式){ 执行语句}if后的{}表示一个整个的代码块,称为执行语句,只有条件表达式结果为true,才可执行。流程图:演示案例详见本章PPT:号码是否为空号。2.if-else语句概念:if-else语句用来实现双分支结构,用于处理满足条件时执行一组代码,而不满足时会执行另一组代码的情况。语法:if(条件表达式){ 代码块1}else{ 代码块2}如果条件表达式结果为true就执行代码块1,否则执行代码块2。流程图:演示案例详见本章PPT:同城领养资格审核。if-else语句可与三元运算符互换。演示使用三元运算符解决同样的问题只需要两行代码。需要注意的是,在进行区间判断时,Java中并不支持链式不等式,使用年龄区间的判断来讲解。3.if-elseif-else语句概念:if-elseif-else语句可以实现多重if结构,多重if结构是根据不同条件来选择代码块运行的一种分支结构。语法:if(条件表达式1){ 执行语句1}elseif(条件表达式2){

执行语句2}……elseif(条件表达式n){

执行语句n}else{

执行语句n+1}流程图:演示案例详见本章PPT:BMI计算器4.switch-case语句概念:switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。语法:switch(表达式){case常量1:

代码块1;

break;

case常量2:

代码块2;

break;

……

default:

代码块n;

break;

}表达式的类型:byte、short、int、char,Java5开始支持枚举,Java7开始支持String。case之后的表达式结果必须是常量。case表示执行代码的入口一旦进入某个入口后,代码会忽略掉后面其他case,代码会一直往下执行,直到遇到break或return。流程图:演示案例详见本章PPT。提供两个演示案例:根据选择流量猫的类型展示该类型的流浪猫的信息和根据月份显示季节。其中,根据月份显示季节演示case穿透的情况,即多个case使用同一个代码块和break。5.嵌套分支结构概念:多层级的选择问题,需要在一个分支结构内部构造出一个新的分支结构,同理elif和else中也可以再构造新的分支,一般称之为嵌套分支结构。语法:if(条件1){ if(条件2){

//代码块1

}else{

//代码块2

}

}else{

//代码块3

}流程图:演示案例详见本章PPT:无偿献血制度体格检查标准。实战训练2-2:实现注册功能(详见本章PPT)三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第二章课后作业。第四学时(循环结构)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。掌握while循环的语法和使用。掌握do-while循环的语法和使用。掌握for循环的语法和使用。了解什么是嵌套循环和如何使用。掌握控制循环语句:break、continue两者的区别和用法。了解如何控制外层循环。二、知识讲解(一)while循环引入:通过生活中的循环现象总结循环结构的特点:循环条件和循环操作。语法:while(循环条件){ 循环操作

}循环条件为boolean类型表达式,表达式结果为true时,执行循环操作;循环操作是循环中被重复执行的语句。流程图:特点:先判断,后执行。具体如下:先判断boolean类型表达式:若为false,跳过循环操作;若为true,执行循环操作,执行完,再重新判断boolean类型表达式。可以对比PPT右侧“打印100句‘我爱Java’”进行讲解。注意变量的i的变化过程,在i为101时,循环终止。演示案例:使用循环输出1~100的累加和(详见本章PPT),强调在循环的过程中,循环变量i的变化和变量sum的变化。(二)do-while循环语法:do{ 循环操作

}while(循环条件);流程图:特点:先执行,再判断。具体如下:先执行一次循环操作,再判断循环条件是否成立:若为true,就继续执行循环操作,再重新判断boolean表达式是否成立,若为false,跳过循环。演示案例:实现登录验证功能(详见本章PPT)。强调do-while的是先执行后判断,即使条件为false,该循环至少也会执行一次,因此适用于登陆验证的场景。比较while循环和do-while循环的区别,从3个方面比较:语法、执行次序和当循环条件不满足时的执行情况(详见本章PPT)。(三)for循环语法:for(循环变量赋初始值;循环条件;迭代语句){ 循环操作;}流程图:特点:赋初始值:只在循环开始时执行一次,一般是定义一个变量,并赋值。循环条件:表达式为false时,循环终止,为true时,才执行循环操作(循环体)。迭代语句:循环后会调用该语句,一般是循环变量的递增或递减操作。执行顺序:①赋初始值→②循环条件:为true:执行循环体为false:跳过循环→③迭代语句→④循环条件演示案例:使用for循环求1~100的累加和。思路和while循环解决该问题一致。(四)嵌套循环嵌套循环可以将3种循环结构任意嵌套,并没有固定的语法格式,需要根据实际问题分析形成结构。应用场景:某一个操作需要重复执行,如果一个重复的操作需要做N次,就需要使用嵌套循环。for循环嵌套语法(最常用的嵌套循环):for(inti=0;i<args.length;i++){ for(intj=0;j<args.length;j++){

……

} ……

}

注:可以将内层循环看做是一个整体。演示案例:打印九九乘法表。建议通过效果图进行分析,强调循环变量在该案例中分别充当两个乘数,并且控制列的循环变量的值,不能超过控制行的变量的值,即内层循环变量column<=row。(详见本章PPT)。(五)跳转语句1.break作用:break可以改变程序控制流,用于do-while、while、for中时,可跳出循环而执行循环后面的语句。用于在switch语句中终止一个case分支。语法(举例):while(…){ ……

break;

……

}注:break通常在循环中与条件语句一起使用。break后的语句执行不到,所以不能编写。演示案例:输出1~100中前5个是13的倍数的数字(详见本章PPT)。

2.continue作用:continue语句用于结束本次循环,即跳过循环体中continue下面尚未执行的语句,继续判断下一次循环是否执行。需要注意的是,continue只能用在循环中。 while(…){ ……

continue;

……

}注:continue一般也与条件语句搭配使用。演示案例:逢七拍手游戏。(详见本章PPT)。建议:可以将continue和break进行对比。continue仅会结束本次循环,break会终止整个循环。3.控制外层循环概念:Java语言提供了“标签”的功能,便于让break、continue控制外层循环。标签概念:就是给某个循环起的别名,该别名需要满足标识符的命名规范。在break、continue后跟上循环的别名即可控制该层循环。语法:标签名:循环结构{ break标签名

}演示案例:找车位。(详见本章PPT)实战训练2-3:登录功能次数限制(详见本章PPT)。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第二章课后作业。第五学时(数组)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。了解JVM内存模型中的堆、栈、方法区。掌握数组定义的语法。掌握数组的初始化。掌握数组的基本操作。了解冒泡排序算法。了解二维数组的定义、初始化和迭代。二、知识讲解(一)JVM内存模型(了解)JVM内存划分是人为的根据不同内存空间的存储特点以及存储的数据。程序计数器:当前线程所执行的字节码的行号指示器。本地方法栈:为虚拟机使用的native方法服务。方法区:线程共享的内存区域,存储已被虚拟机加载的类信息,常量,静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)。虚拟机栈:简称栈,每个方法被执行的时候都会同时创建一个栈帧用于存储该方法的局部变量、操作栈、动态链接、方法出口等信息。每当调用一个方法时,创建一个栈帧,存放了当前方法的局部变量,当方法调用完毕,该方法的栈帧就被销毁了。堆:所有线程共享的一块内存区域,在JVM启动时创建。所有的对象以及数组都要在堆上分配。每次使用new关键字,就表示在堆内存中开辟一块新的存储空间。(二)数组的定义1.数组定义的语法引入:在之前可以通过一个变量表示一只流浪猫的年龄,如果现在需要表示100只流浪猫的年龄岂不是需要定义100个变量来分别表示。这样的操作太麻烦了,为了解决这种问题,Java就提供了数组。概念:数组是一个变量,存储相同数据类型的一组数据。语法:数组元素的类型[]数组名;//方式1数组元素的类型数组名[];//方式2演示案例详见本章PPT。2.数组的基本要素标识符:数组的名称,用于区分不同的数组数组元素:向数组中存放的数据元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问元素类型:数组元素的数据类型

注意:数组长度固定不变,避免数组越界。(三)数组的初始化数组必须初始化才能使用,要通过new关键字为数组在内存中分配空间,初始化即为数组中的每个元素赋值。数组初始化有两种方式:静态初始化动态初始化 无论使用哪种方式,一旦初始化完成,数组的长度(元素个数)就固定了,不能改变,除非重新对该数组进行初始化。一般,如果事先知道元素是什么,选用静态初始化,事先不知道元素是什么,进行动态初始化。1.静态初始化概念:数组静态初始化的特点是由编写程序的人为数组的每一个元素设置初始值,而数组的长度是由JVM决定的。语法:数组元素类型[]数组名=new数组元素类型[]{元素1,元素2,元素3……}示例:String[]names=newString[]{"小喵","小面","翠花"};int[]ages=newint[]{2,1,5};doubleweight[];weight=newdouble[]{3.4,5.6,4.7};2.动态初始化概念:动态初始化是指由程序员在初始化数组时指定数组的长度,由系统为数组元素分配初始值。语法:数组类型[]数组名=new数组类型[数组长度];//动态初始化数组示例:int[]array=newint[10]; 数据类型默认值:(四)数组的基本操作1.访问数组元素length属性:用于表示数组的长度,即数组中元素的个数。语法:获取数组的长度:数组名.length获取元素值:元素类型变量=数组名[index];

设置元素值:数组名[index]=值;示例:int[]list=newint[10]; //定义一个int类型的数组intsize=list.length; //size=10,数组的长度String[]names=newString[]{"小喵","小面","翠花"};Stringname=names[0];System.out.println(name);names[0]="小咪";System.out.println(names[0]+","+names[1]+","+names[2]);2.数组遍历概念:数组的遍历是指依次访问数组中的每个元素。提示:根据获取元素值的操作可以发现循环遍历的次数是数组元素的个数,每一次获取元素只有下标在改变,范围是[0,数组名.length-1]。示例:String[]names={"小喵","小咪","翠花","小面"};for(inti=0;i<names.length;i++){

System.out.println(names[i]);

}

}3.foreach语句概念:foreach语句是for语句的特殊简化版本,被称为增强的for循环,可以用来遍历数组、集合,而不必考虑指定的下标值。

语法:for(元素类型元素变量:遍历对象){ 引用元素变量的语句;}注意:foreach语句并不能完全取代for语句,foreach语句有局限性:在遍历数组和集合时,只能访问集合中的元素,并不能对其中的元素进行修改

4.数组的最大值和最小值思路:使用一个变量存储数组的最大值,将数组中的每个元素与该变量进行比较,如果比该变量大,则将当前元素的值赋值给该变量。获取最小值的操作与之类似。5.数组排序概念:数组排序是指数组元素按照特定的顺序排列。冒泡排序(较为基础的算法,初级程序员常见面试题):不断地比较相邻的两个元素,较小的向上冒,较大的向下沉,排序过程如同水中气泡上升,即两两比较相邻元素,反序则交换,直到没有反序的元素为止。示例:int[]array={88,62,12,100,28}; //定义数组//外层循环控制排序轮数//最后一个元素,不用再比较

for(inti=0;i<array.length-1;i++){

//内层循环控制元素两两比较的次数

//每轮循环沉底一个元素,沉底元素不用再参加比较

for(intj=0;j<array.length-1-i;j++){

//比较相邻元素

if(array[j]>array[j+1]){

//交换元素

inttmp=array[j];

array[j]=array[j+1];

array[j+1]=tmp;

}

}

}过程: (五)二维数组(详见本章PPT)1.二维数组的定义和初始化概念:Java中用二维数组来模拟二维模型。二维数组中每一个元素都是一个一维数组,可以理解为是数组的数组。(此处可以使用棋牌来模拟在二维数组中定义某一个值)。声明的语法:int[][]array; intarray[][];动态初始化:array=newint[3][2]; //动态初始化3*2的二维数组array[0]={1,2}; //初始化二维数组的第一个元素array[1]={3,4}; //初始化二维数组的第二个元素array[2]={5,6}; //初始化二维数组的第三个元素第1个方括号中是二维数组中有几个一维数组,第2个方括号表示每一个一维数组中有几个元素。静态初始化:array=newint[][]{{1},{2,3},{4}};二维数组的存储形式如下图所示。2.二维数组的操作。获因为二维数组表示数组中的数组,如果想要获取数组中的每一个元素值需要两个循环嵌套。示例:int[][]array=newint[3][3];for(inti=0;i<array.length;i++){

for(intj=0;j<array[i].length;j++){

array[i][j]=3*i+j+1;

}

}

for(inti=0;i<array.length;i++){

for(intj=0;j<array[i].length;j++){

System.out.print(array[i][j]+"\t");

}

System.out.println();

}3.二维数组存储原理二维数组在实际开发中应用较少,仅做了解即可,不必花费太多时间深入学习。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第二章课后作业。第六~八学时(上机练习——完成实战练习)一、目标学生根据教材中的操作步骤和教师的演示进行上机练习,完成实战训练的练习和演示案例,以及检查学生对相关知识点的掌握情况。上机练习完成后将报告通过平台提交给老师。二、上机任务1.实战训练2-1(1分)2.实战训练2-2。(1分)3.实战训练2-3。(1分)4.实现书中的演示案例的效果。(2分)三、教师评分教师根据学生对上机任务的完成度给予评分,满分为5分,并纳入平时成绩中。习题教材第2章习题教学后记

千锋教育Java程序设计基础与实战教学设计课程名称:Java程序设计基础与实战__授课年级:_______________________授课学期:_______________________教师姓名:_______________________2022年07月20日课程名称第3章面向对象编程计划学时5学时内容分析Java是一门面向对象的编程语言,而面向对象编程(ObjectOrientedProgramming,OOP)是一种程序设计思想,它将任何事物都看作程序中的一个对象。因此,在Java的世界里“万物皆对象”,一个个对象相互联系最终组成了完整的程序设计。但在程序开发初期,程序员使用的却是面向过程的程序设计方式,那么,它与面向对象之间的区别在哪里?面向对象的优势何在?“对象”又是一个什么样的存在呢?本章将进行揭秘,并介绍Java中类和对象的具体使用方式,带领读者深入了解变量的知识。教学目标与教学要求【知识目标】了解什么是面向过程和面向对象。了解垃圾回收机制。理解成员变量和局部变量的区别。【技能目标】掌握类的定义。掌握对象的创建。掌握方法的定义和使用。掌握构造方法的定义和重载。掌握this关键字的使用。掌握static关键字的使用。【思政育人目标】培养学生具有坚持、严谨、诚信、合作、精益求精等程序员工匠精神。教学重点类的定义、对象的创建、方法的定义和重载、构造方法的定义和重载、教学难点类的定义和对象的创建、方法重载的规则。教学方式课堂讲解配合ppt演示3学时,上机演练2学时教学过程第一学时(面向过程和面向对象、类和对象)一、提出需求,导入学习任务(1)编程思维的培养的重要性第2章中所学的内容:基础语法、流程控制语句等等,都是编程语言的设计者已经创造出来的东西,在编程语言中,这一部分是固定的需要记忆下来的,而编程语言的另外一部分是比较难掌握,这也是编程最充满魅力的部分,就是用已有的知识去解决一个实际的问题,而且通常这个问题都是自己之前没有实现过的。这部分就是编程思想,对于初学者来说,就是解决一个问题的思路。随便拿起一本流行的计算机技术书籍,都会有“面向对象”或“面向过程”的字眼,面向过程和面向对象是两种重要的编程思想,学习编程的过程中,编程思维的培养是非常重要的。面向过程和面向对象以不同的方式指导程序员分析和设计软件,涉及到编程语言的选择,影响软件的结构、稳定性、可拓展性和可维护性等方面。。(2)明确学习方向。了解面向过程和面向对象程序设计思想。掌握类的定义。掌握对象的创建。二、知识讲解(一)面向过程和面向对象1.面向过程编程思想概念:面向过程是一种以事件(或称过程)为中心的编程思想。特点:先分析出解决问题需要的步骤,然后用一个一个的函数将这些步骤实现,通过逐个调用的方式来完成整个功能,解决问题。如下图所示。建议:以制作家具的过程举例。如果使用面向过程的语言来完成制作家具的工作,那么编程者将化身一个全能木匠,从准备原材料开始到家具成品,中间的所有步骤都要自己完成。首先是确定原材料、准备原材料、然后是制作形状、上漆等步骤。在编程上体现为:主要通过方法调用来完成,一个程序解决一个特定的问题。如下图所示。优点:十分直接,要解决什么问题就编写什么代码。缺点:系统软件实用性差,可拓展性差,复用性差,维护性低。可以看出,用面向过程的思路解决问题直接有效,但是当问题的规模变得更大时,用面向过程的思想是远远不够的。引出面向对象。2.面向对象编程思想概念:面向对象是一种以“对象”为中心的编程思想。特点:将要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。如下图所示。建议:以制作家具的过程举例。原材料准备,这应该是采购商的工作,其他的环节他无需插手;家具设计图,这是设计公司的工作;找到合适的木匠,这是用人单位应该做的。谁来做家具呢?木匠。于是我们把这些人组合到一起就可以完成这样一个工作,编程者更像是一个项目的负责人,需要知道完成这项工作需要用到哪些人,这些人应该能够完成哪部分的工作,每个人各司其职。如下图所示。软件出现的目的:现实生活中存在各种各样的事物,这些事物之间存在着千丝万缕的联系,面向对象编程思想将现实生活中的事物都认为是“对象”,更符合人类的思想习惯。软件是用计算机的语言描述现实世界,用计算机解决现实世界的问题。优点:交流更加顺畅、提高设计和开发效率等。因此,面向对象是被目前绝大多数主流编程语言采用的编程思想和软件开发方法,并且由于这种概念的普适性,也已经在数据库系统、应用平台、分布式系统、人工智能等领域普遍使用。缺点:内存开销大,运行速度没有面向过程快、需要一定的软件环境支持等。总结:面向过程和面向对象各有千秋,根据不同的业务需求选择合适的开发方式即可。面向对象更符合人类常规的思维方式、稳定性好、可重用性强、易于开发大型软件产品、有良好的可维护。它拥有三大特性:封装继承多态(1)封装(面向对象的核心思想)概念:封装是指将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节。例如,将内存条、硬盘和风扇封装到主机中。(2)继承(提高代码重用性的重要措施)概念:当特殊类包含了一般类的所有属性和行为,并且特殊类还可以有自己的属性和行为时,称作特殊类继承了一般类。一般类又称为父类或基类,特殊类又称为子类或派生类。例如,小轿车继承了汽车模型类,并且拥有自己特殊的颜色等属性或行为。(3)多态(面向对象的重要特性)概念:程序中的多态是指一种行为对应着多种不同的实现。例如,集合图形都具有求面积的方法,具体的图形求面积的方法都是不同的。(二)类和对象抽象(面向对象的重要组成部分) 概念:从特定的角度出发,从已经存在的事物中抽取需要关注的状态和行为,从而形成一个新事物的思维过程,是一种从复杂到简洁的思维方式。(抽象非面向对象独有)。例如,在现实生活的宠物中关注它们的静态部分和动态部分,可以抽象出宠物类(属性和行为)。如下图所示。在计算机中描述:①找出它的种类②找出它的属性③找出它的行为 面向对象中有两个非常重要的概念:对象和类。类(class):是对某一类事物的抽象描述,如下图中的黑猫图。对象(object):表示现实生活中该类事物的个体,也称之为实例,如下图中每一个具体的猫。上图中,从下到上是抽象的过程,从上到下是实例化的过程,所谓的实例化就是根据类这个模板制造出每一个对象。猫类的示例图如下。类是对象的模板,对象是类的实例。创建一个对象,就是使用一个类作为构建该对象的基础。在面向对象编程中,需要通过类实例化对象。1.类的定义概念:类是拥有相同属性和行为的多个对象的抽象。Java中通过class关键字定义类,在类中,属性通过成员变量体现,行为通过成员方法体现。语法:[修饰符]class类名{ 0~n个成员变量

0~个成员方法

}注意:如果类使用了public修饰符,必须保证当前文件名称和当前类名相同。(使用IDEA创建的类默认使用了public修饰符)类名使用名词表示,首字母大写,如果是多个单词组成要使用“驼峰表示法”如果只是为描述某对象提供一个类时,该类不需要main方法。(将描述对象的类和测试类分开来编写)演示案例:定义Cat类publicclassCat{ Stringname;

Stringsex;

Stringcolor;

doubleage;

publicvoidsayHello(){

System.out.println("名字:"+name+"性别:"+sex

+"毛色"+color+"年龄"+age); }

}注:此时Cat类前的public修饰符,表示公共访问权限,在后续章节中介绍。方法概念:成员方法又称方法,是指在程序中完成独立功能,可重复使用的一段代码的结合。在面向对象编程时,一般用于描述对象的行为。方法语法:[修饰符]返回值类型方法名([参数类型参数名1,参数类型参数名2,…]){ 方法体

return返回值;

}

修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等。返回值类型:限定返回值的数据类型,如果不需要返回值,使用void关键字。参数类型:限定调用方法时传入参数的数据类型。参数名:形式参数,占位用,用于接收调用方法时传入的数据。return:关键字,用于结束方法以及返回方法指定类型的值。返回值:被return返回的值,该值返回给调用者。方法示例:求两个整数之和。2.对象的创建和使用(1)对象的创建概念:对象是类的一个具体存在,既拥有独立的内存空间,也存在独特的属性和行为,属性还可以随着自身的行为而发生改变。创建对象的语法:声明对象:类名对象名;实例化对象:对象名=new类名();

声明并实例化:类名对象名=new类名();示例:Catc=newCat();对象实例化过程内存分析:(2)对象的使用对象实例化后,可以获取对象的属性值和通过对象调用方法。语法:获取属性值:属性值类型变量=对象名.属性名;通过对象调用方法:对象名.方法名(实际参数);示例:Catc1=newCat();//创建Cat类的对象c1Catc2=newCat();//创建Cat类的对象c2

="小喵";//为c1的name属性赋值

c1.sex="女";//为c1的sex属性赋值

c1.color="三花";//为c1的color属性赋值

c1.age=1.5;//为c1的age属性赋值

Stringname=;

System.out.println(name);

c1.sayHello();

c2.sayHello();

c2=c1;

c2.sayHello();操作对象的内存分析:(3)匿名对象概念:匿名对象,顾名思义就是指没有名字的对象。创建对象时,只通过new关键字在堆内存开辟了空间,却没有把堆内存中这个空间的地址值赋值给栈内存的某个变量用以存储。

如果一个对象只需要使用唯一的一次,就可以使用匿名对象。示例:newCat();应用场景:匿名对象可以作为方法的实际参数,可以作为方法的返回值。JavaGUI编程和框架层面会用到。

三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第三章课后作业。第二学时(构造方法、this关键字)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。掌握构造方法的定义和作用。了解this关键字的作用。掌握this关键字的使用。二、知识讲解(一)构造方法1.构造方法的定义作用:Java语言使用构造方法构造类的实例,也就是对象,作用是用来创建对象和给对象进行初始化操作。构造方法又称构造器,是一种特殊的方法。(1)缺省构造方法引入(通过前面的示例中创建对象的代码进行引入):Catc=newCat();上述代码是在调用Cat类的构造方法创建对象,Cat()其实就是在调用Cat类中的构造方法。Cat类的缺省构造器:Cat(){}缺省构造器不需要手动定义,编译器会自动创建。它的特点是:无参、无方法体。构造方法和普通方法的区别:构造方法与普通方法的区别构造方法的名称与所在类的名称相同构造方法不需要返回值类型构造方法不需要return语句如果没有显式定义构造方法,那么编译器在编译时会创建缺省构造方法,反之显式定义了构造方法,那么编译器将不再创建默认构造方法。(2)自定义构造器可以通过构造方法同时完成对象的创建和初始化操作。示例:publicCat(Stringn){ name=name;

} 在Cat类中编写上述代码后,Cat类中不再有缺省构造器。 调用:Catc=newCat("小喵");System.out.println();2.构造方法的重载方法重载的概念:方法重载是指在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可。

方法重载的原则:在同类中同名方法的参数列表不同。方法重载与返回值类型和参数的名称无关。示例://定义求2个小数之和的方法publicdoublegetSum(doublenum1,doublenum2){

returnnum1+num2;

}

//定义求3个整数之和的方法

publicintgetSum(intnum1,intnum2,intnum3){

returnnum1+num2+num3;

} 作用:方法重载可以屏蔽同一功能的方法由于参数不同造成的方法名称不同。IDEA中自动生成构造方法的快捷方式:在需要生成构造方法的类中鼠标右键,调出右键菜单,依次单击“Generate”→“Constructor”,选择需要的属性生成对应的构造方法。如下图所示。实战训练3-1:宠物领养流程设计(详见本章PPT)(二)this关键字this关键字解决的问题:构造方法的参数是和成员变量使用的名称不一致在语法上没有问题,但导致程序可读性变差。如果将含义相同的变量进行统一命名,就会造成局部变量和成员变量的名称冲突。局部变量和成员变量同名,此时在方法中调用变量时根据就近原则,优先使用局部变量,1.this关键字调用属性意义:通过this关键字调用属性,可以解决局部变量和成员变量名称冲突的问题。示例:publicclassCat{Stringname;//name属性

publicCat(Stringname){

=name;

}

}上述示例中,在构造方法中使用“name”,则是访问局部变量,但是如果使用“”则可以访问成员变量。2.this关键字调用方法示例:publicclassCat{publicvoidmeow(){

System.out.println("喵喵叫");

}

publicvoidsayHello(){

this.meow();

}

}此处的this关键字是可以省略不写的,即“this.meow();”和“meow();”的效果是一样的。3.this关键字调用构造方法意义:构造方法在实例化对象时被JVM自动调用,不能使用调用普通方法的方式去调用构造方法,但是可以在一个构造方法中使用this关键字调用其他构造方法。语法:this([参数1,参数2…]);示例:classCat{ Stringname;//name属

publicCat(){

System.out.println("无参构造方法被调用了...");

}

publicCat(Stringname){

this();

System.out.println("有参构造方法被调用了...");

}

}

注意:在构造方法中,使用this调用构造方法的语句必须位于首行,且只能出现一次

示例:publicCat(Stringname){=name;

System.out.println("有参构造方法被调用了...");

this();//编译报错

}IntelliJIDEA在编译时报错“Callto'this()'mustbefirststatementinconstructorbody”,提示调用构造器语句必须是构造器里面的第一条语句。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第三章课后作业。第三学时(构造方法、this关键字)一、回顾上节课内容(1)对上节课布置的任务以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。了解垃圾回收机制。了解static关键字的作用。掌握static关键字的使用。二、知识讲解(一)垃圾回收机制(了解)1.引用计数器算法规则:对于创建的每一个对象都有一个与之关联的计数器,这个计数器记录着该对象被使用的次数,垃圾收集器在进行垃圾回收时,对扫描到的每一个对象判断一下计数器是否等于0,若等于0,就会释放该对象占用的内存空间,同时将该对象引用的其他对象的计数器进行减一操作。

示例:Studentstu1=newStudent(“张三”);Studentstu2=stu1;示意图:2.可达性分析算法规则:通过一系列的称为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(ReferenceChain),当一个对象到GCRoots没有任何引用链相连时,则证明此对象是不可用。示意图:

可以看出,Obj1~Obj4对象节点到GCRoot节点都是可达的,而Obj5和Obj6并没有直接或间接的引用链与GCRoot相连,因此可以看出Obj1~Obj4是不可回收的,而Obj5和Obj6可以被回收。System.gc()方法来通知Java虚拟机进行垃圾回收,该方法只是向Java虚拟机发出一个回收申请,至于Java虚拟机是否进行垃圾回收并不能确定。finalize()方法在垃圾收集器确定这个对象没有被引用时对这个对象调用,并将对象从内存中清除出去前,做必要的清理工作。示例:classPerson{ publicvoidfinalize(){

System.out.println(this+"对象将被回收");

}

}

publicclassTestGc{

publicstaticvoidmain(String[]args){

Personp1=newPerson();

Personp2=newPerson();

//让对象失去引用变量的引用

p1=null;

p2=null;

//通知JVM进行垃圾回收

System.gc();

}

}Java虚拟机只回收了一个对象,出现这种现象的原因在于,System.gc()只是建议虚拟机立即进行垃圾回收,虚拟机完全有可能并不立即进行垃圾回收,因此不能保证无引用对象的finalize()方法一定被调用。

(二)static关键字作用:Java中可以通过static关键字修饰变量达到全局变量的效果;static修饰的方法属于类方法,不需要创建对象就可以调用;static代码块常用于初始化静态变量。1.静态变量作用:为了实现共享数据的功能,可以使用static关键字来修饰该变量,这样的变量被称作静态变量。静态变量使用类名访问,也可以使用对象名访问。语法:类名.变量名 对象名.变量名演示案例:水池放水和进水(详见本章PPT)。注意:static关键字只能用来修饰成员变量,不能修饰局部变量,否则会编译报错。2.静态方法作用:静态方法的定义只需要为方法加上staitc关键字即可,调用静态方法可以直接使用类名调用,也可以使用对象名调用。

语法:类名.静态方法();对象名.静态方法();演示案例:水池放水和进水(详见本章PPT)。注意:静态方法只能访问使用static修饰的成员,原因是static修饰的成员在类加载到内存中时就就已经存在了,而非静态成员需要先创建对象才可以访问。

3.静态代码块代码块:在类或者在方法中,直接使用“{}”括起来的一段代码,表示一块代码区域,这块区域称为代码块。代码块中变量属于局部变量,只在自己所在区域(前后的{})内有效。局部代码块,指直接定义在方法内部的代码块。初始化代码块(构造代码块),指直接定义在类中的代码块。静态代码块,指使用static修饰的初始化代码块。注意:静态代码块在主方法执行之前执行静态代码块,而且只执行一次

演示案例:不同代码块的执行顺序(详见本章PPT)。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第三章课后作业。第四~五学时(上机练习)一、目标学生根据教材中的操作步骤和教师的演示进行上机练习,安装和配置好JDK并且分别使用记事本和IDEA完成第一个Java程序的开发,以及检查学生对相关知识点的掌握情况。上机练习完成后将报告通过平台提交给老师。二、上机任务1.完成本章实战练习(1分)2.完成本章演示案例。(1分)3.书架上有30本书,箱子中有40本书,把书架上的书全部放进箱子后,使用带参数的方法计算箱子中输的总数。(1分)4.一只北极熊,长1.3米,重100kg。在自定义方法中使用this关键字调用类的成员变量并在控制台输出这只北极熊的信息。(1分)5.设计钟表类,钟表有一个静态的获取时间的方法,此方法与钟表的结构、样式、价格无关。(1分)三、教师评分教师根据学生对上机任务的完成度给予评分,满分为5分,并纳入平时成绩中。习题教材第1章习题教学后记

千锋教育Java程序设计基础与实战教学设计课程名称:Java程序设计基础与实战__授课年级:_______________________授课学期:_______________________教师姓名:_______________________2022年07月22日课程名称第4章面向对象的特性计划学时5学时内容分析通过第3章的学习,相信大家对Java语言面向对象的基本知识已经有了初步了解。基于面向对象的思想编程,可以使整个程序的架构变得非常有弹性,又能减少代码冗余。本章将详细讲解如何实现和应用面向对象的三大特性,并讲解final关键字的使用方法和包的访问机制控制,让读者进一步体验面向对象编程的魅力。教学目标与教学要求【知识目标】理解Java的包管理机制。理解封装的概念。理解继承的概念。了解子类可以继承父类的哪些成员。理解多态的概念。【技能目标】掌握继承语法的使用。掌握访问权限修饰符的使用。掌握getter()和setter()方法的使用。掌握super关键字的含义和用法。掌握this关键字的使用。掌握static关键字的使用。【思政育人目标】鼓励同学

温馨提示

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

评论

0/150

提交评论