教案Java语言程序设计教案56学时第8章.docx

上传人:b****5 文档编号:12309014 上传时间:2023-04-18 格式:DOCX 页数:44 大小:37.30KB
下载 相关 举报
教案Java语言程序设计教案56学时第8章.docx_第1页
第1页 / 共44页
教案Java语言程序设计教案56学时第8章.docx_第2页
第2页 / 共44页
教案Java语言程序设计教案56学时第8章.docx_第3页
第3页 / 共44页
教案Java语言程序设计教案56学时第8章.docx_第4页
第4页 / 共44页
教案Java语言程序设计教案56学时第8章.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

教案Java语言程序设计教案56学时第8章.docx

《教案Java语言程序设计教案56学时第8章.docx》由会员分享,可在线阅读,更多相关《教案Java语言程序设计教案56学时第8章.docx(44页珍藏版)》请在冰豆网上搜索。

教案Java语言程序设计教案56学时第8章.docx

教案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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1