Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
JavaÖеÄ×Ô¶¯×°ÏäÓë²ðÏä
 
×÷Õߣºandroidyue À´Ô´£º¼¼ÊõСºÚÎÝ »ðÁú¹ûÈí¼þ ·¢²¼ÓÚ 2015-4-11
  1637  次浏览      20
 

×Ô¶¯×°ÏäºÍ²ðÏä´ÓJava 1.5¿ªÊ¼ÒýÈ룬ĿµÄÊǽ«Ô­Ê¼ÀàÐÍֵת×Ô¶¯µØת»»³É¶ÔÓ¦µÄ¶ÔÏó¡£×Ô¶¯×°ÏäÓë²ðÏäµÄ»úÖÆ¿ÉÒÔÈÃÎÒÃÇÔÚJavaµÄ±äÁ¿¸³Öµ»òÕßÊÇ·½·¨µ÷ÓõÈÇé¿öÏÂʹÓÃԭʼÀàÐÍ»òÕ߶ÔÏóÀàÐ͸ü¼Ó¼òµ¥Ö±½Ó¡£

Èç¹ûÄãÔÚJava1.5ϽøÐйý±à³ÌµÄ»°£¬ÄãÒ»¶¨²»»áÄ°ÉúÕâÒ»µã£¬Äã²»ÄÜÖ±½ÓµØÏò¼¯ºÏ(Collections)ÖзÅÈëԭʼÀàÐÍÖµ£¬ÒòΪ¼¯ºÏÖ»½ÓÊÕ¶ÔÏó¡£Í¨³£ÕâÖÖÇé¿öÏÂÄãµÄ×ö·¨ÊÇ£¬½«ÕâЩԭʼÀàÐ͵Äֵת»»³É¶ÔÏó£¬È»ºó½«ÕâЩת»»µÄ¶ÔÏó·ÅÈ뼯ºÏÖС£Ê¹ÓÃInteger,Double,BooleanµÈÕâЩÀàÎÒÃÇ¿ÉÒÔ½«Ô­Ê¼ÀàÐÍֵת»»³É¶ÔÓ¦µÄ¶ÔÏ󣬵«ÊÇ´ÓijЩ³Ì¶È¿ÉÄÜʹµÃ´úÂë²»ÊÇÄÇô¼ò½à¾«Á¶¡£ÎªÁËÈôúÂë¼òÁ·£¬Java 1.5ÒýÈëÁ˾ßÓÐÔÚԭʼÀàÐͺͶÔÏóÀàÐÍ×Ô¶¯×ª»»µÄ×°ÏäºÍ²ðÏä»úÖÆ¡£µ«ÊÇ×Ô¶¯×°ÏäºÍ²ðÏä²¢·ÇÍêÃÀ£¬ÔÚʹÓÃʱÐèÒªÓÐһЩעÒâÊÂÏÈç¹ûûÓиãÃ÷°××Ô¶¯×°ÏäºÍ²ðÏ䣬¿ÉÄÜ»áÒýÆðÄÑÒÔ²ì¾õµÄbug¡£

±¾ÎĽ«½éÉÜ£¬Ê²Ã´ÊÇ×Ô¶¯×°ÏäºÍ²ðÏ䣬×Ô¶¯×°ÏäºÍ²ðÏä·¢ÉúÔÚʲôʱºò£¬ÒÔ¼°Òª×¢ÒâµÄÊÂÏî¡£

ʲôÊÇ×Ô¶¯×°ÏäºÍ²ðÏä

×Ô¶¯×°Ïä¾ÍÊÇJava×Ô¶¯½«Ô­Ê¼ÀàÐÍֵת»»³É¶ÔÓ¦µÄ¶ÔÏ󣬱ÈÈ罫intµÄ±äÁ¿×ª»»³ÉInteger¶ÔÏó£¬Õâ¸ö¹ý³Ì½Ð×ö×°Ï䣬·´Ö®½«Integer¶ÔÏóת»»³ÉintÀàÐÍÖµ£¬Õâ¸ö¹ý³Ì½Ð×ö²ðÏä¡£ÒòΪÕâÀïµÄ×°ÏäºÍ²ðÏäÊÇ×Ô¶¯½øÐеķÇÈËΪת»»£¬ËùÒԾͳÆ×÷Ϊ×Ô¶¯×°ÏäºÍ²ðÏ䡣ԭʼÀàÐÍbyte,short,char,int,long,float,doubleºÍboolean¶ÔÓ¦µÄ·â×°ÀàΪByte,Short,Character,Integer,Long,Float,Double,Boolean¡£

×Ô¶¯×°Ïä²ðÏäÒªµã

  • ×Ô¶¯×°Ïäʱ±àÒëÆ÷µ÷ÓÃvalueOf½«Ô­Ê¼ÀàÐÍֵת»»³É¶ÔÏó£¬Í¬Ê±×Ô¶¯²ðÏäʱ£¬±àÒëÆ÷ͨ¹ýµ÷ÓÃÀàËÆintValue(),doubleValue()ÕâÀàµÄ·½·¨½«¶ÔÏóת»»³ÉԭʼÀàÐÍÖµ¡£
  • ×Ô¶¯×°ÏäÊǽ«booleanֵת»»³ÉBoolean¶ÔÏó£¬byteֵת»»³ÉByte¶ÔÏó£¬charת»»³ÉCharacter¶ÔÏó£¬floatֵת»»³ÉFloat¶ÔÏó£¬intת»»³ÉInteger£¬longת»»³ÉLong£¬shortת»»³ÉShort£¬×Ô¶¯²ðÏäÔòÊÇÏà·´µÄ²Ù×÷¡£

ºÎʱ·¢Éú×Ô¶¯×°ÏäºÍ²ðÏä

×Ô¶¯×°ÏäºÍ²ðÏäÔÚJavaÖкܳ£¼û£¬±ÈÈçÎÒÃÇÓÐÒ»¸ö·½·¨£¬½ÓÊÜÒ»¸ö¶ÔÏóÀàÐ͵IJÎÊý£¬Èç¹ûÎÒÃÇ´«µÝÒ»¸öԭʼÀàÐÍÖµ£¬ÄÇôJava»á×Ô¶¯½²Õâ¸öԭʼÀàÐÍֵת»»³ÉÓëÖ®¶ÔÓ¦µÄ¶ÔÏó¡£×î¾­µäµÄÒ»¸ö³¡¾°¾ÍÊǵ±ÎÒÃÇÏòArrayListÕâÑùµÄÈÝÆ÷ÖÐÔö¼ÓԭʼÀàÐÍÊý¾Ýʱ»òÕßÊÇ´´½¨Ò»¸ö²ÎÊý»¯µÄÀ࣬±ÈÈçÏÂÃæµÄThreadLocal¡£

ArrayList<Integer> intList = new ArrayList<Integer>();
intList.add(1); //autoboxing - primitive to object
intList.add(2); //autoboxing

ThreadLocal<Integer> intLocal = new ThreadLocal<Integer>();
intLocal.set(4); //autoboxing

int number = intList.get(0); // unboxing
int local = intLocal.get(); // unboxing in Java

¾ÙÀý˵Ã÷

ÉÏÃæµÄ²¿·ÖÎÒÃǽéÉÜÁË×Ô¶¯×°ÏäºÍ²ðÏäÒÔ¼°ËüÃǺÎʱ·¢Éú£¬ÎÒÃÇÖªµÀÁË×Ô¶¯×°ÏäÖ÷Òª·¢ÉúÔÚÁ½ÖÖÇé¿ö£¬Ò»ÖÖÊǸ³ÖµÊ±£¬ÁíÒ»ÖÖÊÇÔÚ·½·¨µ÷ÓõÄʱºò¡£ÎªÁ˸üºÃµØÀí½âÕâÁ½ÖÖÇé¿ö£¬ÎÒÃǾÙÀý½øÐÐ˵Ã÷¡£

¸³ÖµÊ±

ÕâÊÇ×î³£¼ûµÄÒ»ÖÖÇé¿ö£¬ÔÚJava 1.5ÒÔÇ°ÎÒÃÇÐèÒªÊÖ¶¯µØ½øÐÐת»»²ÅÐУ¬¶øÏÖÔÚËùÓеÄת»»¶¼ÊÇÓɱàÒëÆ÷À´Íê³É¡£

//before autoboxing
Integer iObject = Integer.valueOf(3);
Int iPrimitive = iObject.intValue()

//after java5
Integer iObject = 3; //autobxing - primitive to wrapper conversion
int iPrimitive = iObject; //unboxing - object to primitive conversion

·½·¨µ÷ÓÃʱ

ÕâÊÇÁíÒ»¸ö³£ÓõÄÇé¿ö£¬µ±ÎÒÃÇÔÚ·½·¨µ÷ÓÃʱ£¬ÎÒÃÇ¿ÉÒÔ´«ÈëԭʼÊý¾ÝÖµ»òÕ߶ÔÏó£¬Í¬Ñù±àÒëÆ÷»á°ïÎÒÃǽøÐÐת»»¡£

public static Integer show(Integer iParam){
System.out.println("autoboxing example - method invocation i: " + iParam);
return iParam;
}

//autoboxing and unboxing in method invocation
show(3); //autoboxing
int result = show(3); //unboxing because return type of method is Integer

show·½·¨½ÓÊÜInteger¶ÔÏó×÷Ϊ²ÎÊý£¬µ±µ÷ÓÃshow(3)ʱ£¬»á½«intֵת»»³É¶ÔÓ¦µÄInteger¶ÔÏó£¬Õâ¾ÍÊÇËùνµÄ×Ô¶¯×°Ï䣬show·½·¨·µ»ØInteger¶ÔÏ󣬶øint result = show(3);ÖÐresultΪintÀàÐÍ£¬ËùÒÔÕâʱºò·¢Éú×Ô¶¯²ðÏä²Ù×÷£¬½«show·½·¨µÄ·µ»ØµÄInteger¶ÔÏóת»»³ÉintÖµ¡£

×Ô¶¯×°ÏäµÄ±×¶Ë

×Ô¶¯×°ÏäÓÐÒ»¸öÎÊÌ⣬ÄǾÍÊÇÔÚÒ»¸öÑ­»·ÖнøÐÐ×Ô¶¯×°Ïä²Ù×÷µÄÇé¿ö£¬ÈçÏÂÃæµÄÀý×Ӿͻᴴ½¨¶àÓàµÄ¶ÔÏó£¬Ó°Ïì³ÌÐòµÄÐÔÄÜ¡£

Integer sum = 0;
for(int i=1000; i<5000; i++){
sum+=i;
}

ÉÏÃæµÄ´úÂësum+=i¿ÉÒÔ¿´³Ésum = sum + i£¬µ«ÊÇ+Õâ¸ö²Ù×÷·û²»ÊÊÓÃÓÚInteger¶ÔÏó£¬Ê×ÏÈsum½øÐÐ×Ô¶¯²ðÏä²Ù×÷£¬½øÐÐÊýÖµÏà¼Ó²Ù×÷£¬×îºó·¢Éú×Ô¶¯×°Ïä²Ù×÷ת»»³ÉInteger¶ÔÏó¡£ÆäÄÚ²¿±ä»¯ÈçÏÂ

sum = sum.intValue() + i;
Integer sum = new Integer(result);

ÓÉÓÚÎÒÃÇÕâÀïÉùÃ÷µÄsumΪIntegerÀàÐÍ£¬ÔÚÉÏÃæµÄÑ­»·Öлᴴ½¨½«½ü4000¸öÎÞÓõÄInteger¶ÔÏó£¬ÔÚÕâÑùÅÓ´óµÄÑ­»·ÖУ¬»á½µµÍ³ÌÐòµÄÐÔÄܲ¢ÇÒ¼ÓÖØÁËÀ¬»ø»ØÊյŤ×÷Á¿¡£Òò´ËÔÚÎÒÃDZà³Ìʱ£¬ÐèҪעÒâµ½ÕâÒ»µã£¬ÕýÈ·µØÉùÃ÷±äÁ¿ÀàÐÍ£¬±ÜÃâÒòΪ×Ô¶¯×°ÏäÒýÆðµÄÐÔÄÜÎÊÌâ¡£

ÖØÔØÓë×Ô¶¯×°Ïä

µ±ÖØÔØÓöÉÏ×Ô¶¯×°Ïäʱ£¬Çé¿ö»á±È½ÏÓÐЩ¸´ÔÓ£¬¿ÉÄÜ»áÈÃÈ˲úÉúÓÐЩÀ§»ó¡£ÔÚ1.5֮ǰ£¬value(int)ºÍvalue(Integer)ÊÇÍêÈ«²»ÏàͬµÄ·½·¨£¬¿ª·¢Õß²»»áÒòΪ´«ÈëÊÇint»¹ÊÇIntegerµ÷ÓÃÄĸö·½·¨À§»ó£¬µ«ÊÇÓÉÓÚ×Ô¶¯×°ÏäºÍ²ðÏäµÄÒýÈ룬´¦ÀíÖØÔØ·½·¨Ê±ÉÔ΢Óе㸴ÔÓ¡£Ò»¸öµäÐ͵ÄÀý×Ó¾ÍÊÇArrayListµÄremove·½·¨£¬ËüÓÐremove(index)ºÍremove(Object)Á½ÖÖÖØÔØ£¬ÎÒÃÇ¿ÉÄÜ»áÓÐÒ»µãССµÄÀ§»ó£¬ÆäʵÕâÖÖÀ§»óÊÇ¿ÉÒÔÑéÖ¤²¢½â¿ªµÄ£¬Í¨¹ýÏÂÃæµÄÀý×ÓÎÒÃÇ¿ÉÒÔ¿´µ½£¬µ±³öÏÖÕâÖÖÇé¿öʱ£¬²»»á·¢Éú×Ô¶¯×°Ïä²Ù×÷¡£

public void test(int num){
System.out.println("method with primitive argument");

}

public void test(Integer num){
System.out.println("method with wrapper argument");

}

//calling overloaded method
AutoboxingTest autoTest = new AutoboxingTest();
int value = 3;
autoTest.test(value); //no autoboxing
Integer iValue = value;
autoTest.test(iValue); //no autoboxing

Output:
method with primitive argument
method with wrapper argument

ҪעÒâµÄÊÂÏî

×Ô¶¯×°ÏäºÍ²ðÏä¿ÉÒÔʹ´úÂë±äµÃ¼ò½à,µ«ÊÇÆäÒ²´æÔÚһЩÎÊÌâºÍ¼«¶ËÇé¿öϵÄÎÊÌ⣬ÒÔϼ¸µãÐèÒªÎÒÃǼÓǿעÒâ¡£

¶ÔÏóÏàµÈ±È½Ï

ÕâÊÇÒ»¸ö±È½ÏÈÝÒ׳ö´íµÄµØ·½£¬¡±==¡°¿ÉÒÔÓÃÓÚԭʼֵ½øÐбȽϣ¬Ò²¿ÉÒÔÓÃÓÚ¶ÔÏó½øÐбȽϣ¬µ±ÓÃÓÚ¶ÔÏóÓë¶ÔÏóÖ®¼ä±È½Ïʱ£¬±È½ÏµÄ²»ÊǶÔÏó´ú±íµÄÖµ£¬¶øÊǼì²éÁ½¸ö¶ÔÏóÊÇ·ñÊÇͬһ¶ÔÏó£¬Õâ¸ö±È½Ï¹ý³ÌÖÐûÓÐ×Ô¶¯×°Ïä·¢Éú¡£½øÐжÔÏóÖµ±È½Ï²»Ó¦¸ÃʹÓá±==¡°£¬¶øÓ¦¸ÃʹÓöÔÏó¶ÔÓ¦µÄequals·½·¨¡£¿´Ò»¸öÄÜ˵Ã÷ÎÊÌâµÄÀý×Ó¡£

public class AutoboxingTest {

public static void main(String args[]) {

// Example 1: == comparison pure primitive ¨C no autoboxing
int i1 = 1;
int i2 = 1;
System.out.println("i1==i2 : " + (i1 == i2)); // true

// Example 2: equality operator mixing object and primitive
Integer num1 = 1; // autoboxing
int num2 = 1;
System.out.println("num1 == num2 : " + (num1 == num2)); // true

// Example 3: special case - arises due to autoboxing in Java
Integer obj1 = 1; // autoboxing will call Integer.valueOf()
Integer obj2 = 1; // same call to Integer.valueOf() will return same
// cached Object

System.out.println("obj1 == obj2 : " + (obj1 == obj2)); // true

// Example 4: equality operator - pure object comparison
Integer one = new Integer(1); // no autoboxing
Integer anotherOne = new Integer(1);
System.out.println("one == anotherOne : " + (one == anotherOne)); // false

}

}

Output:
i1==i2 : true
num1 == num2 : true
obj1 == obj2 : true
one == anotherOne : false

ÖµµÃ×¢ÒâµÄÊǵÚÈý¸öСÀý×Ó£¬ÕâÊÇÒ»ÖÖ¼«¶ËÇé¿ö¡£obj1ºÍobj2µÄ³õʼ»¯¶¼·¢ÉúÁË×Ô¶¯×°Ïä²Ù×÷¡£µ«ÊÇ´¦ÓÚ½ÚÊ¡ÄÚ´æµÄ¿¼ÂÇ£¬JVM»á»º´æ-128µ½127µÄInteger¶ÔÏó¡£ÒòΪobj1ºÍobj2ʵ¼ÊÉÏÊÇͬһ¸ö¶ÔÏó¡£ËùÒÔʹÓá±==¡°±È½Ï·µ»Øtrue¡£

ÈÝÒ×»ìÂҵĶÔÏóºÍԭʼÊý¾ÝÖµ

ÁíÒ»¸öÐèÒª±ÜÃâµÄÎÊÌâ¾ÍÊÇ»ìÂÒʹÓöÔÏóºÍԭʼÊý¾ÝÖµ£¬Ò»¸ö¾ßÌåµÄÀý×Ó¾ÍÊǵ±ÎÒÃÇÔÚÒ»¸öԭʼÊý¾ÝÖµÓëÒ»¸ö¶ÔÏó½øÐбȽÏʱ£¬Èç¹ûÕâ¸ö¶ÔÏóûÓнøÐгõʼ»¯»òÕßΪNull£¬ÔÚ×Ô¶¯²ðÏä¹ý³ÌÖÐobj.xxxValue£¬»áÅ׳öNullPointerException,ÈçÏÂÃæµÄ´úÂë

private static Integer count;

//NullPointerException on unboxing
if( count <= 0){
System.out.println("Count is not started yet");
}

»º´æµÄ¶ÔÏó

Õâ¸öÎÊÌâ¾ÍÊÇÎÒÃÇÉÏÃæÌáµ½µÄ¼«¶ËÇé¿ö£¬ÔÚJavaÖУ¬»á¶Ô-128µ½127µÄInteger¶ÔÏó½øÐлº´æ£¬µ±´´½¨ÐµÄInteger¶ÔÏóʱ£¬Èç¹û·ûºÏÕâ¸öÕâ¸ö·¶Î§£¬²¢ÇÒÒÑÓдæÔÚµÄÏàֵͬµÄ¶ÔÏó£¬Ôò·µ»ØÕâ¸ö¶ÔÏ󣬷ñÔò´´½¨ÐµÄInteger¶ÔÏó¡£

ÔÚJavaÖÐÁíÒ»¸ö½ÚÊ¡ÄÚ´æµÄÀý×Ó¾ÍÊÇ×Ö·û´®³£Á¿³Ø,¸ÐÐËȤµÄͬѧ¿ÉÒÔÁ˽âһϡ£

Éú³ÉÎÞÓöÔÏóÔö¼ÓGCѹÁ¦

ÒòΪ×Ô¶¯×°Ïä»áÒþʽµØ´´½¨¶ÔÏó£¬ÏñÇ°ÃæÌáµ½µÄÄÇÑù£¬Èç¹ûÔÚÒ»¸öÑ­»·ÌåÖУ¬»á´´½¨ÎÞÓõÄÖмä¶ÔÏó£¬ÕâÑù»áÔö¼ÓGCѹÁ¦£¬À­µÍ³ÌÐòµÄÐÔÄÜ¡£ËùÒÔÔÚдѭ»·Ê±Ò»¶¨Òª×¢Òâ´úÂ룬±ÜÃâÒýÈë²»±ØÒªµÄ×Ô¶¯×°Ïä²Ù×÷¡£

×ܵÄÀ´Ëµ£¬×Ô¶¯×°ÏäºÍ²ðÏä×ÅʵΪ¿ª·¢Õß´øÀ´Á˺ܴóµÄ·½±ã£¬µ«ÊÇÔÚʹÓÃʱҲÊÇÐèÒª¸ñÍâÁôÒ⣬±ÜÃâÒýÆð³öÏÖÎÄÕÂÌáµ½µÄÎÊÌâ¡£

   
1637 ´Îä¯ÀÀ       20
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼Æģʽ¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
Node+Vue3.0Ç°¶ËÈ«Õ»¿ª·¢ 7-5 [ÌØ»Ý]
Spring Cloud΢·þÎñ¼Ü¹¹ 7-5[ÌØ»Ý]
SysMLºÍEAϵͳÉè¼ÆÓ뽨ģ 7-26[ÌØ»Ý]
Python¡¢Êý¾Ý·ÖÎöÓë»úÆ÷ѧϰ 8-23[ÌØ»Ý]
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ 8-22[ÏßÉÏ]
LinuxÄں˱à³Ì¼°É豸Çý¶¯ 7-25[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæת Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆģʽºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëǨÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°Ñؼ¼Êõ