




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文WORKINGWITHOBJECTSCASTINGANDCONVERTINGOBJECTSANDPRIMITIVETYPESSOMETIMESINYOURJAVAPROGRAMSYOUMAYHAVEAVALUESTOREDSOMEWHERETHATISTHEWRONGTYPEMAYBEITSANINSTANCEOFTHEWRONGCLASS,ORPERHAPSITSAFLOATANDYOUWANTITTOBEANINT,ORITSANINTEGERANDYOUWANTITTOBEASTRINGTOCONVERTTHEVALUEOFONETYPETOANOTHER,YOUUSEAMECHANISMCALLEDCASTINGNEWTERMCASTINGISAMECHANISMOFCONVERTINGTHEVALUEOFANOBJECTORPRIMITIVETYPEINTOANOTHERTYPETHERESULTOFACASTISANEWOBJECTORVALUECASTINGDOESNOTAFFECTTHEORIGINALOBJECTORVALUEALTHOUGHTHECONCEPTOFCASTINGISASIMPLEONE,THERULESFORWHATTYPESINJAVACANBECONVERTEDTOWHATOTHERTYPESARECOMPLICATEDBYTHEFACTTHATJAVAHASBOTHPRIMITIVETYPESINT,FLOAT,BOOLEAN,ANDOBJECTTYPESSTRING,POINT,WINDOW,ANDSOONBECAUSEOFTHESETHREETYPES,THEREARETHREEFORMSOFCASTSANDCONVERSIONSTOTALKABOUTINTHISSECTIONCASTINGBETWEENPRIMITIVETYPESINTTOFLOATTOBOOLEANCASTINGBETWEENOBJECTTYPESANINSTANCEOFACLASSTOANINSTANCEOFANOTHERCLASSCONVERTINGPRIMITIVETYPESTOOBJECTSANDTHENEXTRACTINGPRIMITIVEVALUESBACKOUTOFTHOSEOBJECTSCASTINGPRIMITIVETYPESCASTINGBETWEENPRIMITIVETYPESENABLESYOUTO“CONVERT”THEVALUEOFONETYPETOANOTHERPRIMITIVETYPEFOREXAMPLE,TOASSIGNANUMBEROFONETYPETOAVARIABLEOFANOTHERTYPECASTINGBETWEENPRIMITIVETYPESMOSTCOMMONLYOCCURSWITHTHENUMERICTYPESBOOLEANVALUESCANNOTBECASTTOANYOTHERPRIMITIVETYPEYOUCAN,HOWEVER,CAST1OR0TOBOOLEANVALUESOFTEN,IFTHETYPEYOUARECASTINGTOIS“LARGER”THANTHETYPEOFTHEVALUEYOURECONVERTING,YOUMAYNOTHAVETOUSEANEXPLICITCASTYOUCANOFTENAUTOMATICALLYTREATABYTEORACHARACTERASANINT,FOREXAMPLE,ORANINTASALONG,ANINTASAFLOAT,ORANYTHINGASADOUBLEAUTOMATICALLYINTHISCASE,BECAUSETHELARGERTYPEPROVIDESMOREPRECISIONTHANTHESMALLER,NOLOSSOFINFORMATIONOCCURSWHENTHEVALUEISCASTTOCONVERTALARGEVALUETOSMALLERTYPE,YOUMUSTUSEANEXPLICITCAST,BECAUSECONVERTINGTHATVALUEMAYRESULTINALOSSOFPRECISIONEXPLICITCASTSLOOKLIKETHISTYPENAMEVALUEINTHISFORM,TYPENAMEISTHENAMEOFTHETYPEYOURECONVERTINGTOFOREXAMPLESHORT,INT,FLOAT,BOOLEAN,ANDVALUEISANEXPRESSIONTHATRESULTSINTHEVALUEYOUWANTTOCONVERTTHISEXPRESSIONDIVIDESTHEVALUESOFXBYTHEVALUEOFYANDCASTSTHERESULTTOANINTINTX/YNOTETHATBECAUSETHEPRECEDENCEOFCASTINGISHIGHERTHANTHATOFARITHMETIC,YOUHAVETOUSEPARENTHESESSOTHATTHERESULTOFTHEDIVISIONISWHATGETSCASTTOANINTCASTINGOBJECTSINSTANCESOFCLASSESCANALSOBECASTTOINSTANCESOFOTHERCLASSES,WITHONERESTRICTIONTHECLASSOFTHEOBJECTYOURECASTINGANDTHECLASSYOURECASTINGITTOMUSTBERELATEDBYINHERITANCETHATIS,YOUCANCASTANOBJECTONLYTOANINSTANCEOFITSCLASSSSUBORSUPERCLASSNOTTOANYRANDOMCLASSANALOGOUSTOCONVERTINGAPRIMITIVEVALUETOALARGERTYPE,SOMEOBJECTSMAYNOTNEEDTOBECASTEXPLICITLYINPARTICULAR,BECAUSEINSTANCESSUBCLASSESUSUALLYCONTAINALLTHEINFORMATIONTHATINSTANCESSUPERCLASSESDO,YOUCANUSEANINSTANCEOFASUBCLASSANYWHEREASUPERCLASSISEXPECTEDSUPPOSEYOUHAVEAMETHODTHATTAKESTWOARGUMENTSONEOFTYPEOBJECT,ANDONEOFTYPENUMBERYOUDONTHAVETOPASSINSTANCESOFTHOSEPARTICULARCLASSESTOTHATMETHODFORTHEOBJECTARGUMENT,YOUCANPASSANYSUBCLASSOFOBJECTANYOBJECT,INOTHERWORDS,ANDFORTHENUMBERARGUMENTYOUCANPASSINANYINSTANCEOFANYSUBCLASSOFNUMBERINTEGER,BOOLEAN,FLOAT,ANDSOONCASTINGANOBJECTTOANINSTANCEOFONEOFTHATOBJECTSSUPERCLASSESLOSESTHEINFORMATIONTHEORIGINALSUBCLASSPROVIDEDANDREQUIRESASPECIFICCASTTOCASTANOBJECTTOANOTHERCLASS,YOUUSETHESAMECASTINGOPERATIONTHATYOUUSEDFORBASETYPESCLASSNAMEOBJECTINTHISCASE,CLASSNAMEISTHENAMEOFTHECLASSYOUWANTTOCASTTHEOBJECTTO,ANDOBJECTISAREFERENCETOTHEOBJECTYOURECASTINGNOTETHATCASTINGCREATESANEWINSTANCEOFTHENEWCLASSWITHALLTHEINFORMATIONTHATTHEOLDOBJECTCONTAINEDTHEOLDOBJECTSTILLCONTINUESTOEXISTASITDIDBEFOREHERESAFICTITIOUSEXAMPLEOFACASTOFANINSTANCEOFTHECLASSGREENAPPLETOANINSTANCEOFTHECLASSAPPLEWHEREGREENAPPLEISTHEORETICALLYASUBCLASSOFAPPLEGREENAPPLEAAPPLEA2ANEWGREENAPPLEA2APPLEAINADDITIONTOCASTINGOBJECTSTOCLASSES,YOUCANALSOCASTOBJECTSTOINTERFACESBUTONLYIFTHATOBJECTSCLASSORONEOFITSSUPERCLASSESACTUALLYIMPLEMENTSTHATINTERFACECASTINGANOBJECTTOANINTERFACETHENENABLESYOUTOCALLONEOFTHATINTERFACESMETHODSEVENIFTHATOBJECTSCLASSDOESNOTDIRECTLYIMPLEMENTTHATINTERFACEYOULLLEARNMOREABOUTINTERFACESINWEEK3CONVERTINGPRIMITIVETYPESTOOBJECTSANDVICEVERSANOWYOUKNOWHOWTOCASTAPRIMITIVETYPETOANOTHERPRIMITIVETYPEANDHOWTOCASTBETWEENCLASSESHOWCANYOUCASTONETOTHEOTHERYOUCANTPRIMITIVETYPESANDOBJECTSAREVERYDIFFERENTTHINGSINJAVAANDYOUCANTAUTOMATICALLYCASTORCONVERTBETWEENTHETWOHOWEVER,THEJAVALANGPACKAGEINCLUDESSEVERALSPECIALCLASSESTHATCORRESPONDTOEACHPRIMITIVEDATATYPEINTEGERFORINTS,FLOATFORFLOATS,BOOLEANFORBOOLEANS,ANDSOONUSINGCLASSMETHODSDEFINEDINTHESECLASSES,YOUCANCREATEANOBJECTEQUIVALENTFORALLTHEPRIMITIVETYPESUSINGNEWTHEFOLLOWINGLINEOFCODECREATESANINSTANCEOFTHEINTEGERCLASSWITHTHEVALUE35INTEGERINTOBJECTNEWINTEGER35ONCEYOUHAVEACTUALOBJECTS,YOUCANTREATTHOSEVALUESASOBJECTSTHEN,WHENYOUWANTTHEPRIMITIVEVALUESBACKAGAIN,THEREAREMETHODSFORTHATASWELLFOREXAMPLE,THEINTVALUEMETHODEXTRACTSANINTPRIMITIVEVALUEFROMANINTEGEROBJECTINTTHEINTINTOBJECTINTVALUE/RETURNS35SEETHEJAVAAPIDOCUMENTATIONFORTHESESPECIALCLASSESFORSPECIFICSONTHEMETHODSFORCONVERTINGPRIMITIVESTOANDFROMOBJECTSODDSANDENDSTHISSECTIONISACATCHALLFOROTHERINFORMATIONABOUTWORKINGWITHOBJECTS,INPARTICULARCOMPARINGOBJECTSCOPYINGOBJECTSFINDINGOUTTHECLASSOFANYGIVENOBJECTTESTINGTOSEEWHETHERANOBJECTISANINSTANCEOFAGIVENCLASSCOMPARINGOBJECTSYESTERDAY,YOULEARNEDABOUTOPERATORSFORCOMPARINGVALUESEQUALS,NOTEQUALS,LESSTHAN,ANDSOONMOSTOFTHESEOPERATORSWORKONLYONPRIMITIVETYPES,NOTONOBJECTSIFYOUTRYTOUSEOTHERVALUESASOPERANDS,THEJAVACOMPILERPRODUCESERRORSTHEEXCEPTIONTOTHISRULEISWITHTHEOPERATORSFOREQUALITYEQUALANDNOTEQUALTHESEOPERATORS,WHENUSEDWITHOBJECTS,TESTSWHETHERTHETWOOPERANDSREFERTOEXACTLYTHESAMEOBJECTWHATSHOULDYOUDOIFYOUWANTTOBEABLETOCOMPAREINSTANCESOFYOURCLASSANDHAVEMEANINGFULRESULTSYOUHAVETOIMPLEMENTSPECIALMETHODSINYOURCLASS,ANDYOUHAVETOCALLTHOSEMETHODSUSINGTHOSEMETHODNAMESAGOODEXAMPLEOFTHISISTHESTRINGCLASSITISPOSSIBLETOHAVETWOSTRINGS,TWOINDEPENDENTOBJECTSINMEMORYWITHTHESAMEVALUESTHATIS,THESAMECHARACTERSINTHESAMEORDERACCORDINGTOTHEOPERATOR,HOWEVER,THOSETWOSTRINGOBJECTSWILLNOTBEEQUAL,BECAUSE,ALTHOUGHTHEIRCONTENTSARETHESAME,THEYARENOTTHESAMEOBJECTTHESTRINGCLASS,THEREFORE,DEFINESAMETHODCALLEDEQUALSTHATTESTSEACHCHARACTERINTHESTRINGANDRETURNSTRUEIFTHETWOSTRINGSHAVETHESAMEVALUESLISTING44ILLUSTRATESTHISLISTING44ATESTOFSTRINGEQUALITY1CLASSEQUALSTEST23PUBLICSTATICVOIDMAINSTRINGARGS4STRINGSTR1,STR25STR1“SHESELLSSEASHELLSBYTHESEASHORE”6STR2STR178SYSTEMOUTPRINTLN“STRING1“STR19SYSTEMOUTPRINTLN“STRING2“STR210SYSTEMOUTPRINTLN“SAMEOBJECT“STR1STR21112STR2NEWSTRINGSTR11314SYSTEMOUTPRINTLN“STRING1“STR115SYSTEMOUTPRINTLN“STRING2“STR216SYSTEMOUTPRINTLN“SAMEOBJECT“STR1STR217SYSTEMOUTPRINTLN“SAMEVALUE“STR1EQUALSSTR21819OUTPUTSTRING1SHESELLSSEASHELLSBYTHESEASHORESTRING2SHESELLSSEASHELLSBYTHESEASHORESAMEOBJECTTRUESTRING1SHESELLSSEASHELLSBYTHESEASHORESTRING2SHESELLSSEASHELLSBYTHESEASHORESAMEOBJECTFALSESAMEVALUETRUEANALYSISTHEFIRSTPARTOFTHISPROGRAMLINES4THROUGH6DECLARESTWOVARIABLES,STR1ANDSTR2,ASSIGNSTHELITERALSHESELLSSEASHELLSBYTHESEASHORETOSTR1,ANDTHENASSIGNSTHATVALUETOSTR2ASYOUKNOWFROMOBJECTREFERENCES,NOWSTR1ANDSTR2POINTTOTHESAMEOBJECT,ANDTHETESTATLINE10PROVESTHATINTHESECONDPART,YOUCREATEANEWSTRINGOBJECTWITHTHEVALUEOFSTR1NOWYOUHAVETWODIFFERENTSTRINGOBJECTSWITHTHESAMEVALUETESTINGTHEMTOSEEWHETHERTHEYRETHESAMEOBJECTBYUSINGTHEOPERATORLINE16RETURNSTHEEXPECTEDANSWER,ASDOESTESTINGTHEMUSINGTHEEQUALSMETHODLINE17TOCOMPARETHEIRVALUESTECHNICALNOTEWHYCANTYOUJUSTUSEANOTHERLITERALWHENYOUCHANGESTR2,RATHERTHANUSINGNEWSTRINGLITERALSAREOPTIMIZEDINJAVAIFYOUCREATEASTRINGUSINGALITERAL,ANDTHENUSEANOTHERLITERALWITHTHESAMECHARACTERS,JAVAKNOWSENOUGHMERELYTOGIVEYOUTHEFIRSTSTRINGOBJECTBACKBOTHSTRINGSARETHESAMEOBJECTSTOCREATETWOSEPARATEOBJECTSYOUHAVETOGOOUTOFYOURWAYDETERMININGTHECLASSOFANOBJECTWANTTOFINDOUTTHECLASSOFANOBJECTHERESTHEWAYTODOITFORANOBJECTASSIGNEDTOTHEVARIABLEOBJSTRINGNAMEOBJGETCLASSGETNAMEWHATDOESTHISDOTHEGETCLASSMETHODISDEFINEDINTHEOBJECTCLASS,ANDASSUCHISAVAILABLEFORALLOBJECTSTHERESULTOFTHATMETHODISACLASSOBJECTWHERECLASSISITSELFACLASS,WHICHHASAMETHODCALLEDGETNAMEGETNAMERETURNSASTRINGREPRESENTINGTHENAMEOFTHECLASSANOTHERTESTTHATMIGHTBEUSEFULTOYOUISTHEINSTANCEOFOPERATORINSTANCEOFHASTWOOPERANDSANOBJECTONTHELEFT,ANDTHENAMEOFACLASSONTHERIGHTTHEEXPRESSIONRETURNSTRUEORFALSEBASEDONWHETHERTHEOBJECTISANINSTANCEOFTHENAMEDCLASSORANYOFTHATCLASSSSUPERCLASSES“FOO”INSTANCEOFSTRING/TRUEPOINTPTNEWPOINT10,10PTINSTANCEOFSTRING/FALSETHEINSTANCEOFOPERATORCANALSOBEUSEDFORINTERFACESIFANOBJECTIMPLEMENTSANINTERFACE,THEINSTANCEOFOPERATORWITHANINTERFACENAMEONTHERIGHTSIDERETURNSTRUEYOULLLEARNALLABOUTINTERFACESINWEEK3PACKAGESANDINTERFACESWHENYOUEXAMINEANEWLANGUAGEFEATURE,YOUSHOULDASKYOURSELFTWOQUESTIONS1HOWCANIUSEITTOBETTERORGANIZETHEMETHODSANDCLASSESOFMYJAVAPROGRAM2HOWCANIUSEITWHILEWRITINGTHEJAVACODEINMYMETHODSTHEFIRSTISOFTENCALLEDPROGRAMMINGINTHELARGE,ANDTHESECOND,PROGRAMMINGINTHESMALLBILLJOY,AFOUNDEROFSUNMICROSYSTEMS,LIKESTOSAYTHATJAVAFEELSLIKECWHENPROGRAMMINGINTHESMALLANDLIKESMALLTALKWHENPROGRAMMINGINTHELARGEWHATHEMEANSBYTHATISTHATJAVAISFAMILIARANDPOWERFULLIKEANYCLIKELANGUAGEWHILEYOURECODING,BUTHASTHEEXTENSIBILITYANDEXPRESSIVEPOWEROFAPUREOBJECTORIENTEDLANGUAGELIKESMALLTALKWHILEYOUREDESIGNINGTHESEPARATIONOF“DESIGNING”FROM“CODING”WASONEOFTHEMOSTFUNDAMENTALADVANCESINPROGRAMMINGINTHEPASTFEWDECADES,ANDOBJECTORIENTEDLANGUAGESSUCHASJAVAIMPLEMENTASTRONGFORMOFTHISSEPARATIONTHEFIRSTPARTOFTHISSEPARATIONHASALREADYBEENDESCRIBEDONPREVIOUSDAYSWHENYOUDEVELOPAJAVAPROGRAM,FIRSTYOUDESIGNTHECLASSESANDDECIDEONTHERELATIONSHIPSBETWEENTHESECLASSES,ANDTHENYOUIMPLEMENTTHEJAVACODENEEDEDFOREACHOFTHEMETHODSINYOURDESIGNIFYOUARECAREFULENOUGHWITHBOTHTHESEPROCESSES,YOUCANCHANGEYOURMINDABOUTASPECTSOFTHEDESIGNWITHOUTAFFECTINGANYTHINGBUTSMALL,LOCALPIECESOFYOURJAVACODE,ANDYOUCANCHANGETHEIMPLEMENTATIONOFANYMETHODWITHOUTAFFECTINGTHERESTOFTHEDESIGNASYOUBEGINTOEXPLOREMOREADVANCEDJAVAPROGRAMMING,HOWEVER,YOULLFINDTHATTHISSIMPLEMODELBECOMESTOOLIMITINGTODAY,YOULLEXPLORETHESELIMITATIONS,FORPROGRAMMINGINTHELARGEANDINTHESMALL,TOMOTIVATETHENEEDFORPACKAGESANDINTERFACESLETSSTARTWITHPACKAGESPACKAGESPACKAGESAREJAVASWAYOFDOINGLARGESCALEDESIGNANDORGANIZATIONTHEYAREUSEDBOTHTOCATEGORIZEANDGROUPCLASSESLETSEXPLOREWHYYOUMIGHTNEEDTOUSEPACKAGESPROGRAMMINGINTHELARGEWHENYOUBEGINTODEVELOPJAVAPROGRAMSTHATUSEALARGENUMBEROFCLASSES,YOUWILLQUICKLYDISCOVERSOMELIMITATIONSINTHEMODELPRESENTEDTHUSFARFORDESIGNINGANDBUILDINGTHEMFORONETHING,ASTHENUMBEROFCLASSESYOUBUILDGROWS,THELIKELIHOODOFYOURWANTINGTOREUSETHESHORT,SIMPLENAMEOFSOMECLASSINCREASESIFYOUUSECLASSESTHATYOUVEBUILTINTHEPAST,ORTHATSOMEONEELSEHASBUILTFORYOUSUCHASTHECLASSESINTHEJAVALIBRARY,YOUMAYNOTREMEMBEROREVENKNOWTHATTHESECLASSNAMESAREINCONFLICTBEINGABLETO“HIDE”ACLASSINSIDEAPACKAGEBECOMESUSEFULHERESASIMPLEEXAMPLEOFTHECREATIONOFAPACKAGEINAJAVASOURCEFILEPACKAGEMYFIRSTPACKAGEPUBLICCLASSMYPUBLICCLASSEXTENDSITSSUPERCLASSNOTEIFAPACKAGESTATEMENTAPPEARSINAJAVASOURCEFILE,ITMUSTBETHEFIRSTTHINGINTHATFILEEXCEPTFORCOMMENTSANDWHITESPACE,OFCOURSEYOUFIRSTDECLARETHENAMEOFTHEPACKAGEBYUSINGAPACKAGESTATEMENTTHENYOUDEFINEACLASS,JUSTASYOUWOULDNORMALLYTHATCLASS,ANDANYOTHERCLASSESALSODECLAREDINSIDETHISSAMEPACKAGENAME,AREGROUPEDTOGETHERTHESEOTHERCLASSESAREUSUALLYLOCATEDINOTHER,SEPARATESOURCEFILESPACKAGESCANBEFURTHERORGANIZEDINTOAHIERARCHYSOMEWHATANALOGOUSTOTHEINHERITANCEHIERARCHY,WHEREEACH“LEVEL”USUALLYREPRESENTSASMALLER,MORESPECIFICGROUPINGOFCLASSESTHEJAVACLASSLIBRARYITSELFISORGANIZEDALONGTHESELINESSEETHEDIAGRAMSINAPPENDIXBTHETOPLEVELISCALLEDJAVATHENEXTLEVELINCLUDESNAMESSUCHASIO,NET,UTIL,ANDAWTTHELASTHASANEVENLOWERLEVEL,WHICHINCLUDESTHEPACKAGEIMAGETHECOLORMODELCLASS,LOCATEDINTHEPACKAGEIMAGE,CANBEUNIQUELYREFERREDTOANYWHEREINYOURJAVACODEASJAVAAWTIMAGECOLORMODELBECAUSEEACHJAVACLASSSHOULDBELOCATEDINASEPARATESOURCEFILE,THEGROUPINGOFCLASSESPROVIDEDBYAHIERARCHYOFPACKAGESISANALOGOUSTOTHEGROUPINGOFFILESINTOAHIERARCHYOFDIRECTORIESONYOURFILESYSTEMTHEJAVACOMPILERREINFORCESTHISANALOGYBYREQUIRINGYOUTOCREATEADIRECTORYHIERARCHYUNDERYOURCLASSESDIRECTORYTHATEXACTLYMATCHESTHEHIERARCHYOFTHEPACKAGESYOUHAVECREATED,ANDTOPLACEACLASSINTOTHEDIRECTORYWITHTHESAMENAMEANDLEVELASTHEPACKAGEINWHICHITSDEFINEDFOREXAMPLE,THEDIRECTORYHIERARCHYFORTHEJAVACLASSLIBRARYEXACTLYMIRRORSITSPACKAGEHIERARCHYONUNIX,FOREXAMPLE,THECLASSREFERENCEDASJAVAAWTIMAGECOLORMODELISSTOREDINAFILENAMEDCOLORMODELCLASSINTHEDIRECTORYNAMED/CLASSES/JAVA/AWT/IMAGETHEISTHEPATHWHEREJAVAWASINSTALLEDONYOURCOMPUTERINPARTICULAR,IFYOUHAVECREATEDAPACKAGEWITHINMYFIRSTPACKAGECALLEDMYSECONDPACKAGE,BYDECLARINGACLASSPACKAGEMYFIRSTPACKAGEMYSECONDPACKAGEPUBLICCLASSANOTHERPUBLICCLASSEXTENDSANOTHERSUPERCLASSTHEJAVASOURCEFILECALLEDANOTHERPUBLICCLASSJAVAMUSTBELOCATEDINADIRECTORYBELOWTHECURRENTDIRECTORYCALLEDCLASSES/MYFIRSTPACKAGE/MYSECONDPACKAGEFORTHECOMPILERJAVACTOFINDITWHENTHECOMPILERGENERATESTHEFILEANOTHERPUBLICCLASSCLASS,ITPLACESITINTOTHISSAMEDIRECTORYSOTHATTHEJAVAINTERPRETERCANFINDITBOTHTHECOMPILERANDTHEINTERPRETEREXPECTANDENFORCETHEHIERARCHYPROGRAMMINGINTHESMALLWHENYOUREFERTOACLASSBYNAMEINYOURJAVACODE,YOUAREUSINGAPACKAGEMOSTOFTHETIMEYOUARENTAWAREOFITBECAUSEMANYOFTHEMOSTCOMMONLYUSEDCLASSESINTHESYSTEMAREINAPACKAGETHATTHEJAVACOMPILERAUTOMATICALLYIMPORTSFORYOU,CALLEDJAVALANGSOWHENEVERYOUSAWTHIS,FOREXAMPLESTRINGASTRINGSOMETHINGMOREINTERESTINGTHANYOUMIGHTHAVETHOUGHTWASOCCURRINGWHATIFYOUWANTTOREFERTOTHECLASSYOUCREATEDATTHESTARTOFTHISSECTION,THEONEINTHEPACKAGEMYFIRSTPACKAGEIFYOUTRYTHISMYPUBLICCLASSSOMENAMETHECOMPILERCOMPLAINSTHECLASSMYPUBLICCLASSISNOTDEFINEDINTHEPACKAGEJAVALANGTOSOLVETHISPROBLEM,JAVAALLOWSANYCLASSNAMETOBEPREFIXEDBYTHENAMEOFTHEPACKAGEINWHICHITWASDEFINEDTOFORMAUNIQUEREFERENCETOTHECLASSMYFIRSTPACKAGEMYPUBLICCLASSSOMENAMENOTERECALLTHATBYCONVENTION,PACKAGENAMESTENDTOBEGINWITHALOWERCASELETTERTODISTINGUISHTHEMFROMCLASSNAMESTHUS,FOREXAMPLE,INTHEFULLNAMEOFTHEBUILTINSTRINGCLASS,JAVALANGSTRING,ITSEASIERTOSEPARATETHEPACKAGENAMEFROMTHECLASSNAMEVISUALLYSUPPOSEYOUWANTTOUSEALOTOFCLASSESFROMAPACKAGE,APACKAGEWITHALONGNAME,ORBOTHYOUDONTWANTTOHAVETOREFERTOYOURCLASSESASTHATREALLYLONGPACKAGENAMECLASSNAMEJAVAALLOWSYOUTO“IMPORT”THENAMESOFTHOSECLASSESINTOYOURPROGRAMTHEYTHENACTJUSTASJAVALANGCLASSESDO,ANDYOUCANREFERTOTHEMWITHOUTAPREFIXFOREXAMPLE,TOUSETHEREALLYLONGCLASSNAMEINTHELASTEXAMPLEMOREEASILY,YOUCANWRITETHEFOLLOWINGIMPORTTHATREALLYLONGPACKAGENAMECLASSNAMECLASSNAMEANOBJECT/ANDYOUCANUSECLASSNAMEDIRECTLYASMANYTIMESASYOULIKENOTEALLIMPORTSTATEMENTSMUSTAPPEARAFTERANYPACKAGESTATEMENTBUTBEFOREANYCLASSDEFINITIONSTHUS,THEYARE“STUCK”ATTHETOPOFYOURSOURCEFILEWHATIFYOUWANTTOUSESEVERALCLASSESFROMTHATSAMEPACKAGEHERESANATTEMPTFROMASOONTOBETIREDPROGRAMMERTHATREALLYLONGPACKAGENAMECLASSONEFIRSTTHATREALLYLONGPACKAGENAMECLASSTWOSECONDTHATREALLYLONGPACKAGENAMECLASSTHREEANDSOONHERESONEFROMAMORESAVVYPROGRAMMER,WHOKNOWSHOWTOIMPORTAWHOLEPACKAGEOFPUBLICCLASSESIMPORTTHATREALLYLONGPACKAGENAMECLASSONEFIRSTCLASSTWOSECONDCLASSTHREEANDSOONSUMMARYTODAY,YOULEARNEDHOWPACKAGESCANBEUSEDTOCOLLECTANDCATEGORIZECLASSESINTOMEANINGFULGROUPSPACKAGESAREARRANGEDINAHIERARCHY,WHICHNOTONLYBETTERORGANIZESYOURPROGRAMS,BUTALLOWSYOUANDTHEMILLIONSOFJAVAPROGRAMMERSOUTONTHENETTONAMEANDSHARETHEIRPROJECTSUNIQUELYWITHONEANOTHERYOUALSOLEARNEDHOWTOUSEPACKAGES,BOTHYOUROWNANDTHEMANYPREEXISTINGONESINTHEJAVACLASSLIBRARYYOUTHENDISCOVEREDHOWTODECLAREANDUSEINTERFACES,APOWERFULMECHANISMFOREXTENDINGTHETRADITIONALSINGLEINHERITANCEOFJAVASCLASSESANDFORSEPARATINGTHEDESIGNINHERITANCEFROMTHEIMPLEMENTATIONINHERITANCEINYOURPROGRAMSINTERFACESAREOFTENUSEDTOCALLSHAREDMETHODSWHENTHEEXACTCLASSINVOLVEDISNOTKNOWNYOULLSEEFURTHERUSESOFINTERFACESTOMORROWANDTHEDAYAFTERFINALLY,PACKAGESANDINTERFACESCANBECOMBINEDTOPROVIDEUSEFULABSTRACTIONS,SUCHASENUMERATION,THATAPPEARSIMPLEYETAREACTUALLYHIDINGALMOSTALLTHEIRCOMPLEXIMPLEMENTATIONFROMTHEIRUSERSTHISISAPOWERFULTECHNIQUE中文翻译第1章对象11对象和基本数据类型的转换和强制转换有时候您在JAVA程序中可能会有一个位置存储一个值,但是类型是错误的。如果方法要的是INT值,而它却是一个FLOAT型,或者你要的是字符串,但是它却是INT型。若要把一种类型的数据转换为另一种类型,你就要用到强制类型转换。新术语强制转换是一种从一种类型转换到另一个类型的机制,强制类型转换生成一个类型不同于原值的新值。强制转换不影响原值。虽然强制转换是一个简单的概念,但是使用起来却是很复杂的,这是因为JAVA既有基本数据类型(如INT,FLOAT,和BOOLEAN),又有对象类型(如STRING,POINT,ZIPFILE等)。本节将介绍2种形式的强制类型转换基本类型之间的强制转换类型,如INT到FLOAT或者FLOAT到DOUBLE。从一种类的实例强制转换为另一种类的实例。从基本类型强制转换为对象,然后从对象中提取基本类型值。111强制转换基本类型基本类型之间的转换可以使一种基本类型的值转换为另一种基本类型的值,例如,要将许多类型赋值给许多其他不同的类型。最常见的是发生在数字类型上;布尔型的值无法强制转换为其他的基本类型。但是,你可以用1和0来表示布尔值。通常,在许多基本类型强制转换类型中,目标可以保存比源更大的值,您就不必使用显式的强制类型转换。通常可以将BYTE或者CHAR用作是INT,将INT用作LONG或者FLOAT,将任何数字类型用作LONG。在这种情况下,由于更大的数据类型的精确度比小类型的精确度高,所以不会产生数据的丢失。将大的数据类型转换为小数据类型的时候,必须显式地进行强制数据转换,否则将导致数据的精确度降低。显式的强制类型转换的格式如下TYPENAMEVALUE在上面的例子中,TYPENAME是目标数据类型(如SHORT,INT,或者FLOAT,BOOLEAN)VALUE是表达式,其结果为要转换的源数据类型。下面的表达式中,X被Y除后的结果被强制转换为INT数据类型IINTX/Y请注意,由于强制类型转换的优先级高于算术运算,所以这里必须使用圆括号,否则,X首先会被转换为INT型,然后再被Y除,那样就会得出错误的结果。112强制转换对象类的实例也可以被转换为其他类的实例,但是有限制你要转换的源类和目标类必须是继承的关系;也就是说,其中一个类必须是另一个类的子类或者父类不能是任何别的类。与基本类型的转换为更大的类型相似,有些对象可以无需显式的转换。具体的说,由于子类包含了父类的所有信息,因此可以在任何期望父类的地方使用子类的实例。假设有一个方法,它接受两个参数一个是OBJECT类型,另一个是数字类型。您不必将这些特定的类的实例传递给该方法。你可以传递任何子类对象作为对象的参数(任何对象,换句话说),并为数字参数您可以传递任何实例号(整数、布尔值、FLOAT等)的任何子类中。要在需要子类对象的地方使用超类对象,必须显式的进行强制类型转换。在转换过程中,不会随时任何信息,儿是得到了子类定义的全部方法和变量。要将对象强制转换为另一种类,需要使用与基本类型相同的操作CLASSNAMEOBJECT其中,CLASSNAME是目标类的名称,OBJECT是源对象的引用。注意,强制转换将创建一个CLASSNAME对象的引用;原来的对象继续存在。下面是将APPLE(其中GREENAPPLE是APPLE的子类)类强制转换成GREENAPPLE类的一个实例GREENAPPLEANEWGREENAPPLEAPPLEA2A2APPLEA除了强制转换某种类之外,还可以将对象强制转换为接口,但是仅当该对象的类或者其父类之一实现了该接口时才可以。将对象强制转换为接口意味着您可以调用该接口的方法,即使该对象的类并没有实现该接口。您将在第三周了解更多关于这部分的内容。113基本数据类型和对象之间的强制转换现在,您知道如何在基本类型之间进行强制转换和在对象之间进行强制类型转换。如何在基本类型和对象之间进行强制类型转换呢您不能那么做您不能将对象强制转换为基本数据类型或者将基本数据类型强制转换为对象类型。因为在JAVA中,基本类型和对象类型是完全不同的东西,不能自动在两者之间进行强制类型转换。但是,JAVALANG包中包含了对应与每种基本数据类型的的特殊的类INT型,FLOAT型,布尔型等。使用每个基本类型对应的类,可以创建存储相同值的对象,下面的代码创建了一个INT型类的实例,并且值是35INTEGERINTOBJECTNEWINTEGER35使用这种方法创建对象后,可以像使用其他对象一样使用它。当您想将它作为基本类型值使用时,也有实现对应功能的方法,比如,INTVALUE方法就可以提取对象中的基本INT值INTTHEINTINTOBJECTINTVALUE/RETURNS35请参阅JAVAAPI文档中用于将这些特殊的类转换为对象上的具体信息方法。12对象的其他知识除了强制转换外,对对象还有下面这些操作比较对象复制对象找出的任何给定的对象类判断对象是否是特定类的实例121比较对象昨天,您学习了用于比较基本类型数据的运算符等于,不等于,小于等。这些运算符中的大部分都只能用于基本类型,儿不能用于对象。如果你尝试将非基本数据类型值作为操作数,JAVA编译器将报错。对于这种规则,有一种例外情况,用于相等关系的运算符(等于)和(不等于)。这两个运算符,用于对象时,它们不是检查一个对象的值是否与另一个对象相同,而是判断运算符两边引用的是否是同一个对象。怎么做才能让您能够比较两个类的实例,并且让结果有意义呢您必须使用类中实现的方法,并调用这些方法。一个很好的例子是类STRING。两个不同的STRING对象可能包含相同的值。然而,如果使用运算符来比较它们,则它们将被认为不相等。虽然它们的内容一致,但是它们不是同一个对象。例子44要检查两个STRING对象的值是否相同,因此调用EQUALS方法。该方法检测字符串中的每个字符,如果两个字符串的值相同,则返回TRUE。下面是程序44例111CLA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学习解读庆祝2022年国庆节专题
- 甲烷安全知识培训内容课件
- 农村电商教学课件
- 用电用网安全知识培训课件
- 《出师表》教学课件
- 《设计加法器》教学课件
- 中国旅游教学课件
- 新解读《GB-T 18916.33-2018取水定额 第33部分:煤间接液化》
- 生鲜类行业知识培训课件
- 生美基础知识培训总结课件
- 湖南省房屋建筑和市政基础设施工程-“机器管招投标”模块化招标文件(施工)-(2025年第1版)
- 2025-2030中国近红外光谱分析仪行业市场发展趋势与前景展望战略研究报告
- 《贵阳市公共交通场站设计导则》
- 职业指导师考试题库及答案(含各题型)
- 企业融资过程中的税务问题解析
- 2025年广西职业院校技能大赛中职组(婴幼儿保育赛项)参考试题库及答案
- 足球俱乐部股权转让协议
- 高中主题班会 高一下学期《安全教育-开学第一课》主题班会课件
- 职业健康知识培训
- 电子商务在文化创意产业的应用与案例
- 龋病龋病的临床表现及诊断讲解
评论
0/150
提交评论