PAGE5
《面向对象程序设计》教案
第19讲
教学对象
计算机科学技术专业
授课内容
7.1Object类
7.2String类
7.3StringBuffer类
7.4案例学习——字符串加密解密
课程标准
教学目标
(一)知识目标
1.掌握Object类定义的方法,以及如何覆盖常用方法
2.理解字符串的不变性,掌握String类的使用
3.解字符串的可变性,掌握StringBuilder类的使用
(二)能力目标
1.可熟练使用字符串的方法
2.掌握字符串与数组之间的转换
3.能够针对不同需求灵活应用String类和StringBuilder类
教学方法
采用讲授法、演示法、讨论法、案例教学。
学时及分配(第1学时50分钟)
课堂讲授30分钟
课堂练习20分钟
7.1Object类
7.2String类
学时及分配(第2学时50分钟)
课堂讲授20分钟
课堂练习30分钟
7.3StringBuffer类
7.4案例学习——字符串加密解密
知识点分析
重点:
Object类的常用方法
String类的常用方法
运算符重载
难点:
字符串的不变性和可变性
字符串的各种比较方法
教学过程设计
内容
方式
问题导入
Java语言本身定义了许多类,称为Java类库(JavaClassLibrary,JCL)。编写程序经常需要使用这些类。
内容要点
7.1java.lang.Object类
java.lang.Object类是Java语言中所有类的根类,定义类时若没有用extends指明继承哪个类,编译器自动加上extendsObject。Object类中共定义了9个方法,所有的类(包括数组)都继承该类中的方法。表7-1(见教材)给出了几个常用方法。
7.1.1toString()方法
toString()方法是Object类的一个重要方法,调用对象的toString()方法可以返回对象的字符串表示。该方法在Object类中的定义是返回类名加一个@符号,再加一个十六进制整数。
这些信息没有太大的用途,因此通常在类中覆盖toString()方法,使它返回一个有意义的字符串。例如,在Account类中按如下覆盖toString()方法:
@Override
publicStringtoString(){
return账号:+id+姓名:+name+余额:+balance;
}
这时,语句System.out.println(account.toString());的输出结果为:
账号:108姓名:张明月余额:5000.0
7.1.2equals()方法
equals()方法用来比较两个对象是否相等,使用格式为:
obj1.equals(obj2)
用来比较两个对象obj1和obj2是否相等,若相等则返回true,否则返回false。该方法比较的是两个对象的引用,即相当于两个对象使用“==”进行比较。
要比较两个对象的内容是否相等,就需要在Account类中覆盖equals()方法。
在Account类中可以这样覆盖equals()方法:
@Override
publicbooleanequals(Objectobj){
if(objinstanceofAccount)
returnthis.id==((Account)obj).id
.equals(((Account)obj).name)
this.balance==((Account)obj).balance;
else
returnfalse;
}
7.1.3hashCode()方法
hashCode()方法返回一个对象的哈希码(hashcode)值,它是一个整数,主要用来比较对象的大小。在Object类中hashCode()方法的实现是返回对象在计算机内部存储的十进制内存地址。
在覆盖hashCode()方法时,要保证相同对象的哈希码必须相同。可以使用不同算法生成对象的哈希码。可以使用java.util.Objects类的hash()方法直接联合类的每个实例变量的哈希码。
@Override
publicinthashCode(){
returnObjects.hash(id,name,balance);
}
Objects类的hash()方法的参数是可变参数,该方法计算每个参数的哈希码,并将它们组合起来。这个方