锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲AV麻豆~,亚洲精品中文字幕无乱码麻豆,久久人午夜亚洲精品无码区http://m.tkk7.com/cisco/category/6318.htmlJava, 涓鏉祿嫻撶殑鍜栧暋浼翠綘鍒版繁澶?lt;br> <span id="dict_daily"> <a target="_blank">Dict.CN 鍦ㄧ嚎璇嶅吀, 鑻辮瀛︿範, 鍦ㄧ嚎緲昏瘧</a> </span> <script language="JavaScript" src="http://dict.cn/daily.php" defer="defer"> </script>zh-cnWed, 28 Feb 2007 13:00:41 GMTWed, 28 Feb 2007 13:00:41 GMT60銆奐ava 5.0 Tiger銆婥hapter 4http://m.tkk7.com/cisco/articles/26211.htmlScott@JAVAScott@JAVASat, 31 Dec 2005 15:17:00 GMThttp://m.tkk7.com/cisco/articles/26211.htmlhttp://m.tkk7.com/cisco/comments/26211.htmlhttp://m.tkk7.com/cisco/articles/26211.html#Feedback0http://m.tkk7.com/cisco/comments/commentRss/26211.htmlhttp://m.tkk7.com/cisco/services/trackbacks/26211.htmlChapter 4. Autoboxing and Unboxing

4.1 Converting Primitives to Wrapper Types

Integer i = 0;

Behind the scenes, primitive values are boxed. Boxing refers to the conversion from a primitive to its corresponding wrapper type: Boolean, Byte, Short, Character, Integer, Long, Float, or Double. Because this happens automatically, it's generally referred to as autoboxing.

It's also common for Java to perform a widening conversion in addition to boxing a value:

Number n = 0.0f;

Here, the literal is boxed into a Float, and then widened into a Number.

Additionally, the Java specification indicates that certain primitives are always to be boxed into the same immutable wrapper objects. These objects are then cached and reused, with the expectation that these are commonly used objects. These special values are the boolean values true and false, all byte values, short and int values between -128 and 127, and any char in the range \u0000 to \u007F.

4.2 Coverting Wrapper Types to Primitives

// Boxing
int foo = 0;
Integer integer 
= foo;

// Simple Unboxing
int bar = integer;

Integer counter 
= 1;     // boxing
int counter2 = counter;  // unboxing

...null value assignment? Since null is a legal value for an object, and therefore any wrapper type, the following code is legal:

Integer i = null;
int j = i; 

i is assigned null (which is legal), and then i is unboxed into j. However, null isn't a legal value for a primitive, so this code throws a NullPointerException.

4.3 Incrementing and Decrementing Wrapper Types

Suddenly, every operation available to a primitive should be available to its wrapper-type counterpart, and vice versa.

Integer counter = 1;
        
while (true{
            System.out.printf(
"Iteration %d%n", counter++);
            
if (counter > 1000)
                
break;
        }

Remember that counter is an Integer. So the value in counter was first auto-unboxed into an int, as that's the type required for the ++ operator. Once the value is unboxed, it is incremented. Then, the new value has to be stored back in counter, which requires a boxing operation. All this in a fraction of a second!

4.4 Boolean Versus boolean

Any time you have an expression that uses !, ||, or &&, any Boolean values are unboxed to boolean primitive values, and evaluated accordingly:

        Boolean case1 = true;
        Boolean case2 
= true;
        
boolean case3 = false;
        Boolean result 
= (case1 || case2) && case3;

For inquiring minds, primitives are boxed up to wrapper types in equality comparisons. For operators such as <, >=, and so forth, the wrapper types are unboxed to primitive types.

Atten! ...direct object comparison?

You can't depend on the result; it's merely used as an illustration. Some JVMs may choose to try and optimize this code, and create one instance for both Integer objects, and in that case, the == operator would return a true result.

        Integer i1 = 256;
        Integer i2 
= 256;
        Integer i3 
= 100;
        Integer i4 
= 100;
        System.out.println(i1 
== i2); // false
        System.out.println(i3 == i4); // true

If you wonder the result above, check the last paragraph in 4.1 Converting Primitives to Wrapper Types.

4.5 Conditionals and Unboxing

Ternary operator --- [conditional expression] ? [expression1] : [expression2]

[expression1] and [expression2] had to either be of the same type, or one had to be assignable to the other.


Another addition to Tiger is automatic casting of reference to their intersection type. That's a mouthful, so here's an example:

        String s = "hello";
        StringBuffer sb 
= new StringBuffer("world");
        
boolean mutable = true;
        CharSequence cs 
= mutable ? sb : s;

In pre-Tiger environments, this would generate an error, as sb (a StringBuffer) and s (a String) cannot be assigned to each other, unless you explicitly cast both to CharSequence.

As a side effect of this, note that two reference types (objects) always share java.lang.Object as a common ancestor, so any result of a ternary operation involving non-primitive operands can be assigned to java.lang.Object.

4.6 Control Statements and Unboxing

if/else, while, and do all are affected by Tiger's ability to unbox Boolean values to boolean values.

Another statement that benefits from unboxing is switch. In pre-Tiger JVMs, the switch statement accepts int, short, char, or byte values. With unboxing in play, you can now supply it with Integer, Short, Char, and Byte values as well, in addition to the introduction of enums.

4.7 Method Overload Resolution

In Tiger, method resolution is a three-pass process:

  1. The compiler attempts to locate the correct method without any boxing, unboxing, or vararg invocations. This will find any method that would have been invoked under Java 1.4 rules.

  2. If the first pass fails, the compiler tries method resolution again, this time allowing boxing and unboxing conversions. Methods with varargs are not considered in this pass.

  3. If the second pass fails, the compiler tries method resolution one last time, allowing boxing and unboxing, and also considers vararg methods.

These rules ensure that consistency with pre-Tiger environments is maintained.



Scott@JAVA 2005-12-31 23:17 鍙戣〃璇勮
]]>
銆奐ava 5.0 Tiger銆婥hapter 3http://m.tkk7.com/cisco/articles/25975.htmlScott@JAVAScott@JAVAThu, 29 Dec 2005 21:28:00 GMThttp://m.tkk7.com/cisco/articles/25975.htmlhttp://m.tkk7.com/cisco/comments/25975.htmlhttp://m.tkk7.com/cisco/articles/25975.html#Feedback0http://m.tkk7.com/cisco/comments/commentRss/25975.htmlhttp://m.tkk7.com/cisco/services/trackbacks/25975.html闃呰鍏ㄦ枃

Scott@JAVA 2005-12-30 05:28 鍙戣〃璇勮
]]>
銆奐ava 5.0 Tiger銆婥hapter 2http://m.tkk7.com/cisco/articles/25522.htmlScott@JAVAScott@JAVAMon, 26 Dec 2005 19:30:00 GMThttp://m.tkk7.com/cisco/articles/25522.htmlhttp://m.tkk7.com/cisco/comments/25522.htmlhttp://m.tkk7.com/cisco/articles/25522.html#Feedback0http://m.tkk7.com/cisco/comments/commentRss/25522.htmlhttp://m.tkk7.com/cisco/services/trackbacks/25522.html闃呰鍏ㄦ枃

Scott@JAVA 2005-12-27 03:30 鍙戣〃璇勮
]]>
銆奐ava 5.0 Tiger銆婥hapter 1http://m.tkk7.com/cisco/articles/25387.htmlScott@JAVAScott@JAVASun, 25 Dec 2005 14:24:00 GMThttp://m.tkk7.com/cisco/articles/25387.htmlhttp://m.tkk7.com/cisco/comments/25387.htmlhttp://m.tkk7.com/cisco/articles/25387.html#Feedback0http://m.tkk7.com/cisco/comments/commentRss/25387.htmlhttp://m.tkk7.com/cisco/services/trackbacks/25387.html闃呰鍏ㄦ枃

Scott@JAVA 2005-12-25 22:24 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产男女猛烈无遮挡免费网站| 一区二区三区观看免费中文视频在线播放| 91精品视频免费| 亚洲AV无码国产丝袜在线观看| 国产青草亚洲香蕉精品久久| 免费a级毛片高清视频不卡| 亚洲av产在线精品亚洲第一站| 91麻豆国产免费观看| 亚洲网站在线免费观看| 777爽死你无码免费看一二区| 亚洲av日韩av天堂影片精品| 日韩中文字幕免费视频| 亚洲一区二区三区高清| av无码久久久久不卡免费网站 | 免费国产黄线在线观看| 亚洲色欲色欱wwW在线| 国产成人免费全部网站| h在线看免费视频网站男男| 亚洲va国产va天堂va久久| 中文字幕免费在线看线人| 亚洲真人无码永久在线观看| 国产一区二区三区在线免费观看 | 亚洲精品日韩一区二区小说| 暖暖免费高清日本一区二区三区| 欧洲亚洲综合一区二区三区| 中文字幕亚洲日韩无线码| 97视频免费观看2区| 精品久久亚洲中文无码| 又爽又高潮的BB视频免费看| 9久热这里只有精品免费| 亚洲精品第五页中文字幕 | 免费人成网站7777视频| 国产午夜免费高清久久影院| 亚洲国产成人无码av在线播放| 国产高清视频在线免费观看| 国产黄在线观看免费观看不卡| 中文字幕在线观看亚洲| 免费亚洲视频在线观看| 最近中文字幕国语免费完整 | 久久久久久国产a免费观看黄色大片| 久久亚洲精品成人无码|