˜q™é‡Œç”¨åˆ°äº?/SPAN>JUnitåQŒç”¨æ¥æµ‹è¯?/SPAN>String poolã€?/SPAN>
½W¬ä¸€ä¸ªæµ‹è¯•,说明两个String是åŒä¸€ä¸?/SPAN>ObjectåQŒï¼ˆ==ž®±æ˜¯ç”¨æ¥æ¯”较objectçš?/SPAN>referenceåQ‰ã€‚而第二个‹¹‹è¯•则说明两ä¸?/SPAN>String Objectä¸åŒã€?/SPAN>
众所周知åQ?/SPAN>Javaçš?/SPAN>Stringæ˜?SPAN class=postbody>ä¸å¯æ”¹å˜çš„å—½W¦ä¸²å¯¹è±¡ã€‚äØ“äº†æé«˜æ•ˆçŽ‡ï¼ŒJavaä¸?/SPAN>String¾cÀLä¾›äº†ä¸²æ± (String pool)。æ£å¦‚å¤§å®¶æ‰€çœ‹åˆ°çš„é‚£æ øP¼Œåœ¨ç¬¬ä¸€ä¸?/SPAN>testä¸å°±ä½¿ç”¨äº†ä¸²æ± ã€‚å½“ä½ é‡æ–°å£°æ˜Žä¸€ä¸?/SPAN>Stringåž‹å˜é‡äØ“abcæ—Óž¼Œž®†ä‹Éç”¨ä¸²æ± é‡ŒåŽŸæ¥çš„é‚£ä¸?/SPAN>abcåQŒè€Œä¸é‡æ–°åˆ†é…内å˜åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œstring2ä¸?/SPAN>string1ž®†ä¼šæŒ‡å‘åŒä¸€å—内å˜ã€‚æ‰€ä»¥ç»“æžœäØ“true。在½W¬äºŒä¸ªtest caseä¸ä‹É用了普通对象的声明方å¼åQŒç³»¾lŸå°†ä¼šäØ“string1å’?/SPAN>string2å„分é…一å—内å˜ã€‚æ‰€ä»¥ç»“æžœäØ“falseã€?/SPAN>
¾l“论åQšæˆ‘ä»¬æ¯”è¾ƒä¸¤ä¸ªStringçš„å€û|¼Œæœ€å¥½ç”¨equals()æ–ÒŽ³•åQŒè€Œæœ€å¥½ä¸è¦ä‹Éç”?=。这ž®±é¿å…了一些ä¸å¿…è¦çš„麻烦。å¦å¤–,声明String的时候,最好用=åQŒè¿™æ ·å°±å¯ä»¥ä½“现String pool的作用了ã€?/FONT>
百æ€ä¸å¾—其解,实在没有办法了,我就一é一é的查PHPçš„æ–‡æ¡£ï¼ŒåŽæ¥¾lˆäºŽåœ¨FAQé‡Œé¢æ‰‘Öˆ°äº†åŽŸå› ï¼ŒåŽŸæ¥æ˜¯å› 为PHP5在默认情况下åQŒä¸å†æä¾›mysql的支æŒï¼Œå¿…须手动的设¾|®ã€?/FONT>
æ–ÒŽ³•是:在PHP.iniæ–‡äšg‹È€‹z»php_mysql.dll扩展åº?æ¤å¤–åQŒè¦ž®†php_mysql.dll拯‚´åˆ°é€‚当çš?%SYSTEMROOT% 目录ä¸?
具体æ–ÒŽ³•åQ?/FONT>
在windows安装目录修改\system32\drivers\etc\hosts:æ–‡äšg
在文仉™‡ŒåŠ ä¸Šä¾‹å¦‚˜q™æ ·çš„å—ŒD?/FONT>
123.456.0.1 abcde
å‰é¢ä¸€ŒDµäØ“IP地å€åQŒåŽé¢äؓ一个ä“Qæ„çš„serveråå—åQŒå¯ä»¥æ˜¯ä»ÀL„的嗽W¦ä¸²ã€‚ç„¶åŽï¼Œåœ¨æ‰€æœ‰çš„属性文仉™‡Œä½¿ç”¨˜q™ä¸ªåå—。以åŽå†æƒÏx›´æ”¹serveråQŒå°±åªéœ€è¦ä¿®æ”¹hostsæ–‡äšgž®Þp¡Œäº†ã€?/FONT>
å…ˆæ¥çœ‹ä¸€ŒDµä»£ç :
˜q™æ®µä»£ç 看上åŽÕd¾ˆæ™®é€šï¼Œä½†æ˜¯å¦‚æžœç”?.4å’?.5分别¾~–译ž®×ƒ¼šå‡ºçްä¸åŒçš„结果。先æ¥è¯´ç”?.4¾~–译的情况:首先ç”?.4¾~–译åQŒç¼–译器ä¸ä¼šæŠ¥é”™åQŒå¦‚æžœè¿è¡Œçš„è¯ï¼Œå‰é¢ä¸¤ä¸ªè¾“出è¯å¥ä¼šåˆ†åˆ«æ‰“å°â€?åQ?â€ï¼Œè€Œç¬¬ä¸‰ä¸ªä¼šthrow一个ClassCast exception. å› äØ“Dateä¸èƒ½ä¸Žobject比较åQŒä½†æ˜¯äؓ什么能¾~–译通过呢?察看JDKæºä»£ç å°±å¯ä»¥çŸ¥é“了,Date实现了Comparable接å£åQŒè¿™ä¸ªæŽ¥å£ä¸çš„CompareTo()æ–ÒŽ³•çš„å‚æ•°å°±æ˜¯Object。所以Date也ä¸å¾—䏿œ‰ä¸€ä¸ªä»¥Objectä¸ºå‚æ•°çš„CompareTo()æ–ÒŽ³•åQŒä½†æ˜¯è¿™ä¸ªæ–¹æ³•是没有æ„义的,Date应该与Date比较åQŒæ‰€ä»¥Date˜q™ä¸ªClass里颞®±å‡ºçŽîCº†ä¸¤ä¸ªComparaToæ–ÒŽ³•åQŒä¸€ä¸ªæ˜¯ä»¥Dateä¸ºå‚æ•ŽÍ¼Œå¦ä¸€ä¸ªæ˜¯ä»¥Objectä¸ºå‚æ•ŽÍ¼Œ˜q™æ˜¯1.4以å‰åQŒä¸å¾—ä¸é‡‡ç”¨çš„æ–¹æ³•。ä¸ç„¶Datež®±æ²¡æ³•实现Comparable接å£äº†ã€?/FONT>
JDK1.5ä¸Generics的出现解决了˜q™ä¸ªé—®é¢˜åQŒå¦‚果看1.5ä¸Date¾cÈš„æºä»£ç çš„è¯ï¼Œž®×ƒ¼šå‘çŽ°å®ƒåªæœ‰ä¸€ä¸ªCompareTo()æ–ÒŽ³•了,那它怎么æ¥å®žçްComparable接å£å‘¢ï¼Œ˜q™å°±æ˜¯Generics的功劳了。在Date声明æ—Óž¼Œå®žçްComparableæŽ¥å£æ˜¯è¿™ä¹ˆå†™çš„:...Comparable
˜q™å°±æ˜¯Generics的好处了ã€?/FONT>
但是˜q˜æœ‰ä¸€ç‚¹å€¼å¾—考虑åQŒå¦‚果我们去掉错误的那一行代ç ,åœ?.5ä¸ç¼–译然åŽè¿è¡Œï¼Œä¼šå‘现还有地方与1.4çš„ä¸åŒã€‚ç¬¬ä¸€è¡Œè¾“å‡ø™¯å¥ä¼šæ‰“å°1åQŒè€Œä¸æ˜?åQŒè¿™è¯´æ˜Ž1.5è®¤äØ“å…ähœ‰ç›¸åŒæ—‰™—´çš„timestampå’Œdate是ä¸åŒçš„åQŒä½†1.4è®¤äØ“å®ƒä»¬ç›¸åŒã€‚我有看了一ä¸?.5å’?.4çš„æºä»£ç åQŒå‘现它们CompareTo(Date ...)的实现方法是ä¸ä¸€æ ïLš„åQŒå¯èƒ½é—®é¢˜å°±å‡ºçŽ°åœ¨è¿™é‡Œã€‚æˆ‘æ²¡æœ‰è¯•ç€åŽ»è¯»å®ƒçš„ä»£ç åQŒç‰æœ‰æ—¶é—ß_¼Œä¸€å®šå¥½å¥½ç ”½I¶ä¸€ä¸‹ã€?/FONT>
最åŽï¼Œ˜q˜æœ‰ä¸€ä¸ªé—®é¢˜ï¼Œå¦‚æžœç”?.5¾~–译òq¶è¿è¡Œï¼Œä¼šthrow一个ClassCastExceptionåQŒè€Œç”¨1.4则ä¸ä¼šå‡ºçŽ°è¿™ä¸ªé—®é¢˜ã€‚æˆ‘æƒŒ™¿™æ˜¯å› 为timestamp¾l§æ‰¿äº†Dateçš„CompareTo()æ–ÒŽ³•åQŒæ‰€ä»¥ä¸€ä¸ªtimestampž®±å¯ä»¥ä¸ŽDate比较了,但是应用了Generics以厘q™ç§æƒ…况是ä¸å…许的,而且代ç 也没有特ŒDŠå¤„ç†ï¼Œå› 椞®×ƒ¼šæœ‰Exception了。看æ¥Generics也会带æ¥ä¸€äº›å…¶ä»–的问题ã€?/FONT>
我想˜q™ç§æƒ…况是å¯ä»¥é¿å…çš„åQŒåŽŸåˆ™å°±æ˜¯åªæ¯”较å…ähœ‰ç›¸åŒ¾cÕdž‹çš„两个对象,而ä¸ä¸Žå…¶çˆ¶ç±»æˆ–å¾cÀL¯”较。如果必™åÀL¯”较的è¯ï¼Œä¹Ÿåº”该用相应的方法è{åŒ–äØ“ç›¸åŒçš„ç±»åQŒå†˜q›è¡Œæ¯”较ã€?/FONT>