`
linxizeng
  • 浏览: 104825 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tiger学习 之 primitive and wrapper<boxing>

阅读更多
java 99% 是对象处理的,还有1%是primitive(int,short,char...等字面值)的处理,与之相对的wrapper class 是Integer,Short,Character...等,因此,总需要要在primitive和wrapper之间不断的转换...

Tiger来使用boxing和unboxing来解决这个问题...自动执行这些转换...即autoboxing和auto-unboxing..

1.primitive to wrapper
引用

//Tiger之前定义个Integer必须如下
Integer i = new Integer(100);
//Tiger只需这样
Integer i = 100;
int j = 100;
Integer x  = j;

还有,JVM将特定primitive都给box成相同的不可变的wrapper对象(ture,false -128——127,部分char),放在缓存...高效率。
看下面两个例子..
引用

Integer counter1 = 100;
Integer counter2 = 100;
System.out.print("counter1 == counter2: " );
System.out.println(counter1 == counter2);

Integer counter3 = 256;
Integer counter4 = 256;
System.out.print("counter3 == counter4: ");
System.out.println(counter3 == counter4);

结果输出:
引用

counter1 == counter2: true
counter3 == counter4: false


Why?
因为counter1 和counter2 的值在-128——127之间,是不可变的wrapper,所以会将Integer boxing 成int类型,然后进行比较,所以是相等的。
因为counter3 和counter4 的值不在-128——127之间,没有将Integer进行boxing因此比较的还是对象(两个对象是在不同的内存空间),所以不相等的。
2.wrapper to primitive
引用

Integer j = 100;
int i = j;//自动将wrapper转换为primitive

但是如果是这样..
引用

Integer j = null;
int i = j;//将抛出NullPointerExcepion异常,所以建议初始换wrapper对象的值.


3.wrapper的递增与递减
wrapper对象也可以递增与递减,如
引用

Integer counter = 1;
counter++;
--counter;
//先把Integer先unboxing成int,递增或递减,然后再boxing回去


4.Boolean and boolean
通过Boolean 也可以直接使用逻辑运算符(||、&&、!....),先unboxing成primitive(不可变的wrapper),再做比较...如
引用

Boolean case1 = true;
Boolean case2 = true;
Boolean case3 = false;
//Boolean对象先会被unboxing成primitive,然后进行比较,再boxing最后值成为Wrapper对象赋值给result
Boolean result = (case1 || case2) && case3;

分享到:
评论

相关推荐

    OpenGL SuperBible 4th Edition PDF part 1 of 2

    Starting with basic 3D&lt;br&gt;terminology and concepts, we take you through basic primitive assembly, transformations,&lt;br&gt;lighting, texturing, and eventually bring you into the full power of the ...

    OpenGL SuperBible 4th Edition PDF part 2 of 2

    Starting with basic 3D&lt;br&gt;terminology and concepts, we take you through basic primitive assembly, transformations,&lt;br&gt;lighting, texturing, and eventually bring you into the full power of the ...

    Addison.Wesley.The.Java.Programming.Language.4th.Edition.Aug.2005.chm

    Chapter 8Primitives as Typesexplores the relationship between the primitive types and objects of their corresponding wrapper classes, and how boxing and unboxing can transparently convert between ...

    GDB TRAINING

    - `print &lt;primitive-variable or structured-variable&gt;`:打印原始或结构化变量。 - `print &lt;function&gt;( arg1, arg2, …, argn )`:调用函数并打印返回值。 - `print &lt;expression&gt;`:打印表达式的结果,如`a==b`...

    dwr配置

    在使用自定义的转换器或创建器时,需要在`&lt;init&gt;`部分声明它们,并赋予唯一的`id`属性,以便在`&lt;allow&gt;`部分引用。 `&lt;signatures&gt;`部分主要用于安全性,你可以在这里定义允许的Java方法签名,防止未授权的...

    javascript+html5学习笔记

    &lt;label for="fname"&gt;First name:&lt;/label&gt;&lt;br&gt; &lt;input type="text" id="fname" name="fname"&gt;&lt;br&gt; &lt;input type="submit" value="Submit"&gt; &lt;/form&gt; ``` 通过以上内容的学习,初学者可以了解到 JavaScript 和 ...

    java教学基础系列一

    * The standard library provides a class HashMap&lt;K, V&gt; with key type K, and value type V. * Declare a hash map that maps strings to integers * Answer: HashMap&lt;String,Integer&gt; * The binary search tree ...

    stx_nano:紧凑的电动工具选择。 与通用库没有真正的重叠,因此可以在全局范围内安全使用

    输入: Couple&lt;L&gt;, Err&lt;E&gt;, FailCode, Failure&lt;E&gt;, Fault&lt;E&gt;, Pos, adPosition, Primitive, Report, Res, Unique, VBlock, Wildcard, Y Couple&lt;L&gt;是一个实现为函数处理程序的二元组。 Err&lt;E&gt;是一个灵活的错误类,...

    使用three.js 集成到react项目画旋转的地球

    &lt;primitive object={geometry} /&gt; &lt;material {...material} /&gt; &lt;/mesh&gt; &lt;/Canvas&gt; ); } export default Earth; ``` 在上面的代码中,我们创建了一个SphereGeometry来表示地球,并使用MeshBasicMaterial为其...

    Android代码-简单方便的WebView和Javascript双向交互的框架

    supports parsing and callback for JS primitive types Modular management support System WebView and Custom WebView permission authentication is implemented by Native, JS do not need to depend other ...

    Flex辅助设计工具四合一

    Flex辅助设计工具四合一:&lt;br&gt;Flex3StyleExplorer_V3.0Beta.swf&lt;br&gt;Flex2 Filter Explorer.swf&lt;br&gt;EnhancedButtonDemo.swf&lt;br&gt;Flex2PrimitiveExplorer.swf

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    template&lt;&gt;,藉此告訴編譯器哪些符號是 型別參數( type parameters),如圖 8。 template &lt;typename T&gt; class Rect : public Shape 侯捷觀點 JDK 1.5的泛型實現(Generics in JDK 1.5)7 { ...

    js基础总结

    - 示例:`&lt;script type="text/javascript" src="1.js"&gt;&lt;/script&gt;` ### JavaScript 数据类型 - **原始类型(Primitive Types):** - String:字符串类型,用于存储文本数据。 - Number:数字类型,包括整数和...

    javascript学习

    &lt;script src="script.js"&gt;&lt;/script&gt; ``` - **HTML5的数据属性**:如`data-*`,配合JavaScript操作DOM元素。 ```html &lt;button data-action="click-me"&gt;点击我&lt;/button&gt; &lt;script&gt; document.querySelector('...

    cesium绘制工具代码,html,三维开发实例 前端开发

    &lt;button id="drawButton"&gt;开始绘制&lt;/button&gt; &lt;script&gt; var viewer = new Cesium.Viewer('cesiumContainer'); var drawButton = document.getElementById('drawButton'); drawButton.addEventListener('click',...

    javascript学习笔记

    - **引入外部 JavaScript 文件**:使用 `&lt;script src="filename.js"&gt;&lt;/script&gt;` 可以引入外部 JavaScript 文件。 ```html &lt;html&gt; &lt;head&gt; &lt;script src="myfunctions.js"&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- 页面...

    javaenum源码-BeanUtils:BeanUtils库是一个Javabean复制工具,功能强大,性能高

    &lt;artifactId&gt;BeanUtils&lt;/artifactId&gt; &lt;version&gt;1.0.11&lt;/version&gt; &lt;/dependency&gt; 特征: 支持带有 Java 原始类型的副本自动转换为其 Java 类型。 例如 int &lt;=&gt; 整数 支持数组类型的复制。 例如 int[] &lt;=&gt; ...

    oracle-toolset

    $ certik tx oracle create-operator &lt; account&gt; &lt; collateral&gt; --name &lt; operator&gt; --from &lt; account&gt; --fees 5000uctk -y -b block 在certik主页中创建oracle运算符配置文件(默认为.certik/config/oracle-...

    ibatis-sqlMap

    - **Simple Dynamic SQL Elements**:简单的动态SQL元素,如`&lt;trim&gt;`、`&lt;where&gt;`等。 - **Programming with DataMapper: The API** - **Configuration**:配置DataMapper,包括设置数据源、事务管理器等。 - **...

Global site tag (gtag.js) - Google Analytics