Java程序设计基础(微课版)(第2版)-教案全套 欧楠 第1-9章 面向对象基础 -常用类_第1页
Java程序设计基础(微课版)(第2版)-教案全套 欧楠 第1-9章 面向对象基础 -常用类_第2页
Java程序设计基础(微课版)(第2版)-教案全套 欧楠 第1-9章 面向对象基础 -常用类_第3页
Java程序设计基础(微课版)(第2版)-教案全套 欧楠 第1-9章 面向对象基础 -常用类_第4页
Java程序设计基础(微课版)(第2版)-教案全套 欧楠 第1-9章 面向对象基础 -常用类_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

第1章面向对象基础教案一、教学目标1.理解面向对象编程思想,区分面向过程与面向对象2.掌握类与对象的概念及关系3.了解Java语言的发展历史与应用领域4.理解Java程序运行机制与跨平台原理5.掌握JDK环境变量配置方法6.熟练使用Eclipse/IDEA开发工具7.掌握第一个Java程序的编写、编译与运行二、教学重点与难点教学重点:-面向对象编程思想的理解-类与对象的概念与关系-JDK环境变量配置-Java程序编译运行过程-main方法格式规范教学难点:-面向对象与面向过程的思维转换-JVM、JRE、JDK三者关系-Java跨平台实现原理-环境变量PATH与CLASSPATH作用三、教学内容1.1面向对象简介1.1.1面向对象的概念【教学内容】1.编程思想概念:编程思想是人们利用计算机解决实际问题的思维方式2.两种主流编程思想对比:-面向过程:分析步骤,按步骤一一实现,强调怎么做-面向对象:找对象,让对象做事,强调谁来做3.生活案例对比:总经理订票-面向过程:总经理亲自完成5个步骤-面向对象:招聘助理,由助理完成订票4.面向对象三大优势:-符合人类思维习惯-利于团队协作沟通-提升开发效率与可维护性【教学要点】-用生活案例让学生直观理解两种思想区别-强调面向对象是找对象做事,不是自己一步步做-引导学生从面向过程思维转向面向对象思维1.1.2类与对象【教学内容】1.对象概念:客观存在的事物,万物皆对象例:一台计算机、一支钢笔、一个人、一辆轿车2.类的概念:对某一类事物的抽象描述,是对象的模板3.类与对象关系:-类是模板,描述共同特征-对象是实例,是类的具体实现-一个类可以创建多个对象4.类的组成:-属性:成员变量,描述对象特征-行为:成员方法,描述对象功能【教学要点】-画图展示类与对象的关系-强调类是抽象的,对象是具体的-让学生举例:哪些是类,哪些是对象1.1.3面向对象程序设计的基本特性【教学内容】1.封装:隐藏内部实现,暴露公共接口2.继承:子类继承父类属性和方法,实现代码复用3.多态:同一方法在不同对象上有不同表现【教学要点】-本章只做概念介绍,后续章节详细讲解-让学生对三大特性有初步印象1.2Java语言概述1.2.1Java语言的发展历史【教学内容】1.1995年Sun公司正式发布Java1.02.1998年J2SE/J2EE/J2ME体系确立3.2004年Java5.0重大更新4.2009年Oracle收购Sun5.2014年Java8发布6.目前最新版本及LTS版本介绍【教学要点】-重点介绍Java8的里程碑意义-说明企业常用版本1.2.2Java语言的特点【教学内容】1.简单易用:去掉C++复杂特性2.面向对象:纯面向对象语言3.跨平台:一次编写,到处运行4.多线程:内置多线程支持5.健壮性:强类型、异常处理、垃圾回收6.安全性:沙箱安全机制【教学要点】-重点讲解跨平台特性-对比C++说明Java的简化之处1.2.3Java技术体系平台【教学内容】1.JavaSE(标准版):桌面应用、基础核心2.JavaEE(企业版):Web应用、企业级开发3.JavaME(微型版):嵌入式、移动设备【教学要点】-说明本课程学习JavaSE-介绍各平台应用领域1.3Java运行机制1.3.1Java程序运行原理【教学内容】1.Java程序执行流程:java源文件->编译->class字节码->解释运行2.JVM(Java虚拟机):-解释执行字节码文件-不同平台有不同JVM实现3.跨平台原理:-字节码统一,JVM适配各平台【教学要点】-画图演示编译运行全过程-强调JVM是跨平台的关键1.3.2JVM、JRE、JDK【教学内容】1.JVM:Java虚拟机,执行字节码2.JRE:Java运行环境,JVM+核心类库3.JDK:Java开发工具包,JRE+开发工具4.包含关系:JDK包含JRE,JRE包含JVM【教学要点】-画图展示三者包含关系-说明:开发装JDK,运行只需要JRE1.4Java开发环境搭建1.4.1JDK的下载与安装【教学内容】1.Oracle官网下载JDK2.注意操作系统版本3.安装路径建议:不要有中文和空格4.安装过程演示【教学要点】-强调安装路径不要有中文和空格-建议统一安装路径,方便后续配置1.4.2环境变量配置【教学内容】1.JAVA_HOME配置:JDK安装根目录2.PATH配置:添加%JAVA_HOME%\bin3.作用:让系统在任意目录找到命令4.验证:java-version、javac-version【教学要点】-一步步演示配置过程-解释每个环境变量的作用-强调配置后要重开cmd窗口1.4.3第一个Java程序【教学内容】1.编写源文件:HelloWorld.java2.代码结构讲解:class、main方法、输出语句3.编译:javacHelloWorld.java4.运行:javaHelloWorld5.常见错误:类名与文件名不一致、main方法格式错误【教学要点】-严格要求代码格式规范-让学生亲手编写并排错四、教学建议1.多举生活案例,帮助理解抽象概念2.环境配置环节教师演示后,学生动手实操3.第一个程序要求学生在命令行完成,理解编译运行4.鼓励学生主动排错,培养调试能力五、常见问题与解决方案1.环境变量配置后不生效->重开cmd窗口2.javac不是内部命令->PATH配置错误3.找不到主类->类名写错4.中文乱码->保存编码改为ANSI第2章Java数据类型与运算符教案一、教学目标1.掌握Java标识符命名规则与关键字2.掌握Java三种注释方式及使用场景3.熟练掌握8种基本数据类型及取值范围4.理解变量与常量的定义及作用域5.熟练掌握各类运算符的优先级与结合性6.掌握自动类型转换与强制类型转换规则7.培养良好的代码书写规范与命名习惯二、教学重点与难点教学重点:-8种基本数据类型的区别与使用-算术运算符、赋值运算符、比较运算符-逻辑运算符短路特性-自动类型转换与强制类型转换-三目运算符的使用教学难点:-自增自减运算符前缀与后缀区别-运算符优先级记忆与应用-逻辑运算符短路现象-类型转换中的精度丢失问题三、教学内容2.1关键字与标识符2.1.1关键字【教学内容】1.关键字概念:被Java语言赋予特殊含义的单词2.关键字特点:全部小写,如public、class、static、void3.常用关键字分类:-访问修饰符:public、protected、private-类、接口、包:class、interface、package、import-数据类型:byte、short、int、long、float、double、char、boolean-流程控制:if、else、switch、case、for、while、do、break、continue-异常处理:try、catch、finally、throw、throws4.保留字:goto、const,目前未使用【教学要点】-不需要学生全部背诵,在使用中逐渐熟悉-强调关键字全部小写,注意拼写-常见错误:将String当作关键字(String是类名)2.1.2标识符【教学内容】1.标识符概念:给类、方法、变量等起名字的字符序列2.命名规则(必须遵守):-由字母、数字、下划线、美元符号组成-不能以数字开头-不能是Java关键字-区分大小写3.命名规范(建议遵守):-类名:大驼峰,每个单词首字母大写,如HelloWorld-变量名、方法名:小驼峰,第一个单词小写,后续首字母大写,如studentName-常量名:全大写,单词间下划线分隔,如MAX_VALUE-包名:全小写,如com.example【教学要点】-规则必须遵守,否则编译报错-规范建议遵守,培养良好编码习惯-让学生练习判断标识符是否合法2.1.3注释【教学内容】1.注释作用:解释说明代码,提高可读性,调试程序2.三种注释方式:-单行注释://注释内容,用于单行说明-多行注释:/*注释内容*/,用于多行说明-文档注释:/**注释内容*/,用于生成API文档3.注释不参与编译,不影响程序运行4.注释使用原则:关键代码必须注释,复杂逻辑必须注释【教学要点】-强调写注释的重要性,培养良好习惯-演示三种注释的使用场景-注意:多行注释不能嵌套2.2数据类型2.2.1数据类型分类【教学内容】1.Java是强类型语言,每个变量必须声明类型2.数据类型分为两大类:-基本数据类型(8种):整数型:byte(1B)、short(2B)、int(4B)、long(8B)浮点型:float(4B)、double(8B)字符型:char(2B)布尔型:boolean-引用数据类型:类、接口、数组、String等【教学要点】-画图展示数据类型分类体系-强调基本类型与引用类型的本质区别2.2.2整数类型【教学内容】1.byte:1字节,范围-128~1272.short:2字节,范围-32768~327673.int:4字节,范围约-21亿~21亿,整数默认类型4.long:8字节,范围很大,赋值末尾加L或l5.整数三种表示方式:-十进制:默认,如100-二进制:0b开头,如0b101-八进制:0开头,如0123-十六进制:0x开头,如0xABC【教学要点】-记住各类型占用字节和取值范围-强调long类型必须加L-常用int,特殊场景用long2.2.3浮点类型【教学内容】1.float:单精度,4字节,赋值末尾加F或f2.double:双精度,8字节,浮点数默认类型,精度更高3.浮点数表示不精确,不能用于精确计算(如金融)4.科学计数法:3.14E2=314.0【教学要点】-强调float必须加F,否则默认是double-警告:浮点数比较不能用==-精确计算用BigDecimal类(后续章节讲解)2.2.4字符类型【教学内容】1.char:2字节,采用Unicode编码,可存中文2.三种赋值方式:-单引号字符:charc='A';-整数:charc=65;对应ASCII码-转义字符:charc='\n';3.常用转义字符:\n换行、\t制表、\r回车、\\反斜杠、\'单引号【教学要点】-强调单引号,与String双引号区别-char与int运算自动提升为int-演示转义字符效果2.2.5布尔类型【教学内容】1.boolean:只有两个值true和false2.用于条件判断和循环控制3.不能与其他类型转换【教学要点】-强调只有true/false,没有0/1-与C语言区别,避免混淆2.3变量与常量2.3.1变量【教学内容】1.变量概念:内存中的存储区域,值可改变2.变量三要素:数据类型、变量名、值3.变量定义格式:数据类型变量名=初始化值;4.变量使用注意:-必须先声明后使用-同一作用域变量名不能重复-局部变量必须初始化才能使用5.作用域:变量起作用的范围,从定义到所在大括号结束【教学要点】-画图展示变量内存分配-强调作用域概念-常见错误:未初始化就使用2.3.2常量【教学内容】1.常量概念:值不能改变的量2.字面值常量:100、3.14、'A'、true、"Hello"3.自定义常量:final修饰,只能赋值一次finalintMAX=100;4.常量命名规范:全大写,单词间下划线【教学要点】-演示final修饰的变量不能重新赋值-常量用于配置参数,便于维护2.4运算符2.4.1算术运算符【教学内容】1.基本运算:+、-、*、/、%-整数除法:结果取整,15/2=7-取模:求余数,用途:判断奇偶、整除2.自增自减:++、---前缀:++a,先自增后运算-后缀:a++,先运算后自增3.字符串连接:+,遇字符串则拼接"a"+1+2="a12",1+2+"a"="3a"【教学要点】-重点讲解++/--前缀后缀区别,用代码演示-强调整数除法问题,15.0/2才是7.5-字符串连接运算顺序很重要2.4.2赋值运算符【教学内容】1.基本赋值:=,从右往左2.扩展赋值:+=、-=、*=、/=、%=a+=b等价于a=(a的类型)(a+b)3.扩展赋值隐含强制类型转换【教学要点】-演示扩展赋值的自动强转-推荐使用扩展赋值,简洁且安全2.4.3比较运算符【教学内容】1.==、!=、>、<、>=、<=2.结果都是boolean类型:true或false3.==比较基本类型是比值,引用类型是比地址【教学要点】-强调==与=的区别,避免写错-浮点数不要用==比较2.4.4逻辑运算符【教学内容】1.&逻辑与:都真才真,不短路2.|逻辑或:有真就真,不短路3.&&短路与:左边假,右边不执行4.||短路或:左边真,右边不执行5.!逻辑非:取反6.^异或:不同为真,相同为假【教学要点】-重点讲解短路现象,用代码演示-推荐使用&&和||,效率更高2.4.5位运算符【教学内容】1.&按位与、|按位或、^按位异或、~按位取反2.<<左移、>>右移、>>>无符号右移3.位运算效率高,用于底层开发【教学要点】-简单了解,不做重点要求-记住:左移n位等价于乘2^n2.4.6三目运算符【教学内容】1.格式:条件?表达式1:表达式22.执行:条件为true取表达式1,否则取表达式23.两个表达式类型要兼容4.可以嵌套使用【教学要点】-与if-else对比,三目必须有返回值-简化代码,提高效率2.4.7运算符优先级【教学内容】1.优先级从高到低:括号>单目>算术>移位>比较>位>逻辑>三目>赋值2.不确定优先级就加括号【教学要点】-不需要全部记忆,用括号保证可读性-常见优先级问题要注意2.5类型转换2.5.1自动类型转换【教学内容】1.小类型自动转大类型2.转换顺序:byte->short->int->long->float->doublechar->int3.运算时自动提升:byte、short、char运算自动转int【教学要点】-画图展示类型转换顺序-强调byte运算结果是int2.5.2强制类型转换【教学内容】1.大类型转小类型,需要强制2.格式:(目标类型)值3.风险:精度丢失、数据溢出4.boolean不能参与类型转换【教学要点】-演示精度丢失和溢出的情况-谨慎使用强制转换四、教学建议1.多做运算符优先级练习,通过代码验证结果2.++/--和短路逻辑要分步演示,让学生理解执行过程3.强调编码规范和命名习惯,从一开始养成好习惯4.课后练习:编写简单计算器,实现加减乘除五、常见问题与解决方案1.long类型不加L导致数值溢出->末尾加L2.float类型不加F编译报错->末尾加F3.整数除法结果不对->至少一个操作数转浮点4.浮点数比较用==结果异常->用差值小于阈值判断5.byte运算赋值报错->强转或用int接收第3章Java程序结构控制教案一、教学目标1.掌握if-else条件分支语句的多种形式2.掌握switch多分支语句及注意事项3.熟练掌握for、while、do-while三种循环结构4.掌握break、continue跳转语句的使用5.理解嵌套循环的执行流程6.掌握一维数组的定义、初始化与访问7.掌握数组遍历、最值、反转等常用算法8.理解数组内存结构与参数传递二、教学重点与难点教学重点:-if-else多分支嵌套使用-for循环及嵌套循环应用-数组的定义与内存结构-数组遍历与常用算法-Arrays工具类使用教学难点:-嵌套循环执行流程分析-break与continue的区别及标号使用-数组作为方法参数的引用传递-冒泡排序、选择排序算法理解三、教学内容3.1流程控制概述【教学内容】1.顺序结构:代码从上到下依次执行2.分支结构:if、switch,根据条件选择执行3.循环结构:for、while、do-while,重复执行4.跳转语句:break、continue、return【教学要点】-强调顺序结构是基础-画图展示三种结构执行流程图3.2条件语句3.2.1if语句【教学内容】1.单分支if:if(条件){语句体;}条件为true执行,false跳过2.双分支if-else:if(条件){语句体1;}else{语句体2;}二选一执行3.多分支if-elseif-else:if(条件1){}elseif(条件2){}else{}多个条件依次判断4.if嵌套:if里面还有if5.else匹配原则:else与最近的未匹配的if配对【教学要点】-大括号建议即使一行也写-演示else匹配问题,缩进不决定匹配-多分支条件顺序要合理3.2.2switch语句【教学内容】1.格式:switch(表达式){case值1:语句;break;case值2:语句;break;default:语句;}2.表达式类型:byte、short、int、char、String、enum3.case穿透:不写break会继续执行后续case4.default:所有case都不匹配时执行,位置任意5.switchvsif-elseif:-switch:判断固定值,效率高-if-else:判断范围,更灵活【教学要点】-强调break的重要性-演示case穿透现象及合理利用-case值必须是常量,不能重复3.3循环语句3.3.1for循环【教学内容】1.格式:for(初始化;条件判断;控制条件){循环体;}2.执行流程:初始化->判断->执行->控制->判断...3.执行次数:已知循环次数优先使用4.死循环:for(;;){}5.循环变量作用域:for内定义只在for内有效【教学要点】-画图演示执行流程-让学生数循环执行次数-常见错误:条件写死导致死循环3.3.2while循环【教学内容】1.格式:while(条件){循环体;}2.特点:先判断后执行,可能一次都不执行3.适用:循环次数未知的情况4.死循环:while(true){}【教学要点】-对比for循环,while初始化在外面-别忘了更新循环条件,否则死循环3.3.3do-while循环【教学内容】1.格式:do{循环体;}while(条件);2.特点:先执行后判断,至少执行一次3.末尾分号不能忘4.三种循环对比选择【教学要点】-强调至少执行一次的特点-末尾分号是常见易错点3.3.4跳转语句【教学内容】1.break:-跳出当前循环或switch-标号用法:break标号;跳出指定循环2.continue:-跳过本次循环,继续下一次-只能在循环中使用3.return:结束方法【教学要点】-对比break和continue的区别-用代码演示执行流程差异3.3.5嵌套循环【教学内容】1.概念:循环里面还有循环2.执行次数:外层次数*内层次数3.经典案例:-打印矩形、三角形、菱形-九九乘法表-冒泡排序4.外层控制行,内层控制列【教学要点】-画图演示执行过程-从简单矩形开始,逐步进阶-找规律:行数、星号数、空格数的关系3.4数组基础3.4.1数组概念【教学内容】1.数组:存储相同类型数据的有序集合2.特点:长度固定,类型相同,有序有索引3.索引:从0开始,最大索引=长度-1【教学要点】-强调长度一旦定义不可改变-索引从0开始是易错点3.4.2一维数组定义【教学内容】1.动态初始化:指定长度,系统赋默认值int[]arr=newint[5];2.静态初始化:指定元素,系统算长度int[]arr=newint[]{1,2,3,4,5};简化:int[]arr={1,2,3,4,5};3.两种格式对比与选择【教学要点】-推荐int[]arr格式,不推荐intarr[]-静态初始化不能先定义长度3.4.3数组访问与遍历【教学内容】1.访问:数组名[索引]2.赋值:arr[0]=100;3.长度属性:arr.length4.遍历:-普通for循环:可操作索引-增强for循环:只读,简洁5.默认值:整数->0,浮点->0.0,布尔->false,引用->null【教学要点】-演示ArrayIndexOutOfBoundsException-两种遍历方式适用场景3.4.4数组内存结构【教学内容】1.栈内存:存储局部变量,使用完毕立即释放2.堆内存:存储new出来的东西,每个对象有地址值3.数组内存:-栈:存数组引用(地址)-堆:存实际数组元素4.多个引用指向同一个数组5.空指针异常NullPointerException【教学要点】-画图一步步演示内存变化-这是理解引用类型的关键3.5数组常用操作3.5.1获取最值【教学内容】1.思路:-定义变量存第一个元素-遍历数组逐个比较-遇到更大/更小的就更新2.代码实现【教学要点】-初始值为什么取第一个元素而不是0-求最大值和最小值的区别3.5.2数组反转【教学内容】1.思路:首尾元素交换2.索引:i和arr.length-1-i交换3.终止条件:i<arr.length/24.代码实现【教学要点】-画图演示交换过程-为什么交换到中间就停止3.5.3数组排序【教学内容】1.冒泡排序:-相邻元素比较,大的往后移-每轮确定一个最大值2.选择排序:-每轮找最小值,交换到前面3.Arrays.sort():工具类快速排序【教学要点】-冒泡排序分步演示-实际开发用Arrays工具类3.5.4Arrays工具类【教学内容】1.Arrays.toString(arr):数组转字符串2.Arrays.sort(arr):排序3.Arrays.binarySearch(arr,key):二分查找4.Arrays.copyOf(arr,newLength):复制数组5.Arrays.equals(arr1,arr2):比较数组【教学要点】-强调要importjava.util.Arrays-二分查找要求数组已排序3.6二维数组【教学内容】1.概念:数组的数组2.定义:int[][]arr=newint[3][4];3.访问:arr[i][j]4.应用:矩阵、表格数据【教学要点】-简单了解,不做重点要求-本质还是一维数组四、教学建议1.循环部分多画图,让学生一步步跟踪执行2.嵌套循环从简单案例入手,循序渐进3.数组内存一定要画图,帮助理解引用传递4.算法部分分步演示,不要直接给完整代码5.课后练习:学生成绩管理系统(数组存储、统计分析)五、常见问题与解决方案1.ArrayIndexOutOfBoundsException->检查索引范围2.NullPointerException->检查数组是否为null3.switch忘记break->养成每个case写break习惯4.循环条件写错死循环->检查条件更新语句5.数组越界->记住索引从0到length-1六、课时安排-理论讲解:4课时-实验操作:3课时-习题讲解:1课时-合计:8课时第4章类的封装性教案一、教学目标1.掌握类的定义与对象的创建方法2.理解并区分成员变量与局部变量3.掌握封装的实现与private关键字4.熟练掌握构造方法的定义与使用5.深入理解this关键字的三种用法6.掌握static关键字的特性与使用7.理解方法参数的值传递机制8.掌握标准JavaBean的编写规范二、教学重点与难点教学重点:-类的定义与对象创建-封装思想与private关键字-构造方法的重载-this关键字的使用-static修饰符的特性-JavaBean编写规范教学难点:-对象内存图分析-方法参数的值传递机制-静态与非静态的访问区别-成员变量与局部变量的区别-多个对象共享静态变量三、教学内容4.1类与对象4.1.1类的定义【教学内容】1.类的组成:-成员变量(属性):描述对象特征-成员方法(行为):描述对象功能2.类的定义格式:publicclass类名{成员变量;成员方法;}3.注意事项:-成员变量定义在类中方法外-成员方法不要写static-类名大驼峰命名4.示例:定义学生类、手机类【教学要点】-从生活中抽象类:先找属性,再找行为-强调成员变量不要写static(初学者易错)-让学生自己定义类(汽车、教师等)4.1.2对象的创建与使用【教学内容】1.创建对象:类名对象名=new类名();2.使用对象:-访问成员变量:对象名.变量名-调用成员方法:对象名.方法名(参数)3.多个对象:一个类可以创建多个对象4.对象引用赋值:Students2=s1;指向同一个对象【教学要点】-画图展示new对象的内存分配-演示多个引用指向同一对象的效果-强调new才是创建对象,赋值只是传地址4.1.3对象内存图【教学内容】1.栈内存:存储局部变量(对象引用)2.堆内存:存储new出来的对象(成员变量)3.方法区:存储.class字节码信息4.单对象内存图分析5.两个对象内存图分析6.两个引用指向同一个对象【教学要点】-一步步画图演示,让学生跟着画-这是理解面向对象的关键基础-强调:引用存地址,对象存数据4.2成员变量与局部变量【教学内容】1.定义位置区别:-成员变量:类中方法外-局部变量:方法内或方法参数2.内存位置区别:-成员变量:堆内存-局部变量:栈内存3.生命周期区别:-成员变量:随对象而生,随对象而死-局部变量:随方法调用而生,随方法结束而死4.初始化值区别:-成员变量:有默认值-局部变量:无默认值,必须赋值才能用5.重名问题:就近原则,局部优先【教学要点】-用表格对比总结,清晰明了-演示局部变量未初始化编译报错-演示重名时的就近原则4.3封装4.3.1private关键字【教学内容】1.封装概念:隐藏内部实现,暴露公共访问方式2.private作用:私有,只能本类访问3.修饰成员变量:private数据类型变量名;4.修饰成员方法:private修饰的方法只能本类调用5.为什么封装:-提高数据安全性-可加逻辑校验-隐藏实现细节【教学要点】-演示直接访问private编译报错-举例:年龄不能为负数,性别只能是男/女4.3.2get/set方法【教学内容】1.get方法:获取私有变量值public返回值类型getXxx(){returnxxx;}2.set方法:设置私有变量值publicvoidsetXxx(参数){this.xxx=参数;}3.布尔类型get方法命名:isXxx()4.在set方法中加校验逻辑【教学要点】-强调命名规范,首字母大写-IDE自动生成快捷键介绍-演示在set方法中加数据校验4.3.3标准JavaBean【教学内容】1.JavaBean规范:-成员变量private-提供无参构造方法-提供get/set方法-实现Serializable接口(可选)2.作用:封装数据,用于各层数据传递3.示例:标准学生类编写【教学要点】-这是企业开发标准,必须严格遵守-强调无参构造的重要性4.4构造方法4.4.1构造方法定义【教学内容】1.作用:创建对象时初始化成员变量2.格式:修饰符类名(参数列表){初始化代码;}3.特点:-方法名与类名完全相同(包括大小写)-没有返回值类型(连void都不能写)-不能写return返回值4.执行时机:new对象时自动调用【教学要点】-常见错误:写了void变成普通方法-演示new对象时构造方法自动执行4.4.2构造方法重载【教学内容】1.无参构造方法:-不写则默认提供-写了有参则不再默认提供2.有参构造方法:创建对象同时赋值3.构造方法重载:参数列表不同4.建议:无论是否需要,都手动写无参构造【教学要点】-演示:只写有参,new无参编译报错-强调:永远手动提供无参构造4.5this关键字4.5.1this概念【教学内容】1.this含义:代表当前对象的引用2.哪个对象调用方法,this就代表哪个对象3.this存储的是对象的地址值【教学要点】-打印this看地址值,与对象对比-画图理解this指向4.5.2this三种用法【教学内容】1.this.成员变量:解决成员变量与局部变量重名=name;2.this.成员方法:调用本类其他方法this.method();通常this可省略3.this(参数):调用本类其他构造方法-必须在构造方法第一行-不能相互调用死循环-构造方法间复用代码【教学要点】-重点:重名时必须写this,不重名可省略-this(参数)必须第一行,演示写后面编译报错4.6static关键字4.6.1static特点【教学内容】1.属于类,不属于对象2.所有对象共享一份3.随类加载而加载,优先于对象存在4.推荐用类名访问:类名.静态成员5.静态方法中没有this【教学要点】-画图:静态在方法区,所有对象共享-演示:一个对象修改静态,所有对象都变4.6.2static使用【教学内容】1.静态变量:类变量,所有对象共享staticintcount;//统计创建对象个数2.静态方法:工具方法,不需要对象publicstaticintmax(inta,intb)3.静态代码块:类加载时执行一次static{初始化代码}4.访问规则:-静态不能直接访问非静态-非静态可以访问静态【教学要点】-原因:静态先存在,非静态后存在-演示静态方法访问非静态编译报错-main方法是静态的,所以调用的方法也要静态4.7方法参数传递【教学内容】1.Java只有值传递,没有引用传递2.基本类型参数:传递值的副本-方法内修改不影响原值3.引用类型参数:传递地址值的副本-方法内修改对象内容,会影响原对象-方法内重新赋值,不影响原引用4.String特殊:虽然是引用,但效果类似基本类型【教学要点】-画图演示参数传递内存变化-代码演示两种类型传递效果-强调:都是值传递,只是值的内容不同四、教学建议1.多画图,内存图是理解面向对象的关键2.从简单类开始,逐步增加复杂度3.强调编码规范,从一开始养成好习惯4.每学一个知识点就写代码验证,不要光听5.课后练习:定义学生、教师、员工等多个JavaBean五、常见问题与解决方案1.构造方法写了void变成普通方法->去掉返回值类型2.只写有参构造,new无参报错->手动加无参构造3.静态方法访问非静态报错->要么都静态,要么创建对象4.成员变量与局部变量重名->加this.区分5.忘记写private破坏封装->养成封装习惯六、课时安排-理论讲解:5课时-实验操作:3课时-习题讲解:1课时-合计:9课时第5章类的继承性教案一、教学目标1.理解继承的概念与意义,掌握extends实现继承2.掌握继承中成员变量、成员方法的访问特点3.理解继承中构造方法的执行顺序4.熟练掌握super关键字的三种用法5.掌握方法重写的规则与@Override注解6.理解多态的概念与前提,掌握多态的实现7.掌握向上转型与向下转型,instanceof关键字8.掌握final关键字的使用9.了解包的定义与四种权限修饰符二、教学重点与难点教学重点:-extends实现继承与特点-super关键字的使用-方法重写与@Override-多态的实现与成员访问特点-向上转型与向下转型教学难点:-继承中构造方法执行顺序-多态中成员变量与成员方法访问区别-向下转型的安全问题-方法重写与重载的本质区别-四种权限修饰符的访问范围三、教学内容5.1继承概述5.1.1继承的概念【教学内容】1.继承:子类继承父类的属性和方法,实现代码复用2.生活中的继承:子承父业、遗传3.程序中的继承:多个类有相同代码,抽取到父类4.继承好处:-代码复用,减少冗余-便于维护和扩展-为多态奠定基础5.继承弊端:增强了类之间的耦合性【教学要点】-用动物体系举例:Animal->Dog/Cat-强调:共性抽取,子类拥有父类非私有成员5.1.2继承的实现【教学内容】1.关键字:extends2.格式:class子类extends父类{}3.特点:-Java只支持单继承,不支持多继承-支持多层继承(继承体系)-子类只能继承父类非private成员-构造方法不能继承4.Object类:所有类的老祖宗,不写extends默认继承【教学要点】-演示多继承编译报错-画图展示继承体系-强调:私有成员不能继承5.2继承中成员访问特点5.2.1成员变量访问【教学内容】1.子类父类变量不同名:直接访问2.子类父类变量同名:就近原则-局部变量:直接写-本类成员:this.变量名-父类成员:super.变量名3.注意:private变量子类不能直接访问【教学要点】-演示三种情况的访问-this找本类,super找父类5.2.2成员方法访问【教学内容】1.子类父类方法不同名:直接调用2.子类父类方法同名(重写):子类优先3.调用父类方法:super.方法名()4.方法重载:同类中方法名同参数不同【教学要点】-对比重写与重载的区别-重写是父子类,重载是同类5.2.3构造方法访问【教学内容】1.子类构造方法默认第一行有super()2.先执行父类构造,再执行子类构造3.父类没有无参构造,子类必须手动super(参数)4.super()必须在构造方法第一行5.this()和super()不能同时存在【教学要点】-画图演示构造方法执行顺序-演示父类无无参时的编译错误-为什么先父后子:子类要用父类数据5.3super关键字【教学内容】1.super含义:代表父类对象的引用2.三种用法:-super.成员变量:访问父类成员变量-super.成员方法:调用父类成员方法-super(参数):调用父类构造方法3.thisvssuper:-this:本类对象引用-super:父类对象引用【教学要点】-对比this与super的用法-super(参数)必须第一行5.4方法重写【教学内容】1.概念:子类对父类方法重新实现,覆盖父类方法2.要求:-方法名、参数列表必须完全相同-子类返回值类型<=父类-子类访问权限>=父类-子类抛出异常<=父类3.@Override注解:标记重写,编译检查4.注意:-静态方法不能被重写-private方法不能被重写-构造方法不能被重写【教学要点】-强调@Override注解的重要性-演示重写与不重写的执行结果-重写vs重载表格对比5.5多态5.5.1多态概述【教学内容】1.概念:同一方法在不同对象上有不同表现2.多态三前提:-要有继承/实现关系-要有方法重写-父类引用指向子类对象3.格式:父类类型变量名=new子类对象();Animala=newDog();【教学要点】-生活举例:同一动作不同对象不同表现-三个前提缺一不可5.5.2多态中成员访问特点【教学内容】1.成员变量:编译看左边,运行看左边2.成员方法:编译看左边,运行看右边3.静态方法:编译看左边,运行看左边4.原因:方法有重写,变量没有重写【教学要点】-代码演示验证访问特点-口诀:变量看左,方法看右5.5.3转型【教学内容】1.向上转型(自动):父类引用子类对象Animala=newDog();安全2.向下转型(强制):父类转子类Dogd=(Dog)a;有风险3.instanceof关键字:判断类型if(ainstanceofDog){强转}4.ClassCastException:类型转换异常【教学要点】-演示不判断直接强转的异常-强调强转前必须instanceof判断-只能在继承体系内转型5.5.4多态好处【教学内容】1.提高代码扩展性2.父类作为方法参数,接收所有子类对象3.面向抽象编程,不面向具体【教学要点】-案例:喂养动物,方法参数Animal接收所有子类-新增子类不需要修改原有代码5.6final关键字【教学内容】1.修饰类:finalclass,不能被继承2.修饰方法:final方法,不能被重写3.修饰变量:常量,只能赋值一次-基本类型:值不能变-引用类型:地址不能变,对象内容可变4.修饰局部变量、成员变量5.静态常量:publicstaticfinal,全大写【教学要点】-演示final类被继承编译报错-演示final方法被重写编译报错-强调引用类型常量地址不变内容可变5.7包与权限【教学内容】1.包:package,解决类名冲突,分类管理格式:packagecom.xxx.xxx;必须第一条语句2.导包:import,使用其他包的类3.四种权限修饰符:public>protected>默认>private-public:任意位置访问-protected:本包、子类-默认:本包-private:本类【教学要点】-表格对比四种权限访问范围-开发常用:public、private四、教学建议1.用动物继承体系贯穿整章讲解,案例统一2.多态部分一定要代码演示,对比运行结果3.方法重写与重载要对比讲解,避免混淆4.向下转型的安全问题要重点强调5.课后练习:图形继承体系(Shape-Circle-Rectangle)五、常见问题与解决方案1.父类无无参构造,子类编译报错->手动super(参数)2.多态调用子类特有方法报错->向下转型3.ClassCastException->强转前instanceof判断4.重写写错参数变成重载->加@Override注解检查5.super()没写第一行编译报错->移到第一行第6章类的多态性教案一、教学目标1.理解抽象类的概念与意义,掌握abstract关键字2.掌握抽象方法的定义与使用要求3.理解接口的概念,掌握接口的定义与实现4.掌握接口中成员的特点(常量、抽象方法、默认方法、静态方法)5.理解类与接口的多实现、接口与接口的多继承6.掌握匿名内部类的使用场景与语法7.理解抽象类与接口的区别,能正确选择使用8.理解面向接口编程思想二、教学重点与难点教学重点:-抽象类与抽象方法的定义-接口的定义与implements实现-接口中各方法的特点-匿名内部类的使用-抽象类与接口的区别对比教学难点:-抽象类与普通类的区别-接口多实现的意义-默认方法与静态方法的区别-匿名内部类本质理解-面向接口编程思想三、教学内容6.1抽象类6.1.1抽象类概述【教学内容】1.抽象概念:不能实例化的类,用于被继承2.为什么需要抽象类:-抽取子类共性方法,但父类实现无意义-强制子类必须重写某些方法3.关键字:abstract4.定义格式:abstractclass类名{}【教学要点】-举例:Animal类eat方法,每种动物吃法不同-父类方法实现无意义,定义为抽象6.1.2抽象方法【教学内容】1.抽象方法:只有声明,没有方法体2.格式:publicabstract返回值类型方法名(参数);3.注意事项:-有抽象方法的类必须是抽象类-抽象类可以没有抽象方法-抽象类不能实例化(不能new)-子类继承抽象类必须重写所有抽象方法,否则子类也是抽象类4.抽象类有构造方法,供子类使用【教学要点】-演示抽象方法没有大括号,只有分号-演示子类不重写抽象方法编译报错-强调:抽象类不能new,但有构造方法6.1.3abstract注意事项【教学内容】1.abstract不能与哪些关键字共存:-final:final类不能被继承,abstract需要被继承,矛盾-private:private方法不能被重写,abstract需要被重写,矛盾-static:静态可以类名调用,抽象方法无意义2.抽象类的子类:-要么重写所有抽象方法(普通类)-要么也是抽象类【教学要点】-演示abstract与final共存编译报错-解释为什么不能共存6.2接口6.2.1接口概述【教学内容】1.接口概念:公共的规范标准,定义行为规范2.生活中的接口:USB接口、电源插座3.程序中的接口:定义方法规范,类来实现4.关键字:interface定义,implements实现5.定义格式:publicinterface接口名{}【教学要点】-强调接口是规范,不是类-接口定义行为,类来具体实现6.2.2接口成员特点【教学内容】1.成员变量:只能是常量默认publicstaticfinal,必须初始化2.成员方法(Java7及之前):只能是抽象方法,默认publicabstract3.Java8新增:-默认方法:default修饰,有方法体,供子类调用或重写-静态方法:static修饰,有方法体,只能接口名调用4.Java9新增:私有方法,抽取重复代码5.接口没有构造方法,不能实例化【教学要点】-演示接口变量默认是常量-演示默认方法可以被实现类直接调用-演示静态方法只能接口名调用6.2.3接口的实现【教学内容】1.类实现接口:class类名implements接口名{}2.要求:必须重写接口所有抽象方法3.多实现:一个类可以实现多个接口classAimplementsB,C,D{}4.继承加实现:先继承后实现classAextendsBimplementsC,D{}5.不重写所有抽象方法则类必须是抽象类【教学要点】-对比:类只能单继承,但接口可以多实现-这是接口最重要的优势6.2.4接口与接口关系【教学内容】1.接口与接口:继承关系,多继承interfaceAextendsB,C,D{}2.类与类:继承关系,单继承3.类与接口:实现关系,多实现4.总结关系表【教学要点】-表格对比三种关系-强调:只有接口与接口可以多继承6.3抽象类与接口对比【教学内容】1.相同点:-都不能实例化-都可以包含抽象方法-都位于继承/实现体系顶端2.不同点:-抽象类:有构造方法,有普通方法,单继承,既定义属性又定义行为-接口:无构造方法,常量+方法,多实现,主要定义行为3.选择原则:-父子类存在isa关系用抽象类-定义额外功能规范用接口【教学要点】-表格详细对比所有区别-举例:动物是抽象类,游泳是接口6.4内部类6.4.1内部类概述【教学内容】1.概念:类中定义的类2.分类:-成员内部类-局部内部类-匿名内部类(重点)-静态内部类3.访问特点:内部类可以直接访问外部类成员,包括私有【教学要点】-简单了解,重点是匿名内部类6.4.2匿名内部类【教学内容】1.本质:继承该类或实现该接口的子类匿名对象2.格式:new父类/接口(){重写方法;};3.使用场景:-方法参数是接口/抽象类-只使用一次,不需要单独定义类4.Lambda表达式简化(后续章节)【教学要点】-演示:方法参数是接口,用匿名内部类传参-对比:单独定义实现类vs匿名内部类-强调:匿名内部类是对象,可以直接调用方法四、教学建议1.多举生活接口例子,理解接口是规范的含义2.抽象类与接口对比表格要清晰,让学生记牢区别3.匿名内部类结合多态讲解,理解本质是子类对象4.课后练习:定义门抽象类+开锁接口,防盗门实现五、常见问题与解决方案1.接口静态方法用对象调用报错->用接口名调用2.抽象类new对象报错->抽象类不能实例化3.实现接口不重写方法报错->要么重写要么抽象类4.abstract与final共存报错->不能一起用5.多实现接口有同名默认方法->重写解决冲突第7章异常处理教案一、教学目标1.理解异常的概念与异常体系结构2.掌握JVM默认处理异常的方式3.熟练掌握try-catch-finally异常处理方式4.掌握throws声明异常与throw抛出异常5.掌握多异常处理方式6.掌握自定义异常的定义与使用7.理解编译时异常与运行时异常的区别8.掌握异常处理的最佳实践二、教学重点与难点教学重点:-try-catch-finally异常捕获-throws声明异常-throw抛出异常-运行时异常与编译时异常-自定义异常教学难点:-finally与return执行顺序-throws与throw的区别-异常处理原则与最佳实践-异常链与异常包装三、教学内容7.1异常概述7.1.1异常概念【教学内容】1.异常:程序运行时出现的不正常情况2.异常vs错误:-异常:程序可以处理的问题,如空指针、除零-错误:系统级问题,程序无法处理,如OOM3.异常好处:-提高程序健壮性-分离正常代码与错误处理代码-便于定位问题【教学要点】-演示:除零、数组越界、空指针异常-异常是对象,JVM创建异常对象7.1.2异常体系【教学内容】1.Throwable是所有异常和错误的根类2.Error:错误,程序不处理3.Exception:异常,程序需要处理-RuntimeException:运行时异常,不要求必须处理-非RuntimeException:编译时异常,必须处理4.常见异常:-NullPointerException、ArrayIndexOutOfBoundsException-ArithmeticException、ClassCastException-ParseException、IOException【教学要点】-画图展示异常继承体系-区分运行时异常与编译时异常7.1.3JVM默认处理【教学内容】1.JVM遇到异常默认处理:-创建异常对象(包含异常类型、原因、位置)-输出异常信息到控制台-终止程序运行2.异常堆栈信息解读:-异常类型、异常消息-at行号:异常发生位置,从下往上看调用链【教学要点】-教学生如何看异常堆栈信息-强调:默认处理程序会终止,这不好7.2异常处理7.2.1try-catch【教学内容】1.格式:try{可能出异常的代码;}catch(异常类型变量名){异常处理代码;}2.执行流程:-无异常:try执行完,跳过catch-有异常:try跳到catch,处理后继续执行3.常用方法:-e.getMessage():异常消息-e.toString():异常类型+消息-e.printStackTrace():打印堆栈【教学要点】-演示有异常和无异常的执行流程-对比:处理异常程序不终止,继续运行7.2.2try-catch-finally【教学内容】1.finally作用:必须执行的代码,释放资源2.格式:try{}catch(){}finally{}3.特点:-无论是否有异常,finally都执行-只有JVM退出(System.exit(0))才不执行4.finally与return:-finally在return之前执行-finally修改返回值的情况【教学要点】-代码演示finally总是执行-演示System.exit(0)跳出finally-重点:finally用于关流、释放资源7.2.3多异常处理【教学内容】1.多个catch:try{}catch(Ae){}catch(Be){}catch(Exceptione){}2.注意:子类异常在前,父类在后3.JDK7+:一次catch多个异常catch(A|Be){}4.多个异常平级关系【教学要点】-演示父类异常在前编译报错-强调:Exception放最后兜底7.3声明与抛出异常7.3.1throws声明异常【教学内容】1.作用:方法内部处理不了,声明抛出给调用者2.格式:方法名()throws异常1,异常2{}3.注意:-编译时异常必须声明-运行时异常可以不声明-子类重写方法声明异常不能大于父类4.调用者处理:要么继续throws,要么try-catch【教学要点】-演示编译时异常不声明编译报错-对比:运行时异常不声明也可以7.3.2throw抛出异常【教学内容】1.作用:手动抛出异常对象2.格式:thrownew异常类型("异常消息");3.位置:方法内部4.throwsvsthrow:-throws:方法声明,跟异常类,可多个-throw:方法内部,跟异常对象,一个5.应用:参数校验不合法时手动抛出【教学要点】-举例:年龄不能为负数,手动抛出异常-表格对比throws与throw区别7.4自定义异常【教学内容】1.为什么自定义:JDK异常不够用,业务异常2.自定义编译时异常:继承Exception3.自定义运行时异常:继承RuntimeException4.提供构造方法:-无参构造-带消息的构造-带消息和原因的构造5.使用:thrownew自定义异常()【教学要点】-举例:年龄非法异常、分数超出范围异常-推荐继承RuntimeException7.5异常处理最佳实践【教学内容】1.异常处理原则:-能处理就处理,处理不了就抛出-不要捕获后什么都不做(空catch)-不要捕获Exception太宽泛-异常信息要详细,便于排查2.资源释放:try-with-resources自动关流3.不要用异常控制业务流程【教学要点】-强调:空catch是大忌,隐藏问题-介绍JDK7+try-with-resources语法四、教学建议1.先演示各种常见异常,让学生认识它们2.教学生看异常堆栈信息,这是调试的关键3.finally执行顺序要代码一步步演示4.强调异常处理最佳实践,养成好习惯5.课后练习:写参数校验方法,抛自定义异常五、常见问题与解决方案1.空catch块->至少打印异常信息2.catch(Exceptione)太宽泛->捕获具体异常3.finally中写return->finally不要写return4.编译时异常不处理->try-catch或throws5.异常信息被吞->一定要打印堆栈第8章集合框架教案一、教学目标1.理解集合框架体系结构,掌握Collection与Map区别2.熟练掌握List集合特点及ArrayList、LinkedList使用3.熟练掌握Set集合特点及HashSet、TreeSet使用4.理解哈希表原理,掌握hashCode与equals方法5.熟练掌握Map集合特点及HashMap、TreeMap使用6.掌握迭代器Iterator的使用与原理7.掌握增强for循环及泛型的使用8.掌握Collections工具类的常用方法9.能根据业务场景选择合适的集合二、教学重点与难点教学重点:-List集合的特点与常用方法-Set集合去重原理-Map集合键值对操作-迭代器遍历集合-泛型的使用-Collections工具类教学难点:-哈希表存储原理-hashCode与equals方法重写-红黑树原理(了解)-迭代器快速失败机制-集合的选择策略三、教学内容8.1集合概述【教学内容】1.集合vs数组:-数组:长度固定,可存基本类型和引用类型-集合:长度可变,只能存引用类型,功能强大2.集合体系:-Collection:单列集合List:有序、可重复Set:无序、不可重复-Map:双列集合,键值对3.集合都在java.util包下【教学要点】-画图展示集合体系树-强调:集合只能存对象,基本类型要包装类8.2Collection集合8.2.1Collection常用方法【教学内容】1.添加:add(Ee)、addAll(Collectionc)2.删除:clear()、remove(Object)、removeAll()3.判断:isEmpty()、contains(Object)、containsAll()4.获取:size()、iterator()5.转数组:toArray()【教学要点】-这些方法所有Collection子类都有-演示方法使用8.2.2迭代器Iterator【教学内容】1.作用:遍历集合的通用方式2.使用:Iteratorit=coll.iterator();while(it.hasNext()){it.next();}3.原理:指针,初始在第一个元素前4.增强for:foreach,底层也是迭代器for(Ee:集合/数组){}5.并发修改异常:遍历同时修改集合6.ListIterator:可以逆向遍历,遍历时添加修改【教学要点】-演示NoSuchElementException-演示ConcurrentModificationException-三种遍历方式对比8.3List集合8.3.1List特点与方法【教学内容】1.List特点:有序、可重复、有索引2.特有方法(索引操作):-add(intindex,Eelement)-remove(intindex)-get(intindex)-set(intindex,Eelement)3.四种遍历:普通for、迭代器、增强for、ListIterator【教学要点】-重点:有索引,可以普通for循环-Set没有索引,不能普通for8.3.2ArrayList【教学内容】1.底层:数组,查询快、增删慢2.初始容量10,扩容1.5倍3.线程不安全,效率高4.常用场景:查询多、增删少5.Vector:线程安全,效率低,已过时【教学要点】-开发最常用集合-泛型使用:ArrayList<String>8.3.3LinkedList【教学内容】1.底层:双向链表,查询慢、增删快2.特有方法:操作首尾addFirst()、addLast()getFirst()、getLast()removeFirst()、removeLast()3.常用场景:增删多、查询少【教学要点】-对比ArrayList与LinkedList区别-画图展示链表结构8.4Set集合8.4.1Set特点【教学内容】1.Set特点:无序、不可重复、无索引2.不能普通for循环,只能迭代器或增强for3.主要实现类:HashSet、TreeSet、LinkedHashSet【教学要点】-重点:不可重复,用于去重-无序:存和取顺序不一致8.4.2HashSet【教学内容】1.底层:哈希表(数组+链表+红黑树)2.去重原理:-先调用hashCode()算哈希值-哈希值不同,直接存-哈希值相同,调用equals()比较-equals返回false才存3.自定义对象去重:必须重写hashCode和equals4.线程不安全,效率高【教学要点】-画图演示哈希表存储过程-演示:不重写方法无法去重-IDE自动生成hashCode和equals8.4.3LinkedHashSet【教学内容】1.底层:哈希表+链表2.特点:有序(存和取顺序一致)3.去重同HashSet【教学要点】-对比HashSet:有序但稍慢8.4.4TreeSet【教学内容】1.底层:红黑树2.特点:排序、去重3.两种排序方式:-自然排序:元素实现Comparable接口-比较器排序:构造方法传Comparator4.去重根据比较结果为0【教学要点】-演示自然排序Comparable-演示比较器Comparator-红黑树简单了解8.5Map集合8.5.1Map概述【教学内容】1.Map:双列集合,键值对(key-value)2.特点:-key不重复,value可重复-一个key对应一个value3.常用实现类:HashMap、TreeMap、LinkedHashMap4.Map与Collection无继承关系【教学要点】-对比Collection单列,Map双列-举例:学号-学生,身份证-人8.5.2Map常用方法【教学内容】1.添加:put(Kkey,Vvalue),key重复覆盖2.删除:remove(Objectkey)、clear()3.获取:get(Objectkey)、size()4.判断:containsKey()、containsValue()、isEmpty()5.获取功能:-keySet():获取所有key的Set集合-values():获取所有value的Collection-entrySet():获取键值对对象的Set【教学要点】-put返回旧值,key重复返回被覆盖的值-get找不到返回null8.5.3Map遍历【教学内容】1.方式1:键找值keySet()->遍历key->get(key)找value2.方式2:键值对对象entrySet()->遍历Entry->getKey()、getValue()3.方式3:forEachLambda(JDK8+)map.forEach((k,v)->{})【教学要点】-两种遍历都要掌握-entrySet方式效率更高8.5.4HashMap【教学内容】1.底层:哈希表,同HashSet2.特点:key去重同HashSet原理3.允许null键null值4.线程不安全,效率高5.HashTable:线程安全,不允许null,过时【教学要点】-开发最常用Map-key为自定义对象要重写hashCode和equals8.6泛型【教学内容】1.泛型:参数化类型,把类型当参数2.好处:-避免类型转换-编译期检查类型安全3.使用:-泛型类:classA<T>{}-泛型方法:public<T>voidmethod(Tt){}-泛型接口:interfaceInter<T>{}4.通配符:?代表任意类型-?extendsE:上限,E及子类-?superE:下限,E及父类【教学要点】-演示不用泛型需要强转-泛型只在编译期有效,运行期擦除8.7Collections工具类【教学内容】1.Collections:集合工具类,全静态方法2.常用方法:-sort(List):排序-reverse(List):反转-shuffle(List):随机打乱-max()、min():最值-binarySearch():二分查找-copy():复制【教学要点】-对比Arrays工具类(数组)-Collections操作集合四、教学建议1.哈希表原理一定要画图,一步步演示2.每种集合都要代码演示增删改查遍历3.对比各集合特点,教学生如何选择4.泛型从不用泛型的问题引入,理解好处5.课后练习:学生管理系统(用集合存储学生)五、常见问题与解决方案1.HashSet自定义对象不去重->重写hashCode和equals2.遍历集合修改报并发修改异常->用迭代器remove或fori3.HashMap取不到值->key对象要重写hashCode和equals4.不用泛型强转报错->加上泛型5.TreeSet元素不能排序->实现Comparable或传Comparator六、课时安排-理论讲解:6课时-实验操作:4课时-习题讲解:1课时-合计:11课时第9章常用类库教案一、教学目标1.掌握String类的特点与常用方法2.理解String不可变性原理3.掌握StringBuilder、StringBuffer的使用4.掌握8种基本类型对应的包装类5.掌握Math、Random、System类常用方法6.掌握Date、SimpleDateFormat日期时间处理7.掌握Arrays工具类的常用方法8.了解正则表达式的基本使用9.掌握自动装箱与自动拆箱二、教学重点与难点教学重点:-String类常用方法-StringBuilder字符串拼接-包装类与自动装箱拆箱-SimpleDateFormat日期格式化-Arrays工具类使用教学难点:-String不可变性与常量池-String、StringBuilder、StringBuffer区别-正则表达式语法-日期时间API版本差异三、教学内容9.1Object类【教学内容】1.Object是所有类的根类,所有类直接或间接继承2.

温馨提示

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

评论

0/150

提交评论