版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一名java培训生的学习笔记
授课教师:
学生:
第一节HashMap类常见的方法及其用法
构造方法摘要
Hashlap()
构造一个具有默认初始容量(16)和默认加载因子(0.75)的空HashMap。
方法摘要
voidclear()
从此映射中移除所有映射关系。
Objectclone()
返回此HashMap实例的浅表复制:并不克隆健和值本身。
b&oleancontainsKey(Ob」ectkey)
如果此映射包含对于指定的键的映射关系,则返回true。
booleancontainsValue(Objectvalue)
如果此映射将一个或多个键映射到指定值,则返回true。
Vget(Objectkey)
返回指定键在此标识哈希映射中所映射的值,如果对于此键来说,
映射不包含任何映射关系,则返回null。
booleanisE>pty()
如果此映射不包含键强映射关系,则返回true。
Vput(Kkey,Vvalue)
■在此映射中关联指定值与指定键。
voidputAll(Map<?extendsK,?extendsV>m)
将指定映射的所有映射关系复制到此映射中,这些映射关系将替换
此映射目前针对指定映射的所有键的所有映射关系。
VreBove(Objectkey)
如果此映射中存在该键的映射关系,则将其删除。
inisize()
返回此映射中的键强映射关系数。
publicclassTest{
publicstaticvoidmain(String[]args){
//创建5个Bean的对象bl-b5并对它们进行初始化
Beanbl=newBean();
bl.setAge(23);
bl.setName("Bobn);
Beanb2=newBean();
b2.setAge(23);
b2.setName("BobH);
Beanb3=newBean();
Beanb4=newBean();
b4.setAge(30);
b4.setName("Jackn);
Beanb5=newBean();
b5.setAge(29);
b5.setName("wang");
HashMaph=newHashMapO;
〃仓犍HashM叩类型对象h;
〃并调用put方法,将它们取个key名(外号),加入到Map中
h.put(nlu,bl);
h.put(,'2,',b2);
h.put("3\b3);
h.put(n4';b4);
h.put(“5”,b5);
h.remove("3,*);
//调用remove。方法,将key值为"3"的元素移除HashMap
System.out.println(h.sizeO);
〃输出Map中的元素数
Beantemp=(Bean)h.get(u5");
〃将key值为“5"的元素取出来,并恢复其Bean身份,并其引用返回给temp
System.out.println(temp.getAgeO);
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方法与hashCode
publicclassMoney{
//创建名叫Money这个类
publicintvalue=0;
〃定义int型数据成员value,并初始化为0。
publicMoney(){
〃创建无参数的构造方法
publicMoney(inti){
〃带有参数的构造方法
value=i;
publicbooleanequals(Objectobj){
〃重写时需要注意重写的方法定义的要求
if(obj==null){
〃推断形参的是否为空。假如是,返回false
returnfalse;
)
if(this==obj){
//推断形参对象与调用该方法的当前对象是否指向同一对象,假如是返回true.
returntrue;
)
if(!(objinstanceofMoney)){
//推断形参对象是否是Money的实例,假如不是,返回false.
returnfalse;
Moneymo=(Money)obj;
〃将形参引用恢复成该对象的身份。
if(mo.value!=this.value){
〃假如他们的内容不相等,返回false
returnfalse;
)
returnture;
假如都不是上面的情况返回true
)
publicinthashcode(){
//重写hashcode方法,使它们的hashcode保持一致
returnvalue;
我们在eclipse中测试一下:
'资源一Test,java—Eclipse平台
文件9编辑©源代码⑤)重构⑴浏览⑤搜索@项目9运行®窗口⑥帮助国)
]KJ£1•,,(S,;吟隹资源
至导航器区
Test,java[JMoney,javaO
java.util.HashSet.
_」I目陶▼iaportjava.util.Set;
田端0615
+/0617classTest{
Ewh£0616
publicstaticvoidmain(String[]args){
@classes
S6srcMoneyma=newMoney(100);
jJ,|Money,javaMoneymb=nevMoney(100):
JTest,javaSetset=newHashSet():
set.add(ma);
__.classpathbooleanflag=set.contains(mb):
BprojectSystem,out.printIn(flag):
生大纲点
________土.X▼
+L导入声明
S©>Test
•Smain(String口)
任务m控制台__________________■女|反■砧|百日-一曰'
〈已终止〉Test(9)[Java应用程序]C:\j2sdkl.4.2_14\bin\javaw.exe(2007-6-1914:52:
true
可写智能插入
假如我们不重写hashCode方法。那么输出的将会是flase
假如我们将每个对象都存放在同一hashCode中,那样查找的效率就会很低,但是我们还能
够利用String中的hashCode的算法,去重新写hashCode方法。
publicinthashCode()
(
Stringstr=String.valueOf(value);
〃将整型的value转化为String型的str
returnstr.hashCode();
〃用String中的hashCode的算法,返回hashCode
)
第十四章2007年6月18日星期一
授课教师:
学生:
第一节如何创建一个文件对象
有三种方式:
1Filemyfile=newFileCtd:/java/a.txf,);
2^Filemyfilel=newFileC'd/ava”,a.txt");
3^Filemyfile2=newFile("myfilel",b.txf,);
File类中常见的方法
构造方法摘要
File(Fileparent,Stringchild)
根据parent抽象路径名和child路径名字符串创建一个新File实例。
File(Stringpathname)
通过将给定路径名字符串转换成抽象路径名来创建二个新File实例。
File(Stringparent,Stringchild)
根据park曲径名字符串和Child路径名字符串创建一个新File实例。
方法摘要
canReadO
测试应用程序是否可以读取此抽象路径名表示的文件。
卜。1。皿canTriteO
测试应用程序是否可以修改此抽象路径名表示的文件。
booleancreateNevFile()
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此
抽象路径名指定的一个新的空文件。
b&oleaaexists()
测试此抽象路径名表示的文件或目录是否存在。
FilegetAbsoluteFile()
返回抽象路径名的绝对路径名形式。
StringgetAbsolutePa~th()
返回抽象路径名的绝对路径名字符串。
——
booleanisAbsolute()
测试此抽象路径名是否为绝对路径名。
b&oleuisDirectory()
测试此抽象路径名表示的文件是否是一个目录。
booleanisFile()
测试此抽象路径名表示的文件是否是一个标准文件。
booleanisHiddenQ
测试此抽象路径名指定的文件是否是一个隙藏文件。
Ion:last・odified。
返回此抽象路径名表示的文件最后一次被修改的时间。
loaplength()
返回由此抽象路径名表示的文件的长度。
booleanakdir()
创建此抽象路径名指定的目录。
b&oleanBkdirs()
创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
\»oleurenaaeTo(Filedest)
重新命名此抽象路径名表示的文件。
Striin°rctoStrriing()
返回此抽象路径名的路径名字符串。
举例说明:
importjava.io.File;
importjava.io.IOException;
//导入java.io包中的File与lOException两个类
publicclassFileName{
publicstaticvoidmain(String[]args){
Filefl=newFile("d:/javallln);
〃创建一个文件对象fl
fl.mkdirO;
〃创建该文件对象的目录
Filef=newFile(nd:/whjhg.txtu);
〃创建一个文件对象f
〃创建一个文件对象ff,利用File中的构造方法,将其目录设置为fl所指向的路径
try(
〃处理创建文件时可能出现的特殊
〃假如两个文件不存在则创建这2个文件
ff.createNewFile();
f.createNewFile();
)catch(lOExceptione){
〃捕获特殊
e.printStackTrace();
System.out.println(ff.canRead());
〃行所指向的这个文件是否可读?
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.isFileO);
//ff这个对象是一个文件吗?
System.out.println(f1.mkdir());
//fl这个对象路径创建成功了吗?
System.out.println(ff.isDirectoryO);
//ff这个对象是目录吗?
System.out.println(ff.lastModified());
//ff所指向的这个文件的最后修改时间
System.out.println(ff.length());
〃ff所指向的这个文件的大小是多少
System.out.println(ff.delete());
〃删除肝所指向的文件是否成功
System.out.println(f.renameTo(fl));
〃是否成功的将f所指向的文件重命名为fl
System.out.println(f.toStringO);
〃以字符串的形式将f对象返回
在eclipse中测试一下结果:
资源一FileNa>e.java—Eclipse平台[L~|[,p'|[X~|
文件电)编辑⑥源代码⑤)重构复)浏览与搜索®项目也)运行®窗口也)帮助量)
「一势34早,|得1▼中9…回吐资源
七1导航器H0O
甲&
日&cla
sr团c
团
团FileName.java
团In.java
团Input,java
团Output.java
团TestFilel.java
fTestin.java
任务日控制台■;<凶®"o可
生大纲
K〈已终止〉FileName[Java应用程序]C:\j2sdkl.4.214\bin\javaw.exe(2007-6-1913:24:
true
true
F';导入声明true
E)G〉FileNamed:\javal1l\ww.txt
❷SmainString口)false
true
false
false
1182230652000
0
true
false
d:\whjhg.txt
可写智能插入11:28
第二节怎么样将一个创建好的文件写入一些内容
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.PrintStream;
〃导入java.io包中的FileOutputStream、lOException、PrintStream
publicclassOutput{
〃创建名叫Output的类
publicvoidwrite(Stringfilename){
〃创建一个带有参数的无返回值的方法write
〃目的是将形参中所代表的路径名文件写入一些内容
FileOutputStreamfs=null;
PrintStreamps=null;
〃分别创建两个FileOutputStreamPrintStream对象fs与ps。
〃将它们初始化为null
try(
〃处理在写入文件时可能出现的特殊
fs=newFileOutputStream(filename);
〃将fs的引用指向用该方法形参作为构造方法参数的FileOutputStream对象
ps=newPrintStream(fs);
〃将ps的引用指向用fs作为构造方法参数的Printstream对象
ps.println("1234567890123");
〃调用ps对象中的printin方法,将字符串"1234567890123"写入到文件中
System.out.println("文件写入成功”);
〃假如没有出现特殊,输出文件写入成功。
}catch(Exceptione){
〃捕获特殊
e.printStackTrace();
}finally{
〃不管是否写入成功,都应该将fs与ps所指向的文件关闭
try(
if(ps!=null)
ps.close();
}catch(Exceptionel){
e1.printStackTraceO;
)
try(
if(fs!=null)
fs.close();
}catch(lOExceptionel){
el.printStackTrace();
)
}
在eclipse中测试一下
,资源一Testlirte.java—Eclipse平台
文件9编辑堡)源代码⑤)重构建)浏览⑤搜索⑥项目9运行®窗口也)帮助®
[门:J浒,蟒]幽,存「,中吟隹资源
电导航器笈■|71Output.….|.pT|T”tWir...
--白与▼1>i*portjava.io.File;[]
3
在会06154________
000617iTestWirl
S'&classes6
’2publicstaticvoidmain(String[]args){
srL8
2IDuTest.java9
LJ一JFileName.javaFileff=nerFile(*d:/java333*):
山
‘In.java11
山ff.mkdir():
:Input,javaFilef=newFile("D:/java333","ww・txt");
JJ一
Output.java14try{
山TestFilel.javaf.createNewFile();
出
Testin.javav}catch(lOExceptione){
17
e.printStackTrace();
19}
Stringfilename=f.getAbsolutePath():
System,out.printIn(filename);
+/导入声明Outputo=ne<Output();
B-Gm匚Tes二tWirZtZeo.write(filename);
-Smain6tring[])24}
25I
任务日控制台?:■女I巫城|廿,,。可
〈已终止〉TestWirte[Java应用程序]C:\j2sdkl.4.214\bin\javaw.exe(2007-6-1913:5f
:D文:库写av入a3成33功\ww.txt
文件②编辑图)查看9收瀛④工具②帮助量)
。部•©尸糕,匚文件夹区
«w.txt—记事本
.
地忆②cJD:\java333文件电)编辑⑥格式@)查看9帮助国)
1234567890123
第三节怎么样读取一个文件的内容
importjava.io.File;
importjava.io.FilelnputStream;
importjava.io.IOException;
〃导入java.io包中的File、FilelnputStream、lOException
publicclassIn{
〃创建名叫In的类
publicStringfun(Stringa){
〃创建带有参数的,返回值类型为String的方法fun
〃其中形参a是字符串形式的文件路径
〃该方法返回的是形参路径所指向的文件内容
Fileff=newFile(a);
〃创建用形参作为构造方法参数的File类型的对象ff
FilelnputStreamfs=null;
〃创建FilelnputStream对象fs,并初始化为null
byte[]bb=newbyte[2];
//创建byte型的数组bb,并指定长度为2,指定了每次读取的字符数
Stringcon=,,u;
〃创建一个String类型的变量con,用来储存读取文件的内容
intn=0;
〃定义一个局部变量。初始化为0
try{
〃处理在读取文件中可能存在的特殊
fs=newFileInputStream(ff);
〃将fs的引用指向用该方法形参作为构造方法参数的FilelnputStream对象
while(n!=-l){
〃以是否读到文件尾为推断条件,进行while循环
if(n!=0){
//假如n不等于0,将读取bb数组中的n个字符
〃并将其内容放入到temp临时字符串中
Stringtemp=newString(bb,O,n);
〃将内容累加到con中
con+=temp;
)
n=fs.read(bb);
〃用fs对象调用read方法将读取出的字符个数赋给n
}
)catch(Exceptione){
〃捕获特殊
e.prinlStackTrace();
}finally(
〃不管是否出现特殊都应该将文件关闭
try(
//处理关闭文件时产生的特殊
fs.close();
}catch(lOExceptionel){
//捕获lOException特殊
el.printStackTrace();
)
returncon;
〃返回调用该方法所读取的文件内容
我们在eclipse中测试一下,测试码如图:
费源一TestRead.java—Eclipse平•台□0®
文件电)编辑⑥源代码⑤)重构复)浏览与搜索®项目9运行®窗口也)帮助QD
「L"势▼。R▼],]/麝▼中9…回吐资源
心导航器区'0s
1i*portjava.io.File;
2
i£DuTest.java^publicclassTestRead{
一m
FileName.java4//创建测试类TestRead
m5vpublicstaticvoidmain(String[]args){
In.jaua6〃创建main方法作为程序关口
Bj(Input,javaInaa=nevIn():
m
aOutput.java8//仓摩Input对象来调用fun方法
TestFilel.java9Filef=newFile(wD:/java333/ww.txt*);
一
Testin.java10〃创建File的对象f,f指向要读取的文件路径
h:Stringstrl=f.getAbsolutePath():
|J|TestRead.java12〃将通绝对路在返向给String类型fibstrl
|J|TestWirte.java13try处理要读取的文件不存在的异常
—.classpath14
.project15Stringstr2=aa.fun(str1);
Ls16〃调用fun方法,将其读取该文件后返回的内用放入str2中
°曰17System.out.printIn(str2):
18〃输出读取的文件内容
瓦&宜e$▼19}catch(Exceptione){
20〃捕获异常
F导入声明21e.printStackTrace();
二:TestRead22
❷SmainString口)123
24
cu
任务日控制舍二-&|笈靖I凶@•o
<已终止>TestRead[Java应用程序]C:\j2sdkl.4.2_14\bin\javaw.exe(2007-6-1914
1234567890123
可写智能插入22:10
第四节利用前两个程序中的方法拷贝一个文件
importjava.io.File;
importjava.io.FilelnputStream;
importjava.io.FileOutputStream;
importjava.io.lOException;
〃导入java.io包中的File、FilelnputStreamFileOutputStreamlOException类
publicclassCopyFile{
〃创建CopyFile类
publicvoidcopy(StringsrcName,StringdesName){
//创建copy方法,其形式参数分别为源文件与目的文件
Filesrc=newFile(srcName);
Filedes=newFile(desName);
〃分别由两个形参作为File构造方法的参数,创建两个File对象src与des
FilelnputStreamfis=null;
FileOutputStreamfos=null;
〃分别声明FilelnputStreamxFileOutputStream的对象fis与fos,并将其初始化为null
try(
//处理在文件copy的时候所产生的特殊
des.createNewFile();
〃创建形参des所指的目的文件
fis=newFilelnputStream(src);
fos=newFileOutputStream(des);
〃分别创建FilelnputStream>FileOutputStream的对象fis与fos
intn=0;
〃定义整形变量n,初始化为0
byte[]buf=newbyte[2];
〃创建byte型的数组bb,并指定长度为2,指定了每次读取的字符数
while((n=fis.read(buf))!=-1){
〃调用fis的read方法读取源文件,并将其读取的字符数量赋给n
〃定义循环条件为n!=-l(未读到文件尾)
fos.write(buf,0,n);
〃将每次读取的内容写入到目的文件中
)
)catch(Exceptione){
//捕获特殊
e.printStackTrace();
}finally{
〃为了安全起见,分别处理在文件关闭时的特殊
try(
if(fos!=null)
fos.flush();
}catch(lOExceptionel){
el.printStackTrace();
)
try(
if(fos!=null)
fos.close();
}catch(lOExceptione2){
e2.printStackTrace();
}
22)System,out.printIn(in.fun("D:/bb.txt*)):
〃将D:/bb.txt的内容输出出来|
18〃将D:,aa.txt的内容据贝给D:/bb.txt
cf.copy(*D:/aa.txt*,*D:/bb.txt*):
16〃初建CopyFile对象c工并调用其中的copy方法
CopyFilecf=ne・CopyFile();
14〃输出D:/aa.txt文件中的内容
System,out.printIn(con);
Stringcon=in.fun(rtD:/aa.txt*);
〃创建InM象in,调用fun为法,源其内容读出来赋给con
Inin=newIn();
9〃将D:/aa.txt文件写入*1234567890123”
o.write(*D:/aa.txt*);
〃钊建Output对彖o,并晌用其中的write方法
if(fis!=null)
fis.close();
}catch(lOExceptione3){
6Outputo=newOutput():
e3.printStackTrace();
System.out.println("文件copy成功");
)
5//创建main方法作为程序关口
在eclipse中测试,测试码如下图:
费源一Test,java—Eclipse平台13回因
文件电)编辑⑥源代码⑤)重构复)浏览与搜索®项目9运行®窗口也)帮助QD
「L势34与J9l▼,▼中9…回吐资源
心导航器眼\0O[J]CopyFile.javaDTest,javaOutput,java[J]In.java°o
I
BZ^publicclassTest{
CopyFile.java3〃创洋测试类上st,用来测试文件拷贝方法
团
DuTest.javapublicstaticvoidmain(String[]args){
团
FileName.java
团
In.java
团
Input,java
团
Output.java
团
Test,java
团
TestFilel.java
团
Testin.java
团
TestRead.java
团
TestWirte.java
B©>Test
♦'mainCString口)
任务日控制台■■|一城|一日▼口曰|
<已终止>Test(12)[Jan应用程序]C:\j2sdkl.4.2_14\bin\javaw.exe(2007~6~2022:1C
文件写入成功一人
12I34567890123
文件copy成功
1234567890123
可写智能插入20:28
第十五章2007年6月20日星期三
授课教师:
学生:
第一节与文件操作有关的一些程序实例
一、实现FilenameFilter接口来过滤符合某些条件的文件或者目录。
importjava.io.File;
importjava.io.FilenameFilter;
//导入java.io包中的File类与FilenameFilter接口
publicclassJavaFilterimplementsFilenameFilter{
〃创建JavaFilter类实现FilenameFilter接口
publicbooleanaccept(Filedir,Stringname)(
〃重写接口中的accept方法,以实现FilenameFilter接口
returnname.endsWith(".java");
〃返回一以".java"结尾字符串
在eclipse中测试:
二、读取properties类型文件的内容:
properties类型文件叫属性文件,其中的内容不要写中文,否则会读出乱码,它的作用
是实现程序与程序之间、程序与服务器之间的信息交换。
由于properties类型文件通常存放的是一些服务器的IP地址,或者者存放程序实现所务
必的目录或者文件,因此能够利用文件返回的字符串来使保护程序更加方便。
下面举一个读取properties类型文件的内容的程序。
我们首先在硬盘上创建一个test,properties.用记事本打开写入内容如下图
B'test,properties—记事本□0B
文件g翡辑⑪格式@)查看w)帮助Qi)
|url=
nane=tiger
其中url与name叫做标记,后面的部分叫内容
importjava.io.File;
importjava.io.FilelnputStream;
importjava.util.Properties;
//导入java.io包中的File与FilelnputStream类
//#Ajava.util中的Properties类
publicclassReadPro{
//创建ReadPro类
publicStringurl=
publicStringname=
〃定义.properties类型文件中的内容标记url与name作为数据成员,初始化它们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有关投保的常用英语表达
- 数据统计分析方法
- 湖北汽车工业学院科技学院《大数据技术基础》2023-2024学年第一学期期末试卷
- 数据处理系统简版
- 智慧旅游解决方案智慧旅游系统建设
- 小针课件教学课件
- 水管员合同范本
- 物业公司保洁人员用工协议书范本(2篇)
- 母亲与儿子房屋互换协议书
- 高速公路绿化保洁合同模板
- 宜宾市2022级(2025届)高三第一次诊断性测试(一诊)历史试卷(含答案)
- 《SMT防静电培训》课件
- 校园交通安全中小学交通安全教育主题班会课件
- 水利水电工程建设用地设计标准(征求意见稿)
- JTG∕T F30-2014 公路水泥混凝土路面施工技术细则
- 硬笔书法全册教案共20课时
- 2021年新苏教版科学六年级上册知识点整理
- 模拟真实天平(flash模拟型课件)
- 10以内加减法练习题(4套200道)
- 塔型单基重量统计表
- 真太阳时查询中国各主要城市平太阳时差对照表
评论
0/150
提交评论