教案Java语言程序设计教案56学时第8章.docx
- 文档编号:1659156
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:44
- 大小:37.30KB
教案Java语言程序设计教案56学时第8章.docx
《教案Java语言程序设计教案56学时第8章.docx》由会员分享,可在线阅读,更多相关《教案Java语言程序设计教案56学时第8章.docx(44页珍藏版)》请在冰点文库上搜索。
教案Java语言程序设计教案56学时第8章
授课内容
学时分配
教学方法与手段
进度计划
(周次)
课堂讲授(学时)
上机实践(学时)
Java语言入门
标识符、关键字和数据类型
运算符、表达式和语句
6
4
2
1~2
类与对象
14
10
4
2~5
子类与继承
6
4
2
5-7
接口与实现
4
2
2
7-8
内部类与异常类
2
2
0
8
常用实用类
6
4
2
9-10
组件及事件处理
6
4
2
10-11
输入、输出流
2
2
0
12
JDBC与MySQL数据库
4
2
2
12-13
Java多线程机制
2
2
0
13
Java网络的基本知识
2
2
0
14
总结
2
2
0
14
总学时
各章教学实施计划
章节题目第8章常用实用类
8.1节-8.3节
学时
2
教学目的、要求(分了解、理解、掌握三个层次):
掌握String类、StringTokenizer类、Scanner类的常用方法。
教学内容(包括基本内容、重点、难点):
基本内容:
◆String类
◆StringTokenizer类
◆Scanner类
重点:
掌握String类,StringTokenizer类、Scannner类的使用。
难点:
StringTokenizer类、Scannner。
讨论、思考题、作业:
习题82
(1),(3),(4)3
(1)-(5)
预习第8章8.4-8.12节
参考书目(含参考书、文献等)具体内容:
参考书对应章节
课堂教学实施计划
第13课
教学过程设计:
复习分钟;授新课95分钟
讨论5分钟;其它分钟
授课类型(请打√):
理论课√讨论课□实验课□习题课□其它□
教学方式(请打√):
讲授√讨论□示教□指导□其它□
教学手段(请打√):
多媒体模型□实物□挂图□音像□其它√
主要内容
基本内容:
◆String类
◆StringTokenizer类
◆Scanner类
重点:
掌握String类,StringTokenizer类、Scannner类的使用。
难点:
StringTokenizer类、Scannner。
第8章常用实用类
§8.1String类
Java专门提供了用来处理字符序列的String类。
String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用String类。
需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。
8.1.1构造String对象
String对象,习惯地被翻译为字符串对象。
1.常量对象
2.String对象
3.引用String常量
8.1.2字符串的并置
String对象可以用"+"进行并置运算,即首位相接得到一个新的String对象。
例子1
Example8_1.java
publicclassExample8_1{
publicstaticvoidmain(Stringargs[]){
Stringhello="你好";
StringtestOne="你"+"好";//【代码1】
System.out.println(hello==testOne);//输出结果是true
System.out.println("你好"==testOne);//输出结果是true
System.out.println("你好"==hello);//输出结果是true
Stringyou="你";
Stringhi="好";
StringtestTwo=you+hi;//【代码2】
System.out.println(hello==testTwo);//输出结果是false
StringtestThree=you+hi;
System.out.println(testTwo==testThree);//输出结果是false
}
}
8.1.3String类的常用方法
1.publicintlength()
2.publicbooleanequals(Strings)
下面的例子2说明了equals的用法。
例子2
Example8_2.java
publicclassExample8_2{
publicstaticvoidmain(Stringargs[]){
Strings1,s2;
s1=newString("天道酬勤");
s2=newString("天道酬勤");
System.out.println(s1.equals(s2));//输出结果是:
true
System.out.println(s1==s2);//输出结果是:
false
Strings3,s4;
s3="wearestudents";
s4=newString("wearestudents");
System.out.println(s3.equals(s4));//输出结果是:
true
System.out.println(s3==s4);//输出结果是:
false
Strings5,s6;
s5="勇者无敌";
s6="勇者无敌";
System.out.println(s5.equals(s6));//输出结果是:
true
System.out.println(s5==s6);//输出结果是:
true
}
}
3.publicbooleanstartsWith(Strings)、publicbooleanendsWith(Strings)方法
4.publicintcompareTo(Strings)方法
按字典序比较两个String对象还可以使用publicintcompareToIgnoreCase(Strings)方法,该方法忽略大小写。
下面的例子3中使用java.util包中的Arrays调用sort方法和自己编写SortString类中的sort方法将一个String数组按字典序排列。
例子3
SortString.java
publicclassSortString{
publicstaticvoidsort(Stringa[]){
intcount=0;
for(inti=0;i for(intj=i+1;j if(a[j].compareTo(a[i])<0){ Stringtemp=a[i]; a[i]=a[j]; a[j]=temp; } } } } } Example8_3.java importjava.util.*; publicclassExample8_3{ publicstaticvoidmain(Stringargs[]){ String[]a={"melon","apple","pear","banana"}; String[]b={"西瓜","苹果","梨","香蕉"}; System.out.println("使用SortString类的方法按字典序排列数组a: "); SortString.sort(a); for(inti=0;i System.out.print(""+a[i]); } System.out.println(""); System.out.println("使用类库中的Arrays类,按字典序排列数组b: "); Arrays.sort(b); for(inti=0;i System.out.print(""+b[i]); } } } 5.publicbooleancontains(Strings) 6.publicintindexOf(Strings)和publicintlastIndexOf(Strings) 7.publicStringsubstring(intstartpoint) 8.publicStringtrim() 8.1.4字符串与基本数据的相互转化 java.lang包中的Integer类调用其类方法publicstaticintparseInt(Strings)可以将由“数字”字符组成的字符序列,如"876",转化为int型数据,例如: intx; Strings="876"; x=Integer.parseInt(s); 例子4求若干个数之和,若干个数从键盘输入。 例子4 Example8_4.java publicclassExample8_4{ publicstaticvoidmain(Stringargs[]){ doublesum=0,item=0; booleancomputable=true; for(Strings: args){ try{item=Double.parseDouble(s); sum=sum+item; } catch(NumberFormatExceptione){ System.out.println("您输入了非数字字符: "+e); computable=false; } } if(computable) System.out.println("sum="+sum); } } 8.1.5对象的字符串表示 下面例子5中的TV类重写了toString()方法,并使用super调用隐藏的toString()方法。 例子5 TV.java publicclassTV{ doubleprice; publicvoidsetPrice(doublem){ price=m; } publicStringtoString(){ StringoldStr=super.toString(); returnoldStr+"\n这是电视机,价格是: "+price; } } Example8_5.java publicclassExample8_5{ publicstaticvoidmain(Stringargs[]){ Datedate=newDate(); System.out.println(date.toString()); TVtv=newTV(); tv.setPrice(5897.98); System.out.println(tv.toString()); } } 8.1.6字符串与字符、字节数组 1.字符串与字符数组 例子6具体地说明了getChars()和toCharArray()方法的使用。 例子6 Example8_6.java publicclassExample8_6{ publicstaticvoidmain(Stringargs[]){ char[]a,c; Strings="1945年8月15日是抗战胜利日"; a=newchar[4]; s.getChars(11,15,a,0);//数组a的单元依次放的字符是'抗','战',胜','利'。 System.out.println(a); c="十一长假期间,学校都放假了".toCharArray(); for(inti=0;i System.out.print(c[i]); } } 2.字符串与字节数组 在下面的例子7中,假设机器的默认编码是GB2312。 String常量: "Java你好",调用getBytes()返回一个字节数组d,其长度为8,该字节数组的d[0]、d[1]、d[2]和d[3]单元分别是字符J、a、v和a的编码,第d[4]和d[5]单元存放的是字符'你'的编码(GB2312编码中,一个汉字占2个字节),第d[6]和d[7]单元存放的是字符'好'的编码。 例子7 Example8_7.java publicclassExample8_7{ publicstaticvoidmain(Stringargs[]){ byted[]="Java你好".getBytes(); System.out.println("数组d的长度是: "+d.length); Strings=newString(d,6,2);//输出: 好 System.out.println(s); s=newString(d,0,6); System.out.println(s);//输出: Java你 } } 3.字符串的加密算法 例子8 EncryptAndDecrypt.java publicclassEncryptAndDecrypt{ Stringencrypt(StringsourceString,Stringpassword){//加密算法 char[]p=password.toCharArray(); intn=p.length; char[]c=sourceString.toCharArray(); intm=c.length; for(intk=0;k intmima=c[k]+p[k%n];//加密 c[k]=(char)mima; } returnnewString(c);//返回密文 } Stringdecrypt(StringsourceString,Stringpassword){//解密算法 char[]p=password.toCharArray(); intn=p.length; char[]c=sourceString.toCharArray(); intm=c.length; for(intk=0;k intmima=c[k]-p[k%n];//解密 c[k]=(char)mima; } returnnewString(c);//返回明文 } } Example8_8.java importjava.util.Scanner; publicclassExample8_8{ publicstaticvoidmain(Stringargs[]){ StringsourceString="今晚十点进攻"; EncryptAndDecryptperson=newEncryptAndDecrypt(); System.out.println("输入密码加密: "+sourceString); Scannerscanner=newScanner(System.in); Stringpassword=scanner.nextLine(); Stringsecret=person.encrypt(sourceString,password); System.out.println("密文: "+secret); System.out.println("输入解密密码"); password=scanner.nextLine(); Stringsource=person.decrypt(secret,password); System.out.println("明文: "+source); } } 8.1.7正则表达式及字符串的替换与分解 1.正则表达式 正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义字符,这些特殊字符称做正则表达式中的元字符。 表8.1列出了常用的元字符及其意义。 注: 有关正则表达式的细节可查阅java.util.regex包中的Pattern类。 例子9程序判断用户从键盘输入的字符序列是由英文字母,数字或下划线所组成。 例子9 Example8_9.java importjava.util.Scanner; publicclassExample8_9{ publicstaticvoidmain(Stringargs[]){ Stringregex="[a-zA-Z|0-9|_]+"; Scannerscanner=newScanner(System.in); Stringstr=scanner.nextLine(); if(str.matches(regex)){ System.out.println(str+"是英文字母,数字或下划线构成"); } else{ System.out.println(str+"中有非法字符"); } } } 2.字符串的替换 String对象调用publicStringreplaceAll(Stringregex,Stringreplacement)方法返回一个新的String对象,这个新的String对象的字符序列是把当前String对象的字符序列中所有和参数regex匹配的子字符序列,用参数replacement的字符序列替换后得到字符序列。 在下面的例子10中使用了replaceAll()方法。 例子10 Example8_10.java publicclassExample8_10{ publicstaticvoidmain(Stringargs[]){ Stringstr="欢迎大家访问了解、参观公司"; Stringregex="(http: //|www)\56? \\w+\56{1}\\w+\56{1}\\p{Alpha}+"; System.out.printf("替换\n\"%s\"\n中的网站链接信息后得到的字符串: \n",str); str=str.replaceAll(regex,"******"); System.out.println(str); Stringmoney="89,235,678¥"; System.out.print(money+"转化成数字: "); Strings=money.replaceAll("[,\\p{Sc}]","");//"\\p{Sc}"可匹配任何 货币符号 longnumber=Long.parseLong(s); System.out.println(number); } } 3.字符序列的分解 String类提供了一个实用的方法publicString[]split(Stringregex),String对象调用该方法时,使用参数指定的正则表达式regex作为分隔标记分解出当前String对象的字符序列中的单词,并将分解出的单词存放在String数组中。 下面的例子11中,用户从键盘输入一行文本,程序输出其中的单词。 用户从键盘输入whoareyou(Caven? )观察运行效果。 例子11 Example8_11.java importjava.util.Scanner; publicclassExample8_11{ publicstaticvoidmain(Stringargs[]){ System.out.println("一行文本: "); Scannerreader=newScanner(System.in); Stringstr=reader.nextLine(); //regex匹配由空格、数字和! "#$%&'()*+,-./: ;<=>? @[\]^_`{|}~组成的字符序列 Stringregex="[\\s\\d\\p{Punct}]+"; Stringwords[]=str.split(regex); for(inti=0;i intm=i+1; System.out.println("单词"+m+": "+words[i]); } } } 8.2StringTokenizer类 当分析一个String对象的字符序列并将字符序列分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizer类,该类有两个常用的构造方法。 ∙StringTokenizer(Strings): ∙StringTokenizer(Strings,Stringdelim): 例子12计算购物小票的中的商品价格的和。 程序关心是购物小票中的数字,因此需要分解出这些数字,以便单独处理,这样就需要把非数字的字符序列替换成统一的字符,以便使用分隔标记分解出数字,例如,对于"12#25#39.87",如果用字符#做分隔标记,就很容易分解出数字单词。 在例子12的PriceToken类中,把购物小票中非数字的字符序列都替换成#,然后再分解出数字单词(价格),并计算出这些数字的和。 例子12 Example8_12.java importjava.util.*; publicclassExample8_12{ publicstaticvoidmain(Stringargs[]){ StringshoppingReceipt="牛奶: 8.5圆,香蕉3.6圆,酱油: 2.8圆"; PriceTokenlookPriceMess=newPriceToken(); System.out.println(shoppingReceipt); doublesum=lookPriceMess.getPriceSum(shoppingReceipt); System.out.printf("购物总价格%-7.2f",sum); intamount=lookPriceMess.getGoodsAmount(shoppingReceipt); doubleaver=lookPriceMess.getAverPrice(shoppingReceipt); System
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教案 Java 语言程序设计 56 学时