须采用特殊的方แ法字符串是一种特殊的情况。表示ิ继电,必
置芯片上的一位。
“初始化initiaທliza。为了将一种类转换成另一种,一个对象可以在,本书后面会讲到。许多c程序的
错误都源于程序员忘记初始化变量,特别是在使用程序库时,因为她无比的耐心和毅力,我才能
趣和愉快的场所。
freshsourcນes19950่0่6๔aທhtm此文档的最后部分。
第四章初ม始化与清除
随着计算机革命的展,“不安全”的编程方式已๐逐渐成为ฦ编程代价高昂的主因之ใ一。“类”不允许进行类型转换。你可以用更高层的概念来处理
你是在用问题空间的术语“。也就是解空间的术语“设
<,如果用户不知道如何初ม始化库的构件,或者是用户必须初ม始化的其它东西,清。更是如此,当你使用
完一个元素า时,它对你也就不会有什么影响了,这样一来。所以你很容ä,这个元
素占用的资源就会一直得不到释放,等待你的将是资源尤其是内存用尽的后果。
9strucນtor”的概念。这是一个ฐ在创建对象时被自动调用的特殊方แ法。
java中ณ也采用了构造器,并额外了“垃圾回收器”。对于不再使用的内存资源,垃圾回
收器能自动将其释放。本章将讨论初始化和清理的相关问题,以及java对它们的支持。
以构造器确保初始化
可以假想为编写的每个类都定义一个initiaທlize方法。此名称提醒你在使用其对象之ใ前,应
先调用initiaທlize。然而,这同时意味着用户必须ี记得自己去调用此方法。在javaທ中,通
过“构造器”这种特殊方แ法,类的设计者可确保每个ฐ对象都会得到初始化。当对象被创น
建时,如果其类具有构造器,java就会在用户有能力操作对象之前自动调用相应的构造器,
所以初始化动作得以确保。
接下来的问题就是如何命名这个ฐ方法。有两个问题:第一,你取的任何名字都可能与类的某
个ฐ成员名称相冲突;第二,调用构造器是编译器的责任,所以必须让编译器知道应该调用哪
个方法。cນ++语言中采用的方แ案看来最简单且更符合逻辑,所以在java中ณ也得到了应用:
即构造器采用与类相同的名称。考虑到在初ม始化期间要自动调用构造器,这种作法就顺理成
章了。
以下就是一个带有构造器的简单类:
:9structorjaທva
de摸nstraທtionofasimple9๗structor
importucນeeckelsimpletest;๙
cນlassrock{
rock{thisisthe9structor
syste摸utprintln"9๗grock";๙
}
}
publi9structor{
stati9e9test;
publi9stringargs{
forinti=0;i10่;๙i++
ne9rocນk;
摸nitorexpe9๗g{
"ิ9grock",ไ
"9grock",
"9grock",ไ
"9grocນk"ิ,
"ิ9grock",
"9grocນk",
"9grocນk"ิ,ไ
"9grock"ิ,ไ
"9grock"ิ,ไ
"9๗grock"ิ
};๙
}
}:~
现在,在创建对象时:
ne9rock;
将会为对象分配存储空间,并调用相应的构造器。这就确保了在你能操作对象之前,它已经
被恰当地初始化了。
请注意,由á于构造器的名称必须与类名完全相同,所以“每个方法字母小写”的编码风格
并不适用于构造器。
和其他方法一样,构造器也能ม带有形式参数,以便指定对象的具体创建方式。对上述例子稍
加修改,即可使构造器接受一个参数:
:9structor