¡¾×ª¡¿ÈçºÎÔÚJavaÖбÜÃâequals·½·¨µÄÒþ²ØÏÝÚå
ÒëÕß×¢ :Äã¿ÉÄÜ»á¾õµÃJavaºÜ¼òµ¥£¬ObjectµÄequalsʵÏÖÒ²»á·Ç³£¼òµ¥£¬µ«ÊÇÊÂʵ²¢²»ÊÇÄãÏëÏóµÄÕâÑù£¬ÄÍÐĵĶÁÍê±¾ÎÄ£¬Äã»á·¢ÏÖÄã¶ÔJavaÁ˽âµÄÊÇÈç´ËµÄÉÙ¡£Èç¹ûÕâÆªÎÄÕÂÊÇÒ»·ÝJava³ÌÐòÔ±µÄÈëÖ°±ÊÊÔ£¬ÄÇô²»ÖªµÀÓжàÉÙÈË»áµôÂäµ½ÕâÑùµÄÏÝÚåÖС£ÔÎÄת×Ôhttp://www.artima.com/lejava/articles/equality.html Èýλ×÷Õß¶¼ÊDz»Í¬ÁìÓòµÄ´óÄã¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ´ÓÉÏÃæÕâ¸öÁ¬½ÓÖ±½ÓÈ¥ÔĶÁÔÎÄ¡£
ÕªÒª
±¾ÎÄÃèÊöÖØÔØequals·½·¨µÄ¼¼Êõ£¬ÕâÖÖ¼¼Êõ¼´Ê¹ÊǾßÏÖÀàµÄ×ÓÀàÔö¼ÓÁË×Ö¶ÎÒ²Äܱ£Ö¤equalÓïÒåµÄÕýÈ·ÐÔ¡£
ÔÚ¡¶Effective Java¡·µÄµÚ8ÏîÖУ¬Josh BlochÃèÊöÁ˵±¼Ì³ÐÀà×÷ÎªÃæÏò¶ÔÏóÓïÑÔÖеĵȼ۹ØÏµµÄ»ù´¡ÎÊÌ⣬Ҫ±£Ö¤ÅÉÉúÀàµÄequalÕýÈ·ÐÔÓïÒåËù»áÃæ¶ÔµÄÀ§ÄÑ¡£BlochÕâÑùдµ½£º
³ý·ÇÄãÍü¼ÇÁËÃæÏò¶ÔÏó³éÏóµÄºÃ´¦£¬·ñÔòÔÚµ±Äã¼Ì³ÐÒ»¸öÐÂÀà»òÔÚÀàÖÐÔö¼ÓÁËÒ»¸öÖµ×é¼þʱÄãÎÞ·¨Í¬Ê±±£Ö¤equalµÄÓïÒåÒÀÈ»ÕýÈ·
ÔÚ¡¶Programming in Scala¡·ÖеĵÚ28ÕÂÑÝʾÁËÒ»ÖÖ·½·¨£¬ÕâÖÖ·½·¨ÔÊÐí¼´Ê¹¼Ì³ÐÁËÐÂÀ࣬Ôö¼ÓÁËеÄÖµ×é¼þ£¬equalµÄÓïÒåÈÔÈ»Äܵõ½±£Ö¤¡£ËäÈ»ÔÚÕâ±¾ÊéÖÐÕâÏî¼¼ÊõÊÇÔÚʹÓÃScalaÀà»·¾³ÖУ¬µ«ÊÇÕâÏî¼¼ÊõͬÑù¿ÉÒÔÓ¦ÓÃÓÚJava¶¨ÒåµÄÀàÖС£ÔÚ±¾ÎÄÖеÄÃèÊöÀ´×ÔÓÚProgramming in ScalaÖеÄÎÄ×ÖÃèÊö£¬µ«ÊÇ´úÂë±»ÎÒ´Óscala·Òë³ÉÁËJava
³£¼ûµÄµÈ¼Û·½·¨ÏÝÚå
java.lang.Object ÀඨÒåÁËequalsÕâ¸ö·½·¨£¬ËüµÄ×ÓÀà¿ÉÒÔͨ¹ýÖØÔØÀ´¸²¸ÇËü¡£²»ÐÒµÄÊÇ£¬ÔÚÃæÏò¶ÔÏóÖÐд³öÕýÈ·µÄequals·½·¨ÊǷdz£À§Äѵġ£ÊÂʵÉÏ£¬ÔÚÑо¿ÁË´óÁ¿µÄJava´úÂëºó£¬2007 paperµÄ×÷ÕߵóöÁËÈçϵÄÒ»¸ö½áÂÛ£º
¼¸ºõËùÓеÄequals·½·¨µÄʵÏÖ¶¼ÊÇ´íÎóµÄ£¡
Õâ¸öÎÊÌâÊÇÒòΪµÈ¼ÛÊǺͺܶàÆäËûµÄÊÂÎïÏà¹ØÁª¡£ÀýÈçÆäÖÐÖ®Ò»£¬Ò»¸öµÄÀàÐÍCµÄ´íÎóµÈ¼Û·½·¨¿ÉÄÜÒâζ×ÅÄãÎÞ·¨½«Õâ¸öÀàÐÍCµÄ¶ÔÏó¿ÉÐÅÀµµÄ·ÅÈëµ½ÈÝÆ÷ÖС£±ÈÈç˵£¬ÄãÓÐÁ½¸öÔªËØelem1ºÍelem2ËûÃǶ¼ÊÇÀàÐÍCµÄ¶ÔÏ󣬲¢ÇÒËûÃÇÊÇÏàµÈ£¬¼´elem1.equals(elm2)·µ»Øture¡£µ«ÊÇ£¬Ö»ÒªÕâ¸öequals·½·¨ÊÇ´íÎóµÄʵÏÖ£¬ÄÇôÄã¾ÍÓпÉÄܻῴ¼ûÈçϵÄһЩÐÐΪ£º
Set hashSet = new java.util.HashSet();
hashSet.add(elem1);
hashSet.contains(elem2); // returns false!
µ±equalsÖØÔØÊ±£¬ÕâÀïÓÐ4¸ö»áÒý·¢equalsÐÐΪ²»Ò»Öµij£¼ûÏÝÚ壺
¶¨ÒåÁË´íÎóµÄequals·½·¨Ç©Ãû(signature) Defining equals with the wrong signature.
ÖØÔØÁËequalsµÄµ«Ã»ÓÐÍ¬Ê±ÖØÔØhashCodeµÄ·½·¨¡£ Changing equals without also changing hashCode.
½¨Á¢ÔÚ»á±ä»¯×ÖÓòÉϵÄequals¶¨Òå¡£ Defining equals
Ïà¹ØÎĵµ£º
1. ObjectInputStream Óë ObjectOutputStreamµÄ¶Áд¶ÔÏó¿ÉÒÔÒÔ¶ÔÓ¦µÄ˳Ðò½øÐжà¸ö¶ÔÏóµÄ¶Áд¡£
2. Break Loop label¡£ ÔÚÑ»·Óï¾äǰ¼ÓÉÏÒ»¸ölabel£¬Èçlabel1: È»ºóÔÚÑ»·ÌåµÄÓï¾äÖмÓÈëbreak label1£¬¼´¿ÉÌø³ö¸ÃÑ»·£¬ÎÞÂÛÆäÊÇÄÚ²ãÑ»·
»¹ÊÇÍâ²ãÑ»·¡£ ......
1. JVMÄÚ´æ¶Î·ÖÅä¼°Æô¶¯²ÎÊý£º
J2EE·þÎñÆ÷µÄÄÚ´æ×é³É£º
? Java¶Ñ£ºÎÒÃǵijÌÐòºÍ¶ÔÏó¶¼ÔÚÕâ¸ö¶Ñ½øÐйÜÀí
? C¶Ñ£ºµ±ÒýÓõ½Ò»Ð©NativeµÄ¶ÔÏó£¬ÈçÍøÂç·ÃÎÊ¡¢OCI·½Ê½µÄÊý¾Ý¿âÁ¬½ÓµÈ¶¼ÔÚC¶ÑÀï½øÐйÜÀí
Java¶ÑµÄÃèÊö£º
ÈçÏÂͼ
ÄÚ´æÓÉ Perm ºÍ Heap ×é³É. ÆäÖÐ
Heap = {Old + young = { Eden , from, to } }
? You ......
/**
* @param source: source image file
* @param output: output image file
* @param mode: 0 ratio,1 maxWidth,2 maxHeight,3 maxSide
* @param maxSide: maxWidth, maxHeight or maxSide, different by mode
* @param ratio: ratio if resized by ratio
*/
public static void resizeImage(File ......
native2ascii.exe ÊÇ Java µÄÒ»¸öÎļþתÂ빤¾ß£¬Êǽ«ÌØÊâ¸÷ÒìµÄÄÚÈÝ ×ªÎª ÓÃÖ¸¶¨µÄ±àÂë±ê×¼ÎÄÌåÐÎʽͳһµÄ±íÏÖ³öÀ´£¬Ëüͨ³£Î»ÓÚ JDK_home\bin Ŀ¼Ï£¬°²×°ºÃ Java SE ºó£¬¿ÉÔÚÃüÁîÐÐÖ±½ÓʹÓà native2ascii ÃüÁî½øÐÐתÂ룬ʾÀý£º
native2ascii -encoding 8859_1 c:\test.txt c:\temp.txt
½« test.txt ÎļþÄÚÈÝÓà 8859_1 × ......
1.Duplicated Code
´úÂëÖØ¸´¼¸ºõÊÇ×î³£¼ûµÄÒìζÁË¡£ËûÒ²ÊÇRefactoringµÄÖ÷ҪĿ±êÖ®Ò»¡£´úÂëÖØ¸´ÍùÍùÀ´×ÔÓÚcopy-and-pasteµÄ±à³Ì·ç¸ñ¡£ÓëËûÏà¶ÔÓ¦OAOOÊÇÒ»¸öºÃϵͳµÄÖØÒª±êÖ¾¡£
2.Long method
ËüÊÇ´«Í³½á¹¹»¯µÄ“ÒŶ¾”¡£Ò»¸ö·½·¨Ó¦µ±¾ßÓÐ×ÔÎÒ¶ÀÁ¢µÄÒâͼ£¬²»Òª°Ñ¼¸¸öÒâͼ·ÅÔÚÒ»Æð¡£ ......