毕设英文翻译Word文件下载.docx

上传人:b****5 文档编号:19812589 上传时间:2023-01-10 格式:DOCX 页数:7 大小:44.75KB
下载 相关 举报
毕设英文翻译Word文件下载.docx_第1页
第1页 / 共7页
毕设英文翻译Word文件下载.docx_第2页
第2页 / 共7页
毕设英文翻译Word文件下载.docx_第3页
第3页 / 共7页
毕设英文翻译Word文件下载.docx_第4页
第4页 / 共7页
毕设英文翻译Word文件下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

毕设英文翻译Word文件下载.docx

《毕设英文翻译Word文件下载.docx》由会员分享,可在线阅读,更多相关《毕设英文翻译Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。

毕设英文翻译Word文件下载.docx

(1)用句柄操纵对象。

每种编程语言都有自己的数据处理方式。

有些时候,程序员必须时刻留意准备处理的是什么类型。

您曾利用一些特殊语法直接操作过对象,或处理过一些间接表示的对象吗(C或C++里的指针)?

所有这些在Java里都得到了简化,任何东西都可看作对象。

因此,我们可采用一种统一的语法,任何地方均可照搬不误。

但要注意,尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的“句柄”(Handle)。

在其他Java参考书里,还可看到有的人将其称作一个“引用”,甚至一个“指针”。

可将这一情形想象成用遥控板(句柄)操纵电视机(对象)。

只要握住这个遥控板,就相当于掌握了与电视机连接的通道。

但一旦需要“换频道”或者“关小声音”,我们实际操纵的是遥控板(句柄),再由遥控板自己操纵电视机(对象)。

如果要在房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电视机。

此外,即使没有电视机,遥控板亦可独立存在。

也就是说,只是由于拥有一个句柄,并不表示必须有一个对象同它连接。

所以如果想容纳一个词或句子,可创建一个String句柄:

Strings;

但这里创建的只是句柄,并不是对象。

若此时向s发送一条消息,就会获得一个错误(运行期)。

这是由于s实际并未与任何东西连接(即“没有电视机”)。

因此,一种更安全的做法是:

创建一个句柄时,记住无论如何都进行初始化:

Strings="

asdf"

;

然而,这里采用的是一种特殊类型:

字串可用加引号的文字初始化。

通常,必须为对象使用一种更通用的初始化类型。

(2)所有对象都必须创建。

创建句柄时,我们希望它同一个新对象连接。

通常用new关键字达到这一目的。

new的意思是:

“把我变成这些对象的一种新类型”。

所以在上面的例子中,可以说:

Strings=newString("

);

它不仅指出“将我变成一个新字串”,也通过提供一个初始字串,指出了“如何生成这个新字串”。

当然,字串(String)并非唯一的类型。

Java配套提供了数量众多的现成类型。

对我们来讲,最重要的就是记住能自行创建类型。

事实上,这应是Java程序设计的一项基本操作,是继续本书后余部分学习的基础。

程序运行时,我们最好对数据保存到什么地方做到心中有数。

特别要注意的是内存的分配。

有六个地方都可以保存数据:

寄存器。

这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:

处理器内部。

然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。

我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。

堆栈。

驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。

堆栈指针若向下移,会创建新的内存;

若向上移,则会释放那些内存。

这是一种特别快、特别有效的数据保存方式,仅次于寄存器。

创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。

这是由于它必须生成相应的代码,以便向上和向下移动指针。

这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里——特别是对象句柄,但Java对象并不放到其中。

堆。

一种常规用途的内存池(也在RAM区域),其中保存了Java对象。

和堆栈不同,“内存堆”或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。

因此,用堆保存数据时会得到更大的灵活性。

要求创建一个对象时,只需用new命令编制相关的代码即可。

执行这些代码时,会在堆里自动进行数据的保存。

当然,为达到这种灵活性,必然会付出一定的代价:

在堆里分配存储空间时会花掉更长的时间!

静态存储。

这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM里)。

程序运行期间,静态存储的数据将随时等候调用。

可用static关键字指出一个对象的特定元素是静态的。

但Java对象本身永远都不会置入静态存储空间。

常数存储。

常数值通常直接置于程序代码内部。

这样做是安全的,因为它们永远都不会改变。

有的常数需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。

非RAM存储。

若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。

其中两个最主要的例子便是“流式对象”和“固定对象”。

对于流式对象,对象会变成字节流,通常会发给另一台机器。

而对于固定对象,对象保存在磁盘中。

即使程序中止运行,它们仍可保持自己的状态不变。

对于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其他媒体中。

一旦需要,甚至能将它们恢复成普通的、基于RAM的对象。

Java1.1提供了对Lightweightpersistence的支持。

未来的版本甚至可能提供更完整的方案。

(3)高精度数字

Java1.1增加了两个类,用于进行高精度的计算:

BigInteger和BigDecimal。

尽管它们大致可以划分为“封装器”类型,但两者都没有对应的“主类型”。

这两个类都有自己特殊的“方法”,对应于我们针对主类型执行的操作。

也就是说,能对int或float做的事情,对BigInteger和BigDecimal一样可以做。

只是必须使用方法调用,不能使用运算符。

此外,由于牵涉更多,所以运算速度会慢一些。

我们牺牲了速度,但换来了精度。

BigInteger支持任意精度的整数。

也就是说,我们可精确表示任意大小的整数值,同时在运算过程中不会丢失任何信息。

BigDecimal支持任意精度的定点数字。

例如,可用它进行精确的币值计算。

至于调用这两个类时可选用的构建器和方法,请自行参考联机帮助文档。

(4)Java的数组

几乎所有程序设计语言都支持数组。

在C和C++里使用数组是非常危险的,因为那些数组只是内存块。

若程序访问自己内存块以外的数组,或者在初始化之前使用内存(属于常规编程错误),会产生不可预测的后果。

Java的一项主要设计目标就是安全性。

所以在C和C++里困扰程序员的许多问题都未在Java里重复。

一个Java可以保证被初始化,而且不可在它的范围之外访问。

由于系统自动进行范围检查,所以必然要付出一些代价:

针对每个数组,以及在运行期间对索引的校验,都会造成少量的内存开销。

但由此换回的是更高的安全性,以及更高的工作效率。

为此付出少许代价是值得的。

创建对象数组时,实际创建的是一个句柄数组。

而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:

null(空)。

一旦Java看到null,就知道该句柄并未指向一个对象。

正式使用前,必须为每个句柄都分配一个对象。

若试图使用依然为null的一个句柄,就会在运行期报告问题。

因此,典型的数组错误在Java里就得到了避免。

也可以创建主类型数组。

同样地,编译器能够担保对它的初始化,因为会将那个数组的内存划分成零。

(5)绝对不要清除对象

在大多数程序设计语言中,变量的“存在时间”(Lifetime)一直是程序员需要着重考虑的题。

变量应持续多长的时间?

如果想清除它,那么何时进行?

在变量存在时间上纠缠不清造成大量的程序错误。

在下面的小节里,将阐释Java如何帮助我们完成所有清除工作,从而极大了简化了这个问题。

作用域

大多数程序设计语言都提供了“作用域”(Scope)的概念。

对于在作用域里定义的名字,作用域同时决定了它的“可见性”以及“存在时间”。

在C,C++和Java里,作用域是由花括号的位置决定的。

附:

英文原文

Everythingisanobject

"

AlthoughinC++,butJavaisapureobject-orientedprogramminglanguage"

.

WhethertheC++orJavaarehybridlanguages.ButinJavathedesignersfeltthatthehybridizationwasnotsoimportantinC++,.Ahybridlanguageallowsmultipleprogrammingstyles;

reasonwhyC++isahybridlanguage,becauseitsupportsbackwardcompatibilityoftheClanguage.C++isasupersetofC,somanyofthefeaturesarecontainedinthelatterdonothave,thesefeaturesmaketheC++insomeplacesistoocomplicated.

TheJavalanguageassumesthatyouwanttodoonlyobject-orientedprogramming.Inotherwords,theofficialbeforeitisdesigned,youmustfirstownthoughtstoturnintoanobject-orientedworld(unlessalreadyaccustomedtothisworld'

swayofthinking).Onlydothispreparatorywork,comparedwithotherOOPlanguages,inordertounderstandtheJavaeasytolearn.Below,wewillexplorethebasiccomponentsoftheJavaprogram,andappreciatewhyeverythingisanobjectwithintheJavaandevenaJavaprogram.

(1)withahandletomanipulatetheobject.

Eachprogramminglanguagehasitsowndataprocessing.Insomecases,theprogrammermustalwayspayattentiontobepreparedtohandlewhattype.Youhavetousesomespecialsyntaxtodirectlymanipulateobjects,ordealtwithanumberofindirectobject(CorC++pointer)?

AllofthesehavebeeninJavatosimplifyanythingcanbeseenasanobject.Therefore,weadoptauniformsyntax,anyplacecanbecopiedisnotmissed.Butweknowthatall"

as"

anobject,butmanipulationoftheidentifieristheactualpointtoanobject'

s"

handle"

(Handle).InotherJavareference,youcanalsoseesomepeoplecalla"

reference"

orevena"

pointer"

.Canimaginethissituationwiththeremotecontrolboard(handle)tomanipulateTV(object).AslongasyouholdtheremotecontrolboardisequivalenttomasterandconnectedtoaTVchannel.Buttheneedto"

changethechannelorturndownthesound,weactuallymanipulatetheremotecontrolboard(handle),andthenmanipulatetheTVremotecontrolboard(object).IfyouwanttowalkaroundtheroomandwanttokeepcontroloftheTV,holdingaremotecontrolboard,ratherthanTV.Inaddition,evenwithoutaTVset,remotecontrolpanelscanalsoexistindependently.Inotherwords,justbecausewithahandlethatdoesnotmeanthattheremustbeanobjectconnectedwithit.Soifyouwanttoholdawordorsentence,youcancreateaStringhandle:

Butherearecreatedtohandle,notanobject.Ifssendsamessage,you'

llgetanerror(runtime).Thisisbecausethesisnotactuallyattachedtoanything(ie"

TV"

).Therefore,asaferapproachis:

tocreateahandle,rememberalwaystoinitialize:

However,thereisaspecialtype:

stringscanbeinitializedwithquotedtext.Generally,youmustuseamoregeneraltypeofinitializationforobjects.

(2)Allobjectsmustbecreated.

Handleiscreated,wehopetoconnectitwithanewobject.Normallywiththenewkeywordforthispurpose.Thenewmeaningis:

"

toturnmeintoanewtypeoftheseobjects.Sointheexampleabove,wecansay:

Strings=newString("

ItisnotonlythatIbecameanewstring,butalsobyprovidinganinitialstring,pointedout"

howtogeneratethenewstring"

.Ofcourse,thestring(String)isnottheonlytype.Javacomeswithalargenumberofready-madetype.Forus,themostimportantthingistoremembertocreateyourowntype.Infact,thisshouldbeabasicoperationoftheJavaprogrammingcontinuetobookmorethanpartofthefoundationoflearning.

Theprogramisrunning,we'

dbettersavethedatatobeawareof.Withparticularattentiontotheallocationofmemory.Therearesixplacesyoucansavethedata:

Register.Thisisthefastesttosavetheregion,becauseitisindifferentplacesandallotherpreservationmethods:

insidetheprocessor.However,thenumberofregistersisverylimited,soregistersareallocatedbythecompilerasneeded.Wehavenodirectcontrolover,itisimpossibletofindanytraceregisterintheirownprogram.

Stack.ResideconventionalRAM(RandomAccessMemory)area,butcandealwiththedirectsupportthroughitsstackpointer.Thestackpointerismoveddown,itwillcreateanewmemory;

andmoveduptoreleasethatmemory.Thisisaparticularlyfast,especiallytosavethedata,secondonlytoregister.Creationprogram,theJavacompilermustknowexactlyallthedatastoredinthestack"

length"

and"

existence"

.Thisisbecauseitmustgeneratetheappropriatecodefortheupanddown,movethepointer.Thisrestrictionisnodoubtaffecttheflexibilityoftheprogram,althoughsomeJavadatayouwanttosavethestack-inparticular,objecthandlesJavaobjectsarenotplacedwhich.

Heap.Ageneralpurposepoolofmemory(alsointheRAMarea),whichholdstheJavaobject.Differentstack,heapmemoryorheap(Heap)themostattractiveplacesisthatthecompilerdoesnothavetoknowfromtheheapallocatedstoragespace,donothavetoknowthedatastoredintheheaptostayalongtime.Therefore,theheaptosavedatawillbegreaterflexibility.Thepreparationofthecodecanbeaskedtocreateanobject,simplyusethenewcommand.Executethecode,itwillautomaticallysavedataontheheap.Ofcourse,inordertoachievethisflexibilitywillinevitablypayacertainprice:

spendlongerintheheapallocatedstoragespace!

Staticstorage.Hereis"

static"

(Static)refersto"

islocatedinafixedlocation"

(alsoinRAM).Programisrunning,thestaticstorageofdataatanytimewaitingforthecall.Availablestatickeywordthatspecificelementsofanobjectisstatic.Javaobjectitselfisneverplacedinstaticstorage.

Constantstorage.Constantvalueisusuallyplaceddirectlywithintheprogramcode.Itissafetodoso,becausetheyneverchange.Someconstantneedtobestrictlyprotected,sowecanconsiderthemintoaread-onlymemory(ROM).

Non-RAMmemory.Ifthedataiscompletelyindependentofaprogram,theprogramdoesnotrunstillexist,andoutsidethecontroloftheprogram.Thetwomostimportantexampleisthe"

flowobject"

fixedobject"

.Streamobject,theobjectintoabytestream,usuallysenttoanothermachine.F

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

当前位置:首页 > 职业教育 > 中职中专

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

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