一名java培训生的学习笔记(基础部分2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十三章2007年6月17日星期日授课教师:老刘学生:王洪峰第一节HashMap类常见的方法及其用法publicclassTest{publicstaticvoidmain(String[]args){//创建5个Bean的对象b1-b5并对它们进行初始化Beanb1=newBean();b1.setAge(23);b1.setName(Bob);Beanb2=newBean();b2.setAge(23);b2.setName(Bob);Beanb3=newBean();Beanb4=newBean();b4.setAge(30);b4.setName(Jack);Beanb5=newBean();b5.setAge(29);b5.setName(wang);HashMaph=newHashMap();//创建HashMap类型对象h;//并调用put方法,将它们取个key名(外号),加入到Map中h.put(1,b1);h.put(2,b2);h.put(3,b3);h.put(4,b4);h.put(5,b5);h.remove(3);//调用remove()方法,将key值为3的元素移除HashMapSystem.out.println(h.size());//输出Map中的元素数Beantemp=(Bean)h.get(5);//将key值为5的元素取出来,并恢复其Bean身份,并其引用返回给tempSystem.out.println(temp.getAge());System.out.println(temp.getName());//输出key值为5的属性值}}第二节equals方法和hashCode方法的重写在处理两个对象之间关系时,有时会需要判断两个对象是否相等,如果他们的引用指向的是同一个对象,那么它们是相等的。如Object中的equals方法。如果它们指向的是同一类型的不同对象,但是他们的属性值是相等的,也就是说它们的内容是相等的,那么我们就需要重写equals方法,例如:String中的equals方法就是Object中的equals方法的重写。如果我们自己定义一个类,需要将自己写的类型的两个对象equals。那么我们就需要在该类中重写Object中的equals方法。重写完equals方法后还需要重写hashCode方法。因为当我们用Hash容器(如HashMap、HashSet)装载这些对象时,例如,将一个对象用add方法加入Set时,会产生一个HashCode,当我们又创建一个同类型内容相同的对象时,又变成另外一个HashCode了,它们在容器中的HashCode是随机的生成的,那么你就无法取得该对象了。如果我们要判断容器中是否装进了某种类型的对象,那么就需要重写hashCode方法,因为equals方法返回true的对象,它们的hashCode是相同的,重写hashCode方法就是让计算机在同一HashCode中寻找,否则计算机出于Hash容器的高效性考虑,不会去在已经存放该对象的hashCode中寻找,当然也就找不到了。重写equals方法和hashCodepublicclassMoney{//创建名叫Money这个类publicintvalue=0;//定义int型数据成员value,并初始化为0。publicMoney(){//创建无参数的构造方法}publicMoney(inti){//带有参数的构造方法value=i;}publicbooleanequals(Objectobj){//重写时需要注意重写的方法定义的要求if(obj==null){//判断形参的是否为空。如果是,返回falsereturnfalse;}if(this==obj){//判断形参对象与调用该方法的当前对象是否指向同一对象,如果是返回true.returntrue;}if(!(objinstanceofMoney)){//判断形参对象是否是Money的实例,如果不是,返回false.returnfalse;}Moneymo=(Money)obj;//将形参引用恢复成该对象的身份。if(mo.value!=this.value){//如果他们的内容不相等,返回falsereturnfalse;}returnture;如果都不是上面的情况返回true}publicinthashcode(){//重写hashcode方法,使它们的hashcode保持一致returnvalue;}我们在eclipse中测试一下:如果我们不重写hashCode方法。那么输出的将会是flase如果我们将每个对象都存放在同一hashCode中,那样查找的效率就会很低,但是我们还可以利用String中的hashCode的算法,去重新写hashCode方法。publicinthashCode(){Stringstr=String.valueOf(value);//将整型的value转化为String型的strreturnstr.hashCode();//用String中的hashCode的算法,返回hashCode}第十四章2007年6月18日星期一授课教师:老刘学生:王洪峰第一节如何创建一个文件对象有三种方式:1、Filemyfile=newFile(“d:/java/a.txt”);2、Filemyfile1=newFile(“d:/java”,a.txt”);3、Filemyfile2=newFile(“myfile1”,b.txt”);File类中常见的方法举例说明:importjava.io.File;importjava.io.IOException;//导入java.io包中的File和IOException两个类publicclassFileName{publicstaticvoidmain(String[]args){Filef1=newFile(d:/java111);//创建一个文件对象f1f1.mkdir();//创建该文件对象的目录Filef=newFile(d:/whjhg.txt);//创建一个文件对象fFileff=newFile(f1,);//创建一个文件对象ff,利用File中的构造方法,将其目录设置为f1所指向的路径//将文件名设置为。try{//处理创建文件时可能出现的异常//如果两个文件不存在则创建这2个文件ff.createNewFile();f.createNewFile();}catch(IOExceptione){//捕获异常e.printStackTrace();}System.out.println(ff.canRead());//ff所指向的这个文件是否可读?System.out.println(ff.canWrite());//ff所指向的这个文件是否可写入?System.out.println(ff.exists());//ff所指向的这个文件是否存在?System.out.println(ff.getPath());//输出ff对象的路径名System.out.println(ff.isHidden());//ff所指向的文件是否为隐藏文件?System.out.println(ff.isFile());//ff这个对象是一个文件吗?System.out.println(f1.mkdir());//f1这个对象路径创建成功了吗?System.out.println(ff.isDirectory());//ff这个对象是目录吗?System.out.println(ff.lastModified());//ff所指向的这个文件的最后修改时间System.out.println(ff.length());//ff所指向的这个文件的大小是多少System.out.println(ff.delete());//删除ff所指向的文件是否成功System.out.println(f.renameTo(f1));//是否成功的将f所指向的文件重命名为f1System.out.println(f.toString());//以字符串的形式将f对象返回}}在eclipse中测试一下结果:第二节怎么样将一个创建好的文件写入一些内容importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.PrintStream;//导入java.io包中的FileOutputStream、IOException、PrintStreampublicclassOutput{//创建名叫Output的类publicvoidwrite(Stringfilename){//创建一个带有参数的无返回值的方法write//目的是将形参中所代表的路径名文件写入一些内容FileOutputStreamfs=null;PrintStreamps=null;//分别创建两个FileOutputStream、PrintStream对象fs和ps。//将它们初始化为nulltry{//处理在写入文件时可能出现的异常fs=newFileOutputStream(filename);//将fs的引用指向用该方法形参作为构造方法参数的FileOutputStream对象ps=newPrintStream(fs);//将ps的引用指向用fs作为构造方法参数的PrintStream对象ps.println(1234567890123);//调用ps对象中的println方法,将字符串1234567890123写入到文件中System.out.println(文件写入成功);//如果没有出现异常,输出文件写入成功。}catch(Exceptione){//捕获异常e.printStackTrace();}finally{//无论是否写入成功,都应该将fs和ps所指向的文件关闭try{if(ps!=null)ps.close();}catch(Exceptione1){e1.printStackTrace();}try{if(fs!=null)fs.close();}catch(IOExceptione1){e1.printStackTrace();}}}}在eclipse中测试一下第三节怎么样读取一个文件的内容importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;//导入java.io包中的File、FileInputStream、IOExceptionpublicclassIn{//创建名叫In的类publicStringfun(Stringa){//创建带有参数的,返回值类型为String的方法fun//其中形参a是字符串形式的文件路径//该方法返回的是形参路径所指向的文件内容Fileff=newFile(a);//创建用形参作为构造方法参数的File类型的对象ffFileInputStreamfs=null;//创建FileInputStream对象fs,并初始化为nullbyte[]bb=newbyte[2];//创建byte型的数组bb,并指定长度为2,指定了每次读取的字符数Stringcon=;//创建一个String类型的变量con,用来储存读取文件的内容intn=0;//定义一个局部变量。初始化为0try{//处理在读取文件中可能存在的异常fs=newFileInputStream(ff);//将fs的引用指向用该方法形参作为构造方法参数的FileInputStream对象while(n!=-1){//以是否读到文件尾为判断条件,进行while循环if(n!=0){//如果n不等于0,将读取bb数组中的n个字符//并将其内容放入到temp临时字符串中Stringtemp=newString(bb,0,n);//将内容

1 / 74
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功