资源简介 课 堂 教 学 计 划 表课程名称 Java程序设计 教师姓名 专业班级授课时间 授课地点 学时数 8授课题目 § 5 包、数组和字符串教学目标及要求 知识目标 Java包的概念、作用;关键字import和package;Java中的常用包;一维数组、二维数组的声明、创建和初始化方式;String类;StrnigBuffer类;技能目标 掌握包的创建方式;掌握包的导入方式;会使用Java API帮助文档查阅资料;可以熟练使用一维和二维数组;能在程序中熟练使用String类;能在程序中熟练使用StringBuffer类;能熟练使用常见API类解决实际编程问题;教学重点 包的创建和使用;一维和二维数组的应用;教学难点 具体程序中包的嵌套应用;String和StringBuffer的区别;项目描述 项目1:学生成绩管理系统项目2:String及StringBuffer项目3:定义包和导入包教学方法 问题导引法:通过给学生提出实际编程中出现的问题来引入教学内容,使学生在主动分析、讨论和解决问题的过程中掌握所学知识;案例分析法:通过演示典型案例来讲解相关知识和技术的具体使用过程,使学生在具体的应用环境中加深对概念的理解;任务驱动法:通过完成项目中的各个任务逐步增强实战技能;教学过程设计 新课导入与项目展示首先通过提问、讨论等互动的形式引入课程新知识;然后通过演示本章项目来激发学生的学习兴趣,增强学生学习的积极性、主动性;项目任务分解带领学生分析本章项目并对项目进行任务分解,各项目分解任务如下:项目1:学生成绩管理系统任务1:学生成绩计算任务2:实现学生成绩管理系统项目2:String及StringBuffer任务1:字符串连接操作项目3:定义包和导入包任务1:多个类放入同一包中任务分析根据项目及任务的描述和要求,对项目的各个任务进行分析,然后总结出完成该任务所需要的知识、技能和主要操作步骤;相关知识点针对各个任务分析阶段得到的知识和技能,并结合本章知识和技能目标对相关知识点进行详细讲解和说明;任务实施该阶段以完成各个任务为目的,教师利用相关知识和技能以演示的方式为学生详细讲解每个任务的完整实现过程;同时,该阶段要求学生进行跟随练习,以加深对知识和技能的理解和掌握;技能拓展在保证学生掌握了各个任务所涉及的基本知识和技能的基础上,再通过介绍一定的附加知识并辅导学生完成指定的“技能拓展任务”,最终使学生对所学知识达到举一反三,融会贯通的学习目的;指导与评价对学生的任务实施过程进行指导,并对其中出现的问题进行总结,给出评价;课后作业 完成课后相关习题;课后分析 主要问题:线程状态的控制;教 案 正 文新课导入与项目展示讨论:大家平时是如何存放和管理自己电脑中的各种文件资源呢?(是不是根据文件的类型利用文件夹进行组织和管理呢?)思考:当一个应用程序中包含多个类文件时,是否也可以采用这种管理方式呢?运行各个源程序,为学生演示本章项目各个任务的实现效果。运行结果如下:项目任务分解本章项目可以划分为以下主要任务:项目1:学生成绩管理系统任务1:学生成绩计算任务2:实现学生成绩管理系统项目2:String及StringBuffer任务1:字符串连接操作项目3:定义包和导入包任务1:多个类放入同一包中任务1-1:学生成绩计算任务分析定义长度为5的数组,给数组元素赋值,通过循环完成累加求和,输出总分,测试运行,计算出平均分,求出高于平均分的成绩信息并打印。相关知识点一维数组的声明声明一维数组有以下两种格式:格式1:数组元素类型 数组名[];格式2:数组元素类型[]数组名;例如:int a[];float b[];一维数组的创建创建数组则是为数组元素分配内存单元,形成一个数组对象,通过new关键字创建。步骤为:数组元素类型 数组名字[];数组名字=new 数组元素类型 [数组元素的个数];将声明与创建两步合并为一步来完成数组创建格式为:数组元素类型 数组名字[]=new 数组元素的类型[数组元素的个数];如:int array[] = new int[10];// 创建一个长度为10的int型数组array一维数组的使用及初始化创建好一维数组之后,引用一维数组元素格式 如下:数组名[下标]如:int a[]=new int[4];a[0]=78;a[1]=98;a[2]=87;a[3]=9;【实例5-2:ArrayTest.java】给定一个数组{5,1,6,4,2,8,9},获取数组中的最大值,以及最小值。【实例5-3:SortArray_01.java】冒泡排序法【实例5-6:SearchGems.java】百宝箱中装有各种各样的珠宝,现有一价值连城的宝可能藏在这个百宝箱中,请寻出这种宝石(宝石的颗数或个数不一定是一颗)。(程序代码详见教材)任务实施代码实现【程序文件:S.java】(程序代码详见教材)技能拓展在使用new运算符创建数组后,系统会给数组的每个元素赋默认值,对于整形数据,数组元素的默认值为0,对于浮点型数据,数组元素的默认值为0.0,对于布尔型数据,数组元素的默认值为false,对于字符型数据,数组元素的默认值为’\u0000’,而对于所有的对象类型(包括字符串类型)数据,数组元素的默认值为null。任务1-2:实现学生成绩管理系统任务分析存储学生的名字用字符串数组name表示,数据如下:{"李明","王凡","陈欢","李琳","史光"};存储学生各科成绩使用二维整数数组grade,数据如下:{{28,70,58,78,76,88},{89,76,56,90,78,65},{50,80,79,67,65,93},{67,89,68,80,70,75},{80,76,86,69,87,92}};相关知识点二维数组的声明及使用二维数组与一维数组类似。二维数组初始化步骤如下:第一步:数组元素类型 数组名[][];第二步:数组名=new 数组元素的类型[行下标][列下标];第三步:数组名 [行下标][列下标]=初值;二维数组的简化定义格式如下:数组元素类型 数组名字[][]={{值1,值2,…值m},{值1,值2,…值n }…,{ 值1,值2,…值p }};【实例5-8:TwoArray_02.java】矩阵转置【实例5-9:TwoArray_10.java】快递公司为收取快递时候的路线及重量进行收费,根据不同的路程和重量进行不同的收费,打印快递报价单的明细表。(程序代码详见教材)任务实施代码实现【程序文件:ArraySortComparehen.java】(程序代码详见教材)技能拓展在创建二维数组时至少要为第一维分配空间,即不能以如下方式创建:数组名=new 数据类型[][];任务2-1:字符串连接操作任务分析在程序中使用append()方法可以进行字符串的连接,而且此方法返回了一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append()方法。相关知识点字符串常量与整型等基本数据类型的数据有常量和变量之分一样,字符串也分为常量与变量。字符串常量是指其值保持不变的量,是位于一对双引号之间的字符序列,如“hello”。字符串变量字符串变量的声明和初始化:通过String类实现,格式如下:String 字符串变量;字符串变量=new String();也可以:String 字符串变量=new String();字符串赋值:声明并初始化字符串变量之后,便可以为其赋值。即可以为其赋一个字符串常量,也可以将一个字符串变量或表达式的值赋给字符串变量。String s1=“hello”;String s1=new String(“hello”);String类常见方法length()功能:返回字符串的长度,返回值的数据类型为int。例如:String s=“计算机工程系”;System.out.println(s.length());//打印长度为12char charAt(int index)功能:获取指定位置的字符。例如:String s=”china”;System.out.println(s.charAt(0));//输出字符cindexOf(String str)功能:返回第一次出现的指定子字符串在此字符串中的索引。例如:String s=“中国商人”;System.out.println(“商人”);//输出值为2subString(int index1,int index2)功能:返回在此字符串中,从第index1个位置开始,到第index2-1个位置结束的子字符串,返回值的数据类型为String。例如:String s=“student”;s.subString(3,6);//返回“den”equal(Object obj)功能:比较字符串与指定的对象,当且仅当参数不为null,且与此对象相同的字符序列的String对象时,结果才为true。例如:String s1=“中华人民共和国”;String s2=“常用工具软件”;System.out.println(s1.equals(s2));//falsecompareTo(String str)功能:将此字符串与Str表示的字符串进行大小比较,返回值为int型。如果大,返回正值;如果小,返回负值;如果两者相等,返回0。实际上,返回的绝对值等于两个字符串中第一对不相等字符的unicode的值。split(String regex)功能:按照给定的字符串拆分此字符串例如:String s=“山西省 太原市 小店区”;String data[]=new String[3];data s.split(“ ”);System.out.println(data[0]);//山西省System.out.println(data[1]);//太原市System.out.println(data[2]);//小店区replace(char oldChar,char newChar)功能:返回一个新的字符串,此新字符串通过用newChar替换此字符串中出现的所有oldChar得到例如:String s=“山西省职教委员会”;s.replace(“山”, “广”);此时值为“广西省职教委员会”【实例5-11:StringDemo02.java】创建字符串对象(程序代码详见教材)StringBuffer类StringBuffer类和String类一样,也可用于代表字符串,但StringBuffer的内部实现方式和String类不同,因此,StringBuffer类在进行字符串处理时不生成新的对象,在内存使用上要优先于String类。在实际应用中,如果需要经常对一个字符串进行修改、插入、删除等操作,则使用StringBuffer类更适合。但是,对于StringBuffer对象的每次修改都会改变对象自身,这是和String类最大的区别。StringBuffer类位于java.lang基础包中,使用StringBuffer类不需要特殊的导入语句。StringBuffer类的常用方法append(String str)功能:用于将指字的字符串追加到此字符序列。例如:String s1=“abc”;StringBuffer s=new StringBuffer(“def”);s.append(s1);System.out.println(s);//defabcinsert(int offset,String str)功能:用于将字符串插入字符序列中。例如:String s=“java教程”;s.insert(4,“程序设计”);//java程序设计教程toString()功能:用于返回此字符序列中数据的字符串表示。例如:StringBuffer s2=new StringBuffer(s);//String转换为StringBufferString s1=s2.toString();//StringBuffer转换为Stringreplace(int start,String str)功能:用于将字符串中的从start开始到end-1结束的字符串替换为子字符串str。例如:StringBuffer s=”abcdefg”;s.replace(0,2,”ha”);System.out.println(s);//hacdefgsubstring(int start,int end)功能:返回一个新的String,String包含此字符序列当前所包含的字符子序列。例如:StringBuffer s=new StringBuffer(“helloworld”);System.out.println(s.subString(3,5).toString());//lodelete(int start,int end)功能:用于移除此字符序列的子字符串。例如:StringBuffer s=new StringBuffer(“thisis”);s.delete(0,4);System.out.println(s);//is任务实施代码实现【程序文件:StringBufferDemo01.java】(程序代码详见教材)技能拓展【技能拓展任务】编写程序将从键盘输入的文本中的子字符串“you”替换为“your”,并将所有出现的子字符串“are”删除;任务3-1:多个类放入同一包中任务分析定义 X1类,将此类放入bag包中;定义X2类,将此类放入bag包中;相关知识点import(导入包)用于选择哪个包下的Java类;格式:import 包名.类名/接口名;或import 包名.*;//将包中所有类和接口都导入到当前文件package(定义包)格式:package 包名1[.包名2.[包名3…]];注意:package关键在一定要在整个类定义的第一行;包名之间一定要用“.”隔开,例如:com.javait.org,则在文件系统中需要建立三个目录;在定义package的时候,包名全部要小写;不是说程序定义package关键字,则系统就会自动建好每一个目录。这种说法是不正确的。【实例:TestPackage.java】import和package的应用(程序代码详见教材)任务实施代码实现【程序文件:X1.java】【程序文件:X2.java】【程序文件:Pack.java】(程序代码详见教材)技能拓展Java修饰符:public 修饰符:表示公有,可以修饰类、属性和方法。如果定义变量或方法时,使用了public修饰符,则可以被包内其他类、对象以及包外的类和对象方法使用。private修饰符:只能修饰成员变量和成员方法。使用private声明的变量和方法只能由其所在的类使用,其他的类和对象不能使用,封装就是利用这一特性使属性私有化。protected修饰符:protected修饰符表示受保护,只能用于修饰成员变量和成员方法,不能修饰类。受保护的变量和方法的访问权限被限制在类本身、包内的所有类和其所在的类派生出的子类(可以在同一个包中,也可以在不同包中)范围内。default修饰符:如果一个类、方法或变量名前没有使用任何访问控制符,则该成员拥有的是默认的访问控制符。默认的访问控制成员可以被其所在包中的其他类访问,故称为包访问特性。 展开更多...... 收起↑ 资源预览