дJavaÒ²ÓÐnÄêÁË£¬ÏÖÔÚ»¹ÊÇÓв»ÉٵϵµÄ´úÂëϰ¹ß£¬Ò²Í¨¹ýѧϰ±ðÈ˵ĴúÂëѧµ½Á˲»ÉٺõÄϰ¹ß¡£ÕâÆªÎÄÕÂÖ÷ÒªÊÇÕûÀíµÄ×ÊÁÏ¡£Áô¸ø×Ô¼º×ö¸ö¾¯½ä£¬ÌáʾÒÔºóд´úÂëµÄʱºò×¢Ò⣡ÔÚÎÄÕµĺóÃæ£¬»áÌṩÕûÀíµÄÔ²ÄÁÏÏÂÔØ¡£
Ò»¡¢ÀàºÍ¶ÔÏóʹÓü¼ÇÉ
1¡¢¾¡Á¿ÉÙÓÃnewÉú³ÉжÔÏó
ÓÃnew´´½¨ÀàµÄʵÀýʱ£¬¹¹ÔìÓêÊýÁ´ÖÐËùÓй¹Ô캯Êý¶¼»á±»×Ô¶¯µ÷Ó㬲Ù×÷ËٶȽÏÂý¡£ÔÚijЩʱºò¿É¸´ÓÃÏÖÓжÔÏó¡£±ÈÈçÔÚ½øÐдóÁ¿St
rillg²Ù×÷ʱ£¬¿ÉÓÃStringBuffer¦´úÌæStringÀ࣬ÒÔ±ÜÃâÉú³É´óÁ¿µÄ¶ÔÏó¡£Óà new¹Ø¼ü´Ê´´½¨ÀàµÄʵÀýʱ£¬¹¹Ô캯ÊýÁ´ÖеÄËùÓй¹Ô캯Êý¶¼»á±»×Ô¶¯µ÷Óᣵ«Èç¹ûÒ»¸ö¶ÔÏóʵÏÖÁË
Cloneable ½Ó¿Ú£¬ÎÒÃÇ¿ÉÒÔµ÷ÓÃËýµÄ clone() ·½·¨¡£clone()·½·¨²»»áµ÷ÓÃÈκÎÀ๹Ô캯Êý¡£
ÏÂÃæÊÇ Factory ģʽµÄÒ»¸öµäÐÍʵÏÖ¡£
public static Credit getNewCredit()
{
return new Credit();
} |
¸Ä½øºóµÄ´úÂëʹÓà clone() ·½·¨£¬
private static Credit BaseCredit = new Credit(); public static Credit getNewCredit() { return (Credit)BaseCredit.clone(); } |
2¡¢Ê¹ÓÃclone()·½·¨Éú³ÉжÔÏó
Èç¹ûÒ»¸ö¶ÔÏóʵÏÖCloneable½Ó¿Ú£¬¾Í¿ÉÒÔµ÷ÓÃËüµÄclone()·½·¨¡£clone()·½·¨²»»áÀáÓÃÈκÎÀ๹Ô캯Êý£¬±ÈʹÓÃnew·½·¨´´½¨ÊµÀýËÙ¶ÈÒª¿ì¡£
3¡¢¾¡Á¿Ê¹Óþֲ¿±äÁ¿£¨Õ»±äÁ¿£©
µ÷Ó÷½·¨Ê±´«µÝµÄ²ÎÊý¼°µ÷ÓÃÖд´½¨µÄÁÙʱ±äÁ¿±£´æÔÚÕ»(Stack)ÖУ¬ËٶȽϿ졣ÆäËû±äÁ¿£¬È羲̬±äÁ¿¡¢ÊµÀý±äÁ¿¶¼ÔÚ¶Ñ(HeaP)Öд´½¨£¬ËٶȽÏÂý¡£·ÃÎʾ²Ì¬±äÁ¿ºÍʵÀý±äÁ¿½«»á±È·ÃÎʾֲ¿±äÁ¿¶àºÄ·Ñ
2-3 ¸öʱÖÓÖÜÆÚ¡£Èç¹ûÒ»¸ö±äÁ¿ÐèÒª¾³£·ÃÎÊ£¬ÄÇôÄã¾ÍÐèÒª¿¼ÂÇÕâ¸ö±äÁ¿µÄ×÷ÓÃÓòÁË¡£static? local?»¹ÊÇʵÀý±äÁ¿£¿
µ÷Ó÷½·¨Ê±´«µÝµÄ²ÎÊýÒÔ¼°ÔÚµ÷ÓÃÖд´½¨µÄÁÙʱ±äÁ¿¶¼±£´æÔÚÕ»£¨Stack£©ÖУ¬ËٶȽϿ졣ÆäËû±äÁ¿£¬È羲̬±äÁ¿£¬ÊµÀý±äÁ¿µÈ£¬¶¼ÔÚ¶Ñ£¨Heap£©Öд´½¨£¬ËٶȽÏÂý¡£
Àý×Ó£º
public class usv { void getsum (int[] values) { for (int i=0; i < value.length; i++) { _sum += value[i]; // violation. } } void getsum2 (int[] values) { for (int i=0; i < value.length; i++) { _staticsum += value[i]; } } private int _sum; private static int _staticsum; } |
¸üÕý£ºÈç¹û¿ÉÄÜ£¬ÇëʹÓþֲ¿±äÁ¿×÷ΪÄã¾³£·ÃÎʵıäÁ¿¡£ Äã¿ÉÒÔ°´ÏÂÃæµÄ·½·¨À´ÐÞ¸Ä
getsum()·½·¨£º
void getsum (int[] values) { int sum = _sum; // temporary local variable. for (int i=0; i < value.length; i++) { sum += value[i]; } _sum = sum; |
4¡¢¼õÉÙ·½·¨µ÷ÓÃ
ÃæÏò¶ÔÏóÉè¼ÆµÄÒ»¸ö»ù±¾×¼ÔòÊÇͨ¹ý·½·¨¼ä½Ó·ÃÎʶÔÏóµÄÊôÐÔ£¬µ«·½·¨µ÷ÓûáÕ¼Óá¤Ð©¿ªÏú·ÃÎÊ¡£¿ÉÒÔ±ÜÃâÔÚͬһ¸öÀàÖÐͨ¹ýѵÖݺ¯Êý»ò·½·¨(get»òset)À´ÉèÖûòµ÷ÓøöÔÏóµÄÔÖÀý±äÁ¿£¬Õâ±ÈÖ±½Ó·ÃÎʱäÁ¿ÒªÂý¡£ÎªÁ˼õÉÙ·½·¨µ÷Ó㬿ÉÒÔ½«·½·¨ÖеĴúÂë¸´ÖÆµ½µ÷Ó÷½·¨µÄµØ·½£¬±ÈÈç´óÁ¿µÄÑ»·ÖУ¬ÕâÑù¿ÉÒÔ½ÚÊ¡·½·¨µ÷ÓõĿªÏú¡£µ«´øÀ´ÐÔÄÜÌáÉýµÄͬʱ»áÎþÉü´úÂëµÄ¿É¶ÁÐÔ£¬¿É¸ù¾Ýʵ¼ÊÐèҪƽºâÁ½Õß¹ØÏµ¡£
5¡¢Ê¹ÓÃfinalÀàºÍfinal¡¢static¡¢private·½·¨
´øÓÐfinalÐÞÊηûµÄÀàÊDz»¿ÉÅÉÉúµÄ¡£Èç¹ûÖ¸¶¨Ò»¸öÀàΪfinaI£¬Ôò¸ÃÀàËùÓеķ½·¨¶¼ÊÇfinal¡£JAVA±àÕÏÆ÷»áѰÕÒ»ú»áÄÚÁª(inIine)ËùÓеÄfinal·½·¨¡£´Ë¾ÙÄܹ»ÌáÉý³ÌÐòÐÔÄÜ¡£Ê¹ÓÃfinal¡¢static¡¢privateµÄ·½·¨ÊDz»Äܱ»¸²¸ÇµÄ£¬JAVA²»ÐèÒªÔÚïûÐòÔËÐеÄʱºò¶¯Ì¬¹ØÁªÊµÏÖ·½·¨£¬´Ó¶ø½ÚÊ¡ÁËÔËÐÐʱ¼ä¡£
´øÓÐ final ÐÞÊηûµÄÀàÊDz»¿ÉÅÉÉúµÄ¡£ÔÚ JAVAºËÐÄ APIÖУ¬ÓÐÐí¶àÓ¦ÓÃ
final µÄÀý×Ó£¬ÀýÈç java.lang.String¡£Îª String ÀàÖ¸¶¨ final ·ÀÖ¹ÁËʹÓÃÕ߸²¸Ç
length()·½·¨¡£ÁíÍ⣬Èç¹ûÒ»¸öÀàÊÇ final µÄ£¬Ôò¸ÃÀàËùÓз½·¨¶¼ÊÇ final µÄ¡£java
±àÒëÆ÷»áѰÕÒ»ú»áÄÚÁª£¨inline£©ËùÓеÄfinal ·½·¨£¨ÕâºÍ¾ßÌåµÄ±àÒëÆ÷ʵÏÖÓйأ©¡£´Ë¾ÙÄܹ»Ê¹ÐÔÄÜÆ½¾ùÌá¸ß
50%¡£
6¡¢È÷ÃÎÊʵÀýÄÚ±äÁ¿µÄ getter/setter ·½·¨±ä³É¡±final¡±
¼òµ¥µÄ getter/setter ·½·¨Ó¦¸Ã±»ÖÃ³É final£¬Õâ»á¸æËß±àÒëÆ÷£¬Õâ¸ö·½·¨²»»á±»ÖØÔØ£¬ËùÒÔ£¬¿ÉÒÔ±ä³É¡±inlined¡±
Àý×Ó£º
class maf { public void setsize (int size) { _size = size; } private int _size; } |
¸üÕý£º
class daf_fixed { final public void setsize (int size) { _size = size; } private int _size; } |
7¡¢±ÜÃâ²»ÐèÒªµÄ instanceof ²Ù×÷
Èç¹û×ó±ßµÄ¶ÔÏóµÄ¾²Ì¬ÀàÐ͵ÈÓÚÓұߵģ¬instanceof ±í´ïʽ·µ»ØÓÀԶΪ
true¡£
Àý×Ó£º
public class uiso { public uiso () {} } class dog extends uiso { void method (dog dog, uiso u) { dog d = dog; if (d instanceof uiso) // always true. system.out.println("dog is a uiso"); uiso uiso = u; if (uiso instanceof object) // always true. system.out.println("uiso is an object"); } } |
¸üÕý£ºÉ¾µô²»ÐèÒªµÄ instanceof ²Ù×÷¡£
class dog extends uiso { void method () { dog d; system.out.println ("dog is an uiso"); system.out.println ("uiso is an uiso"); } } |
8¡¢±ÜÃâ²»ÐèÒªµÄÔìÐͲÙ×÷
ËùÓеÄÀà¶¼ÊÇÖ±½Ó»òÕß¼ä½Ó¼Ì³Ð×Ô object¡£Í¬Ñù£¬ËùÓеÄ×ÓÀàÒ²¶¼Òþº¬µÄ¡°µÈÓÚ¡±Æä¸¸Àà¡£ÄÇô£¬ÓÉ×ÓÀàÔìÐÍÖÁ¸¸ÀàµÄ²Ù×÷¾ÍÊDz»±ØÒªµÄÁË¡£
Àý×Ó£º
class unc { string _id = "unc"; } class dog extends unc { void method () { dog dog = new dog (); unc animal = (unc)dog; // not necessary. object o = (object)dog; // not necessary. } } |
¸üÕý£º
class dog extends unc { void method () { dog dog = new dog(); unc animal = dog; object o = dog; } } |
9.¾¡Á¿ÖØÓöÔÏó¡£
ÌØ±ðÊÇ String ¶ÔÏóµÄʹÓÃÖУ¬³öÏÖ×Ö·û´®Á¬½ÓÇé¿öʱӦʹÓà StringBuffer
´úÌæ£¬ÓÉÓÚϵͳ²»½öÒª»¨Ê±¼äÉú³É¶ÔÏó£¬ÒÔºó¿ÉÄÜ»¹ÐèÒª»¨Ê±¼ä¶ÔÕâЩ¶ÔÏó½øÐÐÀ¬»ø»ØÊպʹ¦Àí¡£Òò´ËÉú³É¹ý¶àµÄ¶ÔÏó½«»á¸ø³ÌÐòµÄÐÔÄÜ´øÀ´ºÜ´óµÄÓ°Ïì¡£
10¡¢²»ÒªÖظ´³õʼ»¯±äÁ¿¡£
ĬÈÏÇé¿öÏ£¬µ÷ÓÃÀàµÄ¹¹Ô캯Êýʱ£¬java »á°Ñ±äÁ¿³õʼ»¯³ÉÈ·¶¨µÄÖµ£¬ËùÓеĶÔÏó±»ÉèÖóÉnull£¬ÕûÊý±äÁ¿ÉèÖóÉ
0£¬float ºÍ double ±äÁ¿ÉèÖÃ³É 0.0£¬Âß¼ÖµÉèÖÃ³É false¡£µ±Ò»¸öÀà´ÓÁíÒ»¸öÀàÅÉÉúʱ£¬ÕâÒ»µãÓÈÆäÓ¦¸Ã×¢Ò⣬ÒòΪÓÃ
new ¹Ø¼ü×Ö´´½¨Ò»¸ö¶ÔÏóʱ£¬¹¹Ô캯ÊýÁ´ÖеÄËùÓй¹Ô캯Êý¶¼»á±»×Ô¶¯µ÷ÓᣠÕâÀïÓиö×¢Ò⣬¸ø³ÉÔ±±äÁ¿ÉèÖóõʼֵµ«ÐèÒªµ÷ÓÃÆäËû·½·¨µÄʱºò£¬×îºÃ·ÅÔÚÒ»¸ö·½·¨±ÈÈçinitXXX()ÖУ¬ÒòΪֱ½Óµ÷ÓÃij·½·¨¸³Öµ¿ÉÄÜ»áÒòΪÀàÉÐδ³õʼ»¯¶øÅ׿ÕÖ¸ÕëÒì³££¬public
int state = this.getState();
11¡¢²»Òª¹ý·Ö´´½¨¶ÔÏó
¹ý·ÖµÄ´´½¨¶ÔÏó»áÏûºÄϵͳµÄ´óÁ¿Äڴ棬ÑÏÖØÊ±£¬»áµ¼ÖÂÄÚ´æÐ¹Â©£¬Òò´Ë£¬±£Ö¤¹ýÆÚµÄ¶ÔÏóµÄ¼°Ê±»ØÊÕ¾ßÓÐÖØÒªÒâÒå¡£
JVM µÄ GC²¢·ÇÊ®·ÖÖÇÄÜ£¬Òò´Ë½¨ÒéÔÚ¶ÔÏóʹÓÃÍê±Ïºó£¬ÊÖ¶¯ÉèÖÃ³É null¡£
¶þ¡¢Java I£¯O¼¼ÇÉ
I£¯OÐÔÄܳ£³£ÊÇÓ¦ÓóÌÐòÐÔÄÜÆ¿¾±£¬ÓÅ»¯I£¯OÐÔÄܾÍÏԵü«ÎªÏµÒª¡£ÔÚ½øÐÐI£¯0²Ù×÷ʱ£¬Ää×ñÑÒÔÏÂÔÔò£º¾¡¿ÉÄÜÉٵķÃÎÊ´ÅÅÌ£»¾¡¿ÉÄÜÉÙµÄI·½ÎʵײãµÄ²Ù×÷ϵͳ£»¾¡¿ÉÄÜÉٵķ½·¨µ÷Ó㻾¡¿ÉÄÜÉÙ´¦Àí¸ö±ðµÄ´¦Àí×Ö½ÚºÍ×Ö·û¡£»ùÓÚÒÔÉÏÔÔò£¬¿ÉÒÔͨ¹ýÒÔϼ¼ÇÉÌá¸ßI£¯OËÙ¶È£º
1¡¢Ê¹ÖÝ»º³åÌá¸ßI£¯OÐÔÄÜ¡£
³£ÓõÄʵÏÖ·½·¨ÓÐÒÔÏÂ2ÖÖ£ºÊ¹ÓÃÓÃÓÚ×Ö·ûµÄBufferedReaderºÍÓÃÓÚÄþ½ÚµÄBufferedlnputStreamÀ࣬»òÕßʹÓÿé¶ÁÈ¡·½·¨´Î¶Áȡһ´ó¿éÊý¾Ý¡£
2¡¢lnputStream±ÈReader¸ßЧ£¬OutputStream±ÈWriter¸ßЧ¡£
µ±Ê¹ÓÃUnicode×Ö·û´®Ê±£¬WriteÀàµÄ¿ªÏú±È½Ï´ó¡£ÒòΪËüҪʵUoicodeµ½×Ö½Ú(byte)µÄת»»¡£Òò´Ë£¬Èç¹û¿ÉÄܵϰ£¬ÔÚʹÓÃ
WriteÀà֮ǰ¾ÍʵÏÖת»»»òÓÃOutputStreamÀà´úÌæWriter¦À´Ê¹Óá£
3¡¢ÔÚÊʵ±µÄʱºòÓÃbyteÌæ´úchar¡£
1¸öcharÓÃ2¸ö×Ö½Ú±£´æ×Ö·û£¬¶øbyteÖ»ÐèÒª1¸ö£¬Òò´ËÓÃbyte±£´æ×Ö·ûÏûºÄµÄÄÚ´æºÍÐèÒªÖ´ÐеĻúÆ÷Ö¸Áî¸üÉÙ¡£¸üÖØÒªµÄÊÇ£¬ÓÃbyte±ÜÃâÁ˽øÐÐUnicodeת»»¡£Òò´Ë£¬Èç¹ûî®Äܵϰ£¬Ó¦¾¡Á¿Ê¹ÓÃbyteÌæ´úchar¡£
4¡¢Óлº³åµÄ¿é²Ù×÷10Òª±È»º³åµÄÁ÷×Ö·ûIO¿ì¡£
¶ÔÓÚ×Ö·ûIO£¬ËäÈ»»º³åÁ÷±ÜÃâÁËÿ´Î¶ÁÈ¡×Ö·ûʱµÄϵͳµ÷ÓÿªÏú£¬µ«ÈÔÐèÒªÒ»´Î»ò¶à´Î·½·¨µ÷Óᣴø»º³åµÄ¿é10±È»º³åÁ÷IO¿ì2µ½4±¶£¬±ÈÎÞ»º³åµÄIO¿ì4µ½40±¶¡£
5¡¢ÐòÁл¯Ê±£¬Ê¹ÓÃÔ×ÓÀàÐÍ¡£
µ±ÐòÁл¯Ò»¸öÀà»ò¶ÔÏóʱ£¬¶Ô¸ÉÄÇЩÔ×ÓÀàÐÍ(atomic)»ò¿ÉÒÔÖØ½¨µÄÔªËØ£¬Òª±êʶΪtransientÀàÐÍ£¬ÕâÑù¾Í²»ÓÃÿһ´Î¶¼½øÐÐÐòÁл¯¡£Èç¹ûÕâíÎÐòÁл¯µÄ¶ÔÏóÒªÔÚÍøÂçÉÏ´«Ê䣬ÕâһССµÄ¸Ä±ä¶ÔÐÔÄÜ»áÓкܴóµÄÌá¸ß¡£
6¡¢ÔÚfinally ¿éÖйرÕstream
³ÌÐòÖÐʹÓõ½µÄ×ÊÔ´Ó¦µ±±»ÊÍ·Å£¬ÒÔ±ÜÃâ×ÊԴй©¡£Õâ×îºÃÔÚ finally
¿éÖÐÈ¥×ö¡£²»¹Ü³ÌÐòÖ´ÐеĽá¹ûÈçºÎ£¬finally ¿é×ÜÊÇ»áÖ´Ðеģ¬ÒÔÈ·±£×ÊÔ´µÄÕýÈ·¹Ø±Õ¡£
Àý×Ó£º
import java.io.*; public class cs { public static void main (string args[]) { cs cs = new cs (); cs.method (); } public void method () { try { fileinputstream fis = new fileinputstream ("cs.java"); int count = 0; while (fis.read () != -1) count++; system.out.println (count); fis.close (); } catch (filenotfoundexception e1) { } catch (ioexception e2) { } } } |
¸üÕý£º
ÔÚ×îºóÒ»¸ö catch ºóÌí¼ÓÒ»¸ö finally ¿é
7¡¢SQLÓï¾ä
ÔÚ java+Oracle µÄÓ¦ÓÃϵͳ¿ª·¢ÖУ¬java ÖÐÄÚǶµÄ SQL
ÓïÑÔÓ¦¾¡Á¿Ê¹ÓôóдÐÎʽ£¬ÒÔ¼õÉÙOracle ½âÎöÆ÷µÄ½âÎö¸ºµ£¡£
8¡¢¾¡ÔçÊÍ·Å×ÊÔ´
java ±à³Ì¹ý³ÌÖУ¬½øÐÐÊý¾Ý¿âÁ¬½Ó£¬I/O Á÷²Ù×÷£¬ÔÚʹÓÃÍê±Ïºó£¬¼°Ê±¹Ø±ÕÒÔÊÍ·Å×ÊÔ´¡£ÒòΪ¶ÔÕâЩ´ó¶ÔÏóµÄ²Ù×÷»áÔì³Éϵͳ´óµÄ¿ªÏú¡£
Èý¡¢Òì³£(Exceptions)ʹÓü¼ÇÉ
JAVAÓïÑÔÖÐÌṩÁËtry£¯catchÀ´¿ª·¢·½±ãÓû§²¶×½Òì³££¬½øÐÐÒì³£µÄ´¦Àí¡£µ«ÊÇÈç¹ûʹÓò»µ±£¬Ò²»á¸øJAvA³ÌÐòµÄÐÔÄÜ´øÀ´Ó°Ïì¡£Òò´Ë£¬Òª×¢ÒâÒÔ϶ùµã¡£É÷ÓÃÒì³££¬Òì³£¶ÔÐÔÄܲ»Àû¡£Å׳öÒì³£Ê×ÏÈÒª´´½¨Ò»¸öеĶÔÏó¡£Throwable½Ó¿ÚµÄ¹¹Ô캯Êýµ÷ÓÃÃûΪfillInStackTrace()µÄ±¾µØ(Native)·½·¨filllnStackTrace()·½·¨¼ì²é¶ÑÕ»£¬ÊÕ¼¯µ÷Óøú×ÙÐÅÏ¢¡£Ö»ÒªÓÐÒì³£±»Å׳ö£¬VM¾Í±ØÐëµ÷Õûµ÷ÓöÑÕ»¡£
1¡¢±ÜÃâʹÓÃÒì³£À´¿ØÖƳÌÐòÁ÷³Ì
Èç¹û¿ÉÒÔÓÃif¡¢whileµÈÂß¼Óï¾äÀ´´¦Àí£¬ÄÇô¾Í¾¡¿ÉÄܵIJ»ÓÃtry£¯catchÓï¾ä¡£Å׳öÒì³£Ê×ÏÈÒª´´½¨Ò»¸öеĶÔÏó¡£Throwable
½Ó¿ÚµÄ¹¹Ô캯Êýµ÷ÓÃÃûΪ fillInStackTrace()µÄ±¾µØ·½·¨£¬fillInStackTrace()·½·¨¼ì²éÕ»£¬ÊÕ¼¯µ÷Óøú×ÙÐÅÏ¢¡£Ö»ÒªÓÐÒì³£±»Å׳ö£¬VM
¾Í±ØÐëµ÷Õûµ÷ÓÃÕ»£¬ÒòΪÔÚ´¦Àí¹ý³ÌÖд´½¨ÁËÒ»¸öеĶÔÏó¡£ Òì³£Ö»ÄÜÓÃÓÚ´íÎó´¦Àí£¬²»Ó¦¸ÃÓÃÀ´¿ØÖƳÌÐòÁ÷³Ì¡£
2¡¢¾¡¿ÉÄÜÖØÓÃÒì³£
ÔÚ±ØÐëÒª½øÐÐÒì³£µÄ´¦Àíʱ£¬Òª¾¡¿ÉÄܵÄÖØÓÃÒѾ´æÔÚµÄÒì³£¶ÔÏó¡£ÒòΪÔÚÒì³£µÄ´¦ÀíÖУ¬Éú³É¸öÒì³£¶ÔÏóÒªÏûºÄµô´ó²¿·ÖµÄʱ¼ä¡£
3¡¢½«try/catch ¿éÒÆ³öÑ»·
°Ñtry/catch¿é·ÅÈëÑ»·ÌåÄÚ£¬»á¼«´óµÄÓ°ÏìÐÔÄÜ£¬Èç¹û±àÒë jit
±»¹Ø±Õ»òÕßÄãËùʹÓõÄÊÇÒ»¸ö²»´ø jit µÄjvm£¬ÐÔÄܻὫϽµ21%Ö®¶à!
Àý×Ó£º
import java.io.fileinputstream; public class try { void method (fileinputstream fis) { for (int i = 0; i < size; i++) { try { // violation _sum += fis.read(); } catch (exception e) {} } } private int _sum; } |
¸üÕý£º½« try/catch¿éÒÆ³öÑ»·
void method (fileinputstream fis) { try { for (int i = 0; i < size; i++) { _sum += fis.read(); } } catch (exception e) {} } |
ËÄ¡¢Ïß³ÌʹÓü¼ÇÉ
1¡¢ÔÚʹÓôóÁ¿Ïß³Ì(Threading)µÄ³¡ºÏʹÓÃÏ̳߳عÜÀí
Éú³ÉºÍÆô¶¯ÐÂÏß³ÌÊǸöÏà¶Ô½ÏÂýµÄ¹ý³Ì£¬Éú³ÉÈËÁ¿ÐÂÏ̻߳áÑÏÖØÓ°ÏìÓ¦J_}j³ÌÐòÐÔÄÜ¡£Í¨¹ýʹÓÃÏ̳߳أ¬ÓÉÏ̳߳عÜÀíÆ÷(thread
pool manager)À´Éú³ÉÐÂÏ̻߳ò·ÖÅäÏÖÓÐỊ̈߳¬°ØÊ¡Éú³ÉÏ̵߳Ľм䡣
2¡¢·ÀÖ¹¹ý¶àµÄͬ²½
²»±ØÒªµÄͬ²½³£³£»áÔì³É³ÌÐòÐÔÄܵÄϽµ£¬µ÷ÓÃͬ²½·½·¨±Èµ÷Ó÷Çͬ²½·½·¨Òª»¨·Ñ¸ü¶àµÄʱ¼ä¡£Èç¹û³ÌÐòÊǵ¥Ị̈߳¬ÔòûÓбØÒªÊ¹ÓÃͬ²½¡£
3¡¢Í¬²½·½·¨¶ø²»ÒªÍ¬²½Õû¸ö´úÂë¶Î
¶Ôij¸ö·½·¨»òº¯Êý½øÐÐͬ²½±È¶ÔÕû¸ö´úÂë¶Î½øÐÐͬ²½µÄÐÔÄÜÒªºÃ¡£
4¡¢ÔÚ×·ÇóËٶȵij¡ºÏ£¬ÓÃArrayListºÍHashMap´úÌæVectorºÍHashtable
VectorºÍHashtableʵÏÖÁËͬ²½ÒÔÌá¸ßḬ̈߳²È«ÐÔ£¬µ«ËٶȽÏûÓÐʵÏÖͬ²½µÄArrayListºÍHa
shMapÒªÂý£¬¿ÉÒÔ¸ù¾ÝÐèҪѡÔñʹÓõÄÀà¡£
5¡¢Ê¹ÓÃnotify()¶ø²»ÊÇnotifyAll()
ʹÓÃÄĸö·½·¨ÒªÈ¡¾öÓÚ³ÌÐòµÄû¼Æ£¬µ«Ó¦¾¡¿ÉÄÜʹÓÃnotify()£¬ÒòΪnotify()Ö»»½ÐѵȴýÖ¸¶¨¶ÔÏóµÄỊ̈߳¬±È»½ÐÑËùÓеȴýÏßïûµÄnotifyAll0Ëٶȸü¿ì¡£
6¡¢²»ÒªÔÚÑ»·Öе÷Óà synchronized(ͬ²½)·½·¨
·½·¨µÄͬ²½ÐèÒªÏûºÄÏ൱´óµÄ×ÊÁÏ£¬ÔÚÒ»¸öÑ»·Öе÷ÓÃËü¾ø¶Ô²»ÊÇÒ»¸öºÃÖ÷Òâ¡£
Àý×Ó£º
import java.util.vector; public class syn { public synchronized void method (object o) { } private void test () { for (int i = 0; i < vector.size(); i++) { method (vector.elementat(i)); // violation } } private vector vector = new vector (5, 5); } |
¸üÕý£º²»ÒªÔÚÑ»·ÌåÖе÷ÓÃͬ²½·½·¨£¬Èç¹û±ØÐëͬ²½µÄ»°£¬ÍƼöÒÔÏ·½Ê½£º
import java.util.vector; public class syn { public void method (object o) { } private void test () { synchronized{//ÔÚÒ»¸öͬ²½¿éÖÐÖ´ÐзÇͬ²½·½·¨ for (int i = 0; i < vector.size(); i++) { method (vector.elementat(i)); } } } private vector vector = new vector (5, 5); } |
7¡¢µ¥Ïß³ÌÓ¦¾¡Á¿Ê¹Óà HashMap, ArrayList¡£
³ý·Ç±ØÒª£¬·ñÔò²»ÍƼöʹÓà HashTable,Vector£¬ËýÃÇʹÓÃÁËͬ²½»úÖÆ£¬¶ø½µµÍÁËÐÔÄÜ¡£
Îå¡¢ÆäËü³£Óü¼ÇÉ
1¡¢Ê¹ÓÃÒÆÎ»²Ù×÷Ìæ´ú³Ë³ý·¨²Ù×÷¿ÉÒÔ¼«´óµØÌá¸ßÐÔÄÜ
"/"ÊÇÒ»¸öºÜ¡°°º¹ó¡±µÄ²Ù×÷£¬Ê¹ÓÃÒÆÎ»²Ù×÷½«»á¸ü¿ì¸üÓÐЧ¡£
Àý×Ó£º
public class sdiv { public static final int num = 16; public void calculate(int a) { int div = a / 4; // should be replaced with "a >> 2". int div2 = a / 8; // should be replaced with "a >> 3". int temp = a / 3; int mul = a * 4; // should be replaced with "a << 2". int mul2 = 8 * a; // should be replaced with "a << 3". int temp2 = a * 3; } } |
¸üÕý£º
public class sdiv { public static final int num = 16; public void calculate(int a) { int div = a >> 2; int div2 = a >> 3; int temp = a / 3; // ²»ÄÜת»»³ÉÎ»ÒÆ²Ù×÷ int mul = a << 2; int mul2 = a << 3; int temp = a * 3; // ²»ÄÜת»» } } |
PS£º³ý·ÇÊÇÔÚÒ»¸ö·Ç³£´óµÄÑ»·ÄÚ£¬ÐÔÄܷdz£ÖØÒª£¬¶øÇÒÄãºÜÇå³þÄã×Ô¼ºÔÚ×öʲô£¬·½¿ÉʹÓÃÕâÖÖ·½·¨¡£·ñÔòÌá¸ßÐÔÄÜËù´øÀ´µÄ³ÌÐòÍí¶ÁÐԵĽµµÍ½«ÊDz»ºÏËãµÄ¡£
2¡¢¶ÔVectorÖÐ×îºóλÖõÄÌí¼Ó¡¢É¾³ý²Ù×÷ÒªÔ¶Ô¶¿ìÓÚÛõµÚÒ»¸öÔªËØµÄÌí¼Ó¡¢É¾³ý²Ù×÷
3¡¢µ±¸´ÖÆÊý×éʱ£¬Ê¹ÓÃSystem.arraycop()·½·¨
Àý×Ó£º
public class irb { void method () { int[] array1 = new int [100]; for (int i = 0; i < array1.length; i++) { array1 [i] = i; } int[] array2 = new int [100]; for (int i = 0; i < array2.length; i++) { array2 [i] = array1 [i]; // violation } } } |
¸üÕý£º
public class irb { void method () { int[] array1 = new int [100]; for (int i = 0; i < array1.length; i++) { array1 [i] = i; } int[] array2 = new int [100]; system.arraycopy(array1, 0, array2, 0, 100); } } |
4¡¢Ê¹Óø´ºÏ¸³ÖµÔËËã·û
a=a+bºÍa+bס±àÒëʱ»á²úÉú²»Í¬JAVA×ÖÆæÂ룬ºóÕ߻ؿìÓÚǰÕß¡£¸Ô´Ë£¬Ê¹ÓÃ+=¡¢-=¡¢+=¡¢£¯=µÈ¸´Ì¨¸³ÖµÔËËã·û»áʹÔËËãËÙ¶ÈÉÔÓÐÌáÉý¡£
5¡¢ÓÃint¶ø²»ÓÃÆäËü»ù±¾ÀàÐÍ
¶ÔintÀàÀçµÄ²Ù×÷ͨ³£±ÈÆäËü»ù±¾ÀàÐÍÒª¿ì£¬Òò´Ë¾¡Á¿Ê¹ÓÃintÀàÐÍ¡£
6¡¢ÔÚ½øÐÐÊý¾Ý¿âÁ¬½ÓºÍÍøÂçÁ¬½ÓʱʹÓÃÁ¬½Ó³Ø
ÕâÀàÁ¬½ÓÍùÍù»áºÄ·Ñ´óÁ¿Ê±¼ä£¬Ó¦¾¡Á¿±ÜÃâ¡£¿ÉÒÔʹÓÃÁ¬½Ó³Ø¼¼Êõ£¬¸´ÓÃÏÖÓÐÁ¬½Ó¡£
7¡¢ÓÃѹËõ¼Ó¿ìÍøÂç´«ÊäËÙ¶ÈÒ»ÖÖ³£Ó÷½·¨ÊǰÑÏà¹ØÎļþ´ò°üµ½Ò»¸öjarÎļþÖС£
ÓÃÒ»¸öJarÎļþ·¢ËͶà¸öÎļþ»¹½ÐÒÔ±ÜÃâÿ¸öÎļþ´ò¿ªºÍ¹Ø±ÕÍøÂçÁ¬½ÓËùÔì³ÉµÄ¿ªÏú¡£
8¡¢ÔÚÊý¾Ý¿âÓ¦ÓóÌÐòÖÐʹÓÃÅú´¦Àí¹¦ÄÜ
¿ÉÒÔÀûÓÃStatementÀàµÄaddBatch()·úl exexuteBatch·¨³ÉÅúµØÌá½»sqlÓï¾ä£¬ÒÔ½ÚÊ¡ÍøÂç´«Ê俪Ïú¡£ÔÚÖ´ÐдóÁ¿ÏàËÆÓï¾äʱ£¬¿ÉÒÔʹÓÃPreParedState¡ªÀ࣬Ëü¿ÉÒÔÒ»´ÎÐÔ±àÒëÓï¾ä²¢¶à´ÎÖ´ÐУ¬ÓòÎÊý×îºóÖ´ÐеÄsqlÓï¾ä¡£
9¡¢Ïû³ýÑ»·ÌåÖв»±ØÒªµÄ´úÂë
ÕâËÆºõÊÇÿ¸ö³ÌÐòÔ±¶¼ÖªµÀµÄ»ù±¾ÔÔò£¬Ã»Óбسö£¬µ«ºÜ¶àÈËÍùÍùºöÂÔһЩϸ½Ú¡£ÈçÏÂÁдúÂ룺
Vector aVector= ...£» for(int i=0£»i<aVector size()£»i++)( System out printlll(aVector elementAt(i)toStringO)£» } |
Õâ¶Î´úÂëÖÐûѻ·Ò»´Î¾ÍÒªµ÷ÓÃaVector.size()·½·¨£¬aVectorµÄ³¤¶È²»±äµÄ»°£¬¿ÉÒÔ¸ÄΪһÏ´úÂ룺
Vector aVector= ...£º int length=aVector size()£» for(int i=0£»i<length£»i++)f System out println(aVector elememAt(i)toStringO)£» ) |
ÕâÑùÏû³ýÁËÿ´Îµ÷ÓÃaVector.size()·½·¨µÄ¿ªÏú¡£
10¡¢Îª'vectors' ºÍ 'hashtables'¶¨Òå³õʼ´óС
jvm Ϊ vector À©³ä´óСµÄʱºòÐèÒªÖØÐ´´½¨Ò»¸ö¸ü´óµÄÊý×飬½«ÔÔÏÈÊý×éÖеÄÄÚÈݸ´ÖƹýÀ´£¬×îºó£¬ÔÏȵÄÊý×éÔÙ±»»ØÊÕ¡£¿É¼û
vector ÈÝÁ¿µÄÀ©´óÊÇÒ»¸öÆÄ·Ñʱ¼äµÄÊ¡£ ͨ³££¬Ä¬È쵀 10 ¸öÔªËØ´óСÊDz»¹»µÄ¡£Äã×îºÃÄÜ׼ȷµÄ¹À¼ÆÄãËùÐèÒªµÄ×î¼Ñ´óС¡£
Àý×Ó£º
import java.util.vector; public class dic { public void addobjects (object[] o) { // if length > 10, vector needs to expand for (int i = 0; i< o.length;i++) { v.add(o); // capacity before it can add more elements. } } public vector v = new vector(); // no initialcapacity. } |
<span style="WHITE-SPACE: pre"> </span><span style="font-size:14px;">¸üÕý£º ×Ô¼ºÉ趨³õʼ´óС¡£ </span> |
public vector v = new vector(20); public hashtable hash = new hashtable(10); |
11¡¢Èç¹ûÖ»ÊDzéÕÒµ¥¸ö×Ö·ûµÄ»°£¬ÓÃcharat()´úÌæstartswith()
ÓÃÒ»¸ö×Ö·û×÷Ϊ²ÎÊýµ÷Óà startswith()Ò²»á¹¤×÷µÄºÜºÃ£¬µ«´ÓÐÔÄܽǶÈÉÏÀ´¿´£¬µ÷ÓÃÓÃ
string api ÎÞÒÉÊÇ´íÎóµÄ!
Àý×Ó£º
public class pcts { private void method(string s) { if (s.startswith("a")) { // violation // ... } } } |
¸üÕý £º½«'startswith()' Ìæ»»³É'charat()'.
public class pcts { private void method(string s) { if ('a' == s.charat(0)) { // ... } } } |
12¡¢ÔÚ×Ö·û´®Ïà¼ÓµÄʱºò£¬Ê¹Óà ' ' ´úÌæ " "£¬Èç¹û¸Ã×Ö·û´®Ö»ÓÐÒ»¸ö×Ö·ûµÄ»°
Àý×Ó£º
public class str { public void method(string s) { string string = s + "d" // violation. string = "abc" + "d" // violation. } } |
¸üÕý£º ½«Ò»¸ö×Ö·ûµÄ×Ö·û´®Ìæ»»³É' '
public class str { public void method(string s) { string string = s + 'd' string = "abc" + 'd' } } |
13¡¢¶ÔÓÚ boolean Öµ£¬±ÜÃâ²»±ØÒªµÄµÈʽÅжÏ
½«Ò»¸ö boolean ÖµÓëÒ»¸ö true ±È½ÏÊÇÒ»¸öºãµÈ²Ù×÷(Ö±½Ó·µ»Ø¸Ã
boolean ±äÁ¿µÄÖµ). ÒÆ×ß¶ÔÓÚboolean µÄ²»±ØÒª²Ù×÷ÖÁÉÙ»á´øÀ´ 2 ¸öºÃ´¦£º
1)´úÂëÖ´Ðеĸü¿ì (Éú³ÉµÄ×Ö½ÚÂëÉÙÁË 5 ¸ö×Ö½Ú)£»
2)´úÂëÒ²»á¸ü¼Ó¸É¾» ¡£
Àý×Ó£º
public class ueq { boolean method (string string) { return string.endswith ("a") == true; // violation } } |
¸üÕý£º
class ueq_fixed { boolean method (string string) { return string.endswith ("a"); } } |
14¡¢¶ÔÓÚ³£Á¿×Ö·û´®£¬ÓÃ'string' ´úÌæ 'stringbuffer'
³£Á¿×Ö·û´®²¢²»ÐèÒª¶¯Ì¬¸Ä±ä³¤¶È¡£
Àý×Ó£º
public class usc { string method () { stringbuffer s = new stringbuffer ("hello"); string t = s + "world!"; return t; } } |
¸üÕý£º
°Ñ stringbuffer »»³É string£¬Èç¹ûÈ·¶¨Õâ¸ö string
²»»áÔÙ±äµÄ»°£¬Õ⽫»á¼õÉÙÔËÐпªÏúÌá¸ßÐÔÄÜ¡£
15¡¢ÓÃ'stringtokenizer' ´úÌæ 'indexof()'
ºÍ'substring()'
×Ö·û´®µÄ·ÖÎöÔںܶàÓ¦ÓÃÖж¼Êdz£¼ûµÄ¡£Ê¹Óà indexof()ºÍ substring()À´·ÖÎö×Ö·û´®ÈÝÒ×µ¼ÖÂ
stringindexoutofboundsexception¡£¶øÊ¹Óà stringtokenizer
ÀàÀ´·ÖÎö×Ö·û´®Ôò»áÈÝÒ×һЩ£¬Ð§ÂÊÒ²»á¸ßһЩ¡£
Àý×Ó£º
public class ust { void parsestring(string string) { int index = 0; while ((index = string.indexof(".", index)) != -1) { system.out.println (string.substring(index, string.length())); } } } |
16¡¢Ê¹ÓÃÌõ¼þ²Ù×÷·ûÌæ´ú"if (cond) else "
½á¹¹
Ìõ¼þ²Ù×÷·û¸ü¼ÓµÄ¼ò½Ý
Àý×Ó£º
public class if { public int method(boolean isdone) { if (isdone) { return 0; } else { return 10; } void method2(boolean istrue) { if (istrue) { _value = 0; } else { _value = 1; <span style="WHITE-SPACE: pre"> </span>} } } |
¸üÕý£º
public class if { public int method(boolean isdone) { return (isdone ? 0 : 10); } void method(boolean istrue) { <span style="WHITE-SPACE: pre"> </span>_value = (istrue ? 0 : 1); // comp <span style="WHITE-SPACE: pre"> </span>} private int _value = 0; } |
17¡¢²»ÒªÔÚÑ»·ÌåÖÐʵÀý»¯±äÁ¿
ÔÚÑ»·ÌåÖÐʵÀý»¯ÁÙʱ±äÁ¿½«»áÔö¼ÓÄÚ´æÏûºÄ
Àý×Ó£º
import java.util.vector; public class loop { void method (vector v) { for (int i=0;i < v.size();i++) { object o = new object(); o = v.elementat(i); } } } |
¸üÕý£º
ÔÚÑ»·ÌåÍⶨÒå±äÁ¿£¬²¢·´¸´Ê¹ÓÃ
import java.util.vector; public class loop { void method (vector v) { object o; for (int i=0;i<v.size();i++) { o = v.elementat(i); } } } |
18¡¢È·¶¨ stringbufferµÄÈÝÁ¿
stringbuffer µÄ¹¹ÔìÆ÷»á´´½¨Ò»¸öĬÈÏ´óС(ͨ³£ÊÇ 16)µÄ×Ö·ûÊý×é¡£ÔÚʹÓÃÖУ¬Èç¹û³¬³öÕâ¸ö´óС£¬¾Í»áÖØÐ·ÖÅäÄڴ棬´´½¨Ò»¸ö¸ü´óµÄÊý×飬²¢½«ÔÏȵÄÊý×鏴֯¹ýÀ´£¬ÔÙ¶ªÆú¾ÉµÄÊý×é¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬Äã¿ÉÒÔÔÚ´´½¨
stringbuffer µÄʱºòÖ¸¶¨´óС£¬ÕâÑù¾Í±ÜÃâÁËÔÚÈÝÁ¿²»¹»µÄʱºò×Ô¶¯Ôö³¤£¬ÒÔÌá¸ßÐÔÄÜ¡£
Àý×Ó£º
public class rsbc { void method () { stringbuffer buffer = new stringbuffer(); // violation buffer.append ("hello"); } } |
¸üÕý£ºÎª stringbuffer Ìṩ´óС¡£
public class rsbc { void method () { stringbuffer buffer = new stringbuffer(max); buffer.append ("hello"); } private final int max = 100; } |
19¡¢²»Òª×ÜÊÇʹÓÃÈ¡·´²Ù×÷·û(!)
È¡·´²Ù×÷·û(!)½µµÍ³ÌÐòµÄ¿É¶ÁÐÔ£¬ËùÒÔ²»Òª×ÜÊÇʹÓá£
Àý×Ó£º
public class dun { boolean method (boolean a, boolean b) { if (!a) return !a; else return !b; } } |
¸üÕý£ºÈç¹û¿ÉÄܲ»ÒªÊ¹ÓÃÈ¡·´²Ù×÷·û(!)
20¡¢ÓëÒ»¸ö½Ó¿Ú ½øÐÐinstanceof ²Ù×÷
»ùÓÚ½Ó¿ÚµÄÉè¼ÆÍ¨³£ÊǼþºÃÊ£¬ÒòΪËüÔÊÐíÓв»Í¬µÄʵÏÖ£¬¶øÓÖ±£³ÖÁé»î¡£Ö»Òª¿ÉÄÜ£¬¶ÔÒ»¸ö¶ÔÏó½øÐÐ
instanceof ²Ù×÷£¬ÒÔÅжÏËüÊÇ·ñijһ½Ó¿ÚÒª±ÈÊÇ·ñijһ¸öÀàÒª¿ì¡£
Àý×Ó£º
public class insof { private void method (object o) { if (o instanceof interfacebase) { } // better if (o instanceof classbase) { } // worse. } } class classbase {} interface interfacebase {} |
21¡¢²ÉÓÃÔÚÐèÒªµÄʱºò²Å¿ªÊ¼´´½¨µÄ²ßÂÔ¡£
ÀýÈ磺
String str="abc"; if(i==1){ list.add(str);} |
Ó¦ÐÞ¸ÄΪ£º
if(i==1){String str="abc"; list.add(str);} |
22¡¢Í¨¹ý StringBuffer µÄ¹¹Ô캯ÊýÀ´É趨ËûµÄ³õʼ»¯ÈÝÁ¿£¬¿ÉÒÔÃ÷ÏÔÌáÉýÐÔÄÜ¡£
StringBuffer µÄĬÈÏÈÝÁ¿Îª 16£¬µ± StringBuffer
µÄÈÝÁ¿´ïµ½×î´óÈÝÁ¿Ê±£¬Ëý»á½«×ÔÉíÈÝÁ¿Ôö¼Óµ½µ±Ç°µÄ 2 ±¶+2£¬Ò²¾ÍÊÇ 2*n+2¡£ÎÞÂÛºÎʱ£¬Ö»Òª StringBuffer
µ½´ïËýµÄ×î´óÈÝÁ¿£¬Ëý¾Í²»µÃ²»´´½¨Ò»¸öеĶÔÏóÊý×飬Ȼºó¸´ÖƾɵĶÔÏóÊý×飬Õâ»áÀ˷Ѻܶàʱ¼ä¡£ËùÒÔ¸øStringBuffer
ÉèÖÃÒ»¸öºÏÀíµÄ³õʼ»¯ÈÝÁ¿Öµ£¬ÊǺÜÓбØÒªµÄ£¡
23¡¢ºÏÀíʹÓà java.util.Vector
Vector Óë StringBuffer ÀàËÆ£¬Ã¿´ÎÀ©Õ¹ÈÝÁ¿Ê±£¬ËùÓÐÏÖÓÐÔªËØ¶¼Òª¸³Öµµ½ÐµĴ洢¿Õ¼äÖС£Vector
µÄĬÈÏ´æ´¢ÄÜÁ¦Îª 10¸öÔªËØ£¬À©Èݼӱ¶¡£ vector.add(index,obj) Õâ¸ö·½·¨¿ÉÒÔ½«ÔªËØ
obj ²åÈëµ½index λÖ㬵« index ÒÔ¼°Ö®ºóµÄÔªËØÒÀ´Î¶¼ÒªÏòÏÂÒÆ¶¯Ò»¸öλÖ㨽«ÆäË÷Òý¼Ó 1£©¡£
³ý·Ç±ØÒª£¬·ñÔò¶ÔÐÔÄܲ»Àû¡£ ͬÑù¹æÔòÊÊÓÃÓÚ remove(int index)·½·¨£¬ÒƳý´ËÏòÁ¿ÖÐÖ¸¶¨Î»ÖõÄÔªËØ¡£½«ËùÓкóÐøÔªËØ×óÒÆ£¨½«ÆäË÷Òý¼õ
1£©¡£·µ»Ø´ËÏòÁ¿ÖÐÒÆ³ýµÄÔªËØ¡£ËùÒÔɾ³ý vector ×îºóÒ»¸öÔªËØÒª±Èɾ³ýµÚ1 ¸öÔªËØ¿ªÏúµÍºÜ¶à¡£É¾³ýËùÓÐÔªËØ×îºÃÓÃ
removeAllElements()·½·¨¡£ Èç¹ûҪɾ³ý vector ÀïµÄÒ»¸öÔªËØ¿ÉÒÔʹÓà vector.remove(obj)£»¶ø²»±Ø×Ô¼º¼ìË÷ÔªËØÎ»Öã¬ÔÙɾ³ý£¬Èç
int index = indexOf£¨obj£©;vector.remove(index)£»
24¡¢²»Òª½«Êý×éÉùÃ÷Ϊ£ºpublic static final
25¡¢HaspMap µÄ±éÀú
Map<String, String[]> paraMap = new HashMap<String, String[]>(); for( Entry<String, String[]> entry : paraMap.entrySet() ) { String appFieldDefId = entry.getKey(); String[] values = entry.getValue(); } |
ÀûÓÃÉ¢ÁÐֵȡ³öÏàÓ¦µÄ Entry ×ö±È½ÏµÃµ½½á¹û£¬È¡µÃ entryµÄÖµÖ®ºóÖ±½ÓÈ¡
keyºÍ value¡£
26¡¢array(Êý×é)ºÍ ArrayList µÄʹÓá£
array Êý×éЧÂÊ×î¸ß£¬µ«ÈÝÁ¿¹Ì¶¨£¬ÎÞ·¨¶¯Ì¬¸Ä±ä£¬ArrayList
ÈÝÁ¿¿ÉÒÔ¶¯Ì¬Ôö³¤£¬µ«ÎþÉüÁËЧÂÊ¡£
27¡¢StringBuffer,StringBuilder µÄÇø±ð
StringBuffer,StringBuilder µÄÇø±ðÔÚÓÚ£ºjava.lang.StringBuffer
Ḭ̈߳²È«µÄ¿É±ä×Ö·ûÐòÁС£Ò»¸öÀàËÆÓÚ String µÄ×Ö·û´®»º³åÇø£¬µ«²»ÄÜÐ޸ġ£StringBuilder
Óë¸ÃÀàÏà±È£¬Í¨³£Ó¦¸ÃÓÅÏÈʹÓà StringBuilder À࣬ÒòΪËýÖ§³ÖËùÓÐÏàͬµÄ²Ù×÷£¬µ«ÓÉÓÚËý²»Ö´ÐÐͬ²½£¬ËùÒÔËٶȸü¿ì¡£ÎªÁË»ñµÃ¸üºÃµÄÐÔÄÜ£¬ÔÚ¹¹Ôì
StringBuffer »ò StringBuilder ʱӦ¾¡Á¿Ö¸¶¨ËýµÄÈÝÁ¿¡£µ±È»Èç¹û²»³¬¹ý 16 ¸ö×Ö·ûʱ¾Í²»ÓÃÁË¡£
ÏàͬÇé¿öÏ£¬Ê¹Óà StringBuilder ±ÈʹÓà StringBuffer ½öÄÜ»ñµÃ 10%~15%µÄÐÔÄÜÌáÉý£¬µ«È´ÒªÃ°¶àÏ̲߳»°²È«µÄ·çÏÕ¡£×ۺϿ¼ÂÇ»¹Êǽ¨ÒéʹÓÃ
StringBuffer¡£
28¡¢ ¾¡Á¿Ê¹Óûù±¾Êý¾ÝÀàÐÍ´úÌæ¶ÔÏó¡£
29¡¢Óüòµ¥µÄÊýÖµ¼ÆËã´úÌæ¸´Ôӵĺ¯Êý¼ÆË㣬±ÈÈç²é±í·½Ê½½â¾öÈý½Çº¯ÊýÎÊÌâ¡£
30¡¢Ê¹ÓþßÌåÀà±ÈʹÓýӿÚЧÂʸߣ¬µ«½á¹¹µ¯ÐÔ½µµÍÁË£¬µ«ÏÖ´ú IDE ¶¼¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£
31¡¢¿¼ÂÇʹÓþ²Ì¬·½·¨
Èç¹ûÄãûÓбØÒªÈ¥·ÃÎʶÔÏóµÄÍⲿ£¬ÄÇô¾ÍʹÄãµÄ·½·¨³ÉΪ¾²Ì¬·½·¨¡£Ëý»á±»¸ü¿ìµØµ÷Óã¬ÒòΪËý²»ÐèÒªÒ»¸öÐéÄ⺯Êýµ¼Ïò±í¡£ÕâͬÊÂÒ²ÊÇÒ»¸öºÜºÃµÄʵ¼ù£¬ÒòΪËý¸æËßÄãÈçºÎÇø·Ö·½·¨µÄÐÔÖÊ£¬µ÷ÓÃÕâ¸ö·½·¨²»»á¸Ä±ä¶ÔÏóµÄ״̬¡£
32.Ó¦¾¡¿ÉÄܱÜÃâʹÓÃÄÚÔÚµÄGET,SET ·½·¨
android ±à³ÌÖУ¬Ðé·½·¨µÄµ÷Óûá²úÉúºÜ¶à´ú¼Û£¬±ÈʵÀýÊôÐÔ²éѯµÄ´ú¼Û»¹Òª¶à¡£ÎÒÃÇÓ¦¸ÃÔÚÍâ°üµ÷ÓõÄʱºò²ÅʹÓÃ
get£¬set·½·¨£¬µ«ÔÚÄÚ²¿µ÷ÓõÄʱºò£¬Ó¦¸ÃÖ±½Óµ÷Óá£
33¡¢±ÜÃâö¾Ù£¬¸¡µãÊýµÄʹÓá£
34¡¢¶þάÊý×é±ÈһάÊý×éÕ¼Óøü¶àµÄÄÚ´æ¿Õ¼ä£¬´ó¸ÅÊÇ 10 ±¶¼ÆËã¡£
35¡¢SQLite
SQLite Êý¾Ý¿â¶ÁÈ¡ÕûÕűíµÄÈ«²¿Êý¾ÝºÜ¿ì£¬µ«ÓÐÌõ¼þµÄ²éѯ¾ÍÒªºÄʱ 30-50MS,´ó¼Ò×öÕâ·½ÃæµÄʱºòҪעÒ⣬¾¡Á¿ÉÙÓã¬ÓÈÆäÊÇǶÌײéÕÒ£¡
36¡¢ÆæÅ¼ÅжÏ
²»ÒªÊ¹Óà i % 2 == 1 À´ÅжÏÊÇ·ñÊÇÆæÊý£¬ÒòΪ iΪ¸ºÆæÊýʱ²»³ÉÁ¢£¬ÇëʹÓÃ
i % 2 != 0 À´ÅжÏÊÇ·ñÊÇÆæÊý£¬»òʹÓà ¸ßЧʽ (i & 1) != 0 À´Åжϡ£
|