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

[转]避免不必要的自动装箱、拆箱

阅读更多

Java 中有下面几种基本数据类型:double,float,long,int,short,char,boolean。

分别对应下面几个类包装器:Double,Float,Long,Integer,Short,Character,Boolean。

我们知道基本类型与对应的类之间可以无缝自动转换,这种转换就涉及到了JVM自动装箱和拆箱了,下面列出2个很简单装箱和拆箱的列子:

// 装箱
int i = 0;
// 把i这个基本类型的数赋给Integer类的变量,JVM就会自动装箱
Integer int = i;

// 拆箱
int j = int;

装箱和拆箱都是要花费CPU和内存资源的,所以如果没必要尽量避免使用JVM的自动装箱、拆箱。

下面用二段简单的代码测试一下自动装箱的性能影响:

代码一:
Integer result = 0;
for(int i =0;i < 50000000;i++){
result += i; // 自动装箱
}

代码二:
int result = 0;
for(int i =0;i < 50000000;i++){
result += i;
}

在本机测试第二段代码的效率比第一段代码快10倍左右。

 

转自: http://www.blogjava.net/BearRui/archive/2010/03/03/avoid_autoboxing.html

分享到:
评论

相关推荐

    装箱与拆箱(一)

    因此,在编写代码时,应尽量避免不必要的装箱和拆箱操作,尤其是在性能敏感的代码段中。 在C#的泛型中,装箱和拆箱也有特别的应用。例如,当你使用泛型列表(List)并传入值类型时,如果T是值类型,那么在添加元素时...

    Java中的自动装箱与拆箱:深入理解基本数据类型与对象的转换

    - 在适当的情况下,避免不必要的装箱和拆箱操作,尤其是在性能敏感的部分。 总之,自动装箱和拆箱是Java语言中的一个重要特性,极大地提高了代码的可读性和编写效率。理解这些特性的内部工作原理及应用场景可以帮助...

    C#源代码-装箱和拆箱.zip

    因此,在编写高性能的C#代码时,应尽量减少不必要的装箱和拆箱操作。 **源代码示例:** 压缩包中的源代码很可能是为了演示装箱和拆箱的不同情况,包括成功装箱、拆箱,以及可能出现的错误情况。通过分析和运行这些...

    java陷阱之自动装箱共2页.pdf.zip

    在编写涉及大量装箱和拆箱操作的代码时,需要特别注意潜在的性能和并发问题,选择合适的数据结构和算法,以避免不必要的对象创建和内存浪费。同时,理解Java自动装箱和拆箱的原理,有助于在编写代码时做出明智的选择...

    轻松学习C#的装箱与拆箱

    因此,应当尽量减少不必要的装箱操作,特别是在循环或频繁的数据转换中。 为了避免频繁装箱导致的性能下降,可以采取以下策略: 1. 使用值类型而非引用类型,除非确实需要引用的特性。 2. 利用泛型,因为泛型类和...

    Java中的装箱和拆箱深入理解

    在Java SE 5及以后的版本中,为了方便开发者使用,引入了自动装箱和拆箱的功能。 一、什么是装箱和拆箱? 装箱(Boxing)是将Java的基本数据类型转换为其对应的包装器类型的自动过程。例如,将int类型转换为...

    c#装箱和拆箱知识整理

    因此,应尽可能避免不必要的装箱,例如通过使用泛型、重载方法或提前装箱优化循环。 7. **进一步理解装箱/拆箱**:装箱后的对象具有方法表指针,允许调用值类型自定义的方法。例如,结构体A实现了ICloneable接口,...

    浅析C# 装箱和拆箱

    为了避免不必要的装箱和拆箱,可以考虑以下策略: 1. 使用泛型:C# 2.0引入的泛型允许创建类型安全且无需装箱的容器和方法。 2. 避免在不必要的情况下将值类型转换为Object:除非确实需要,否则应尽量避免将值类型...

    Java拆箱与装箱实例详解

    在处理大量数据或在性能关键的代码段中,应尽量避免不必要的装箱和拆箱操作,考虑使用基本类型而非包装类。 综上所述,Java的拆箱和装箱机制是语言设计的一个重要特性,它使得基本类型和引用类型可以在特定情况下...

    JavaScript装箱及拆箱boxing及unBoxing用法解析

    在JavaScript中,装箱(boxing)和拆箱(unboxing)是两个重要的概念,它们涉及到基本数据类型和引用数据类型之间的转换。基本数据类型包括Number、String、...因此,优化代码时应尽量减少不必要的装箱和拆箱操作。

    C#性能优化

    理解引用类型和值类型的区别,避免不必要的装箱拆箱操作。此外,及时释放不再使用的资源,遵循IDisposable接口,以降低内存占用。 除此之外,代码层面的优化也不可忽视。例如,避免使用循环内的方法调用,尽可能...

    C#中的类型转换 超强悍

    因此,编写转换代码时要确保转换的安全性,避免不必要的错误。 总之,C#中的类型转换是程序设计中不可或缺的部分,理解装箱、拆箱以及不同数据类型间的转换规则对于编写高效、可靠的代码至关重要。通过熟练掌握这些...

    testBoxingApp.rar

    在C#编程语言中,装箱(Boxing)和拆箱(Unboxing)是与值类型(Value Types)和引用类型(Reference Types)之间...在日常开发中,合理地使用装箱和拆箱可以提高代码的灵活性,但同时也要注意避免不必要的性能开销。

    cs代码-装箱转换1023

    因此,开发者应尽量避免不必要的装箱和拆箱操作,特别是在性能敏感的代码中。 在“main.cs”文件中,可能包含了实现装箱和拆箱的示例代码。通过阅读和分析这个文件,我们可以更深入地理解这些概念在实际编程中的...

    Java笔记——2017年3月3日

    4. **自动装箱拆箱**:Java自动装箱拆箱是将基本数据类型与对应的包装类之间进行自动转换的过程。例如,从int到Integer,反之亦然。这项特性简化了代码,但也可能导致内存开销,特别是在大量循环中。 5. **foreach...

    c#数据类型转换,BYTE,float,double,char类型间的转换方法 (3).docx

    在C#编程中,数据类型转换是常见的操作,特别是在处理不同数据类型的运算和交互时。本文将详细讨论C#中的数据类型转换,包括BYTE、float、...在处理数据时,确保数据类型匹配,避免不必要的类型转换,以提高程序性能。

    如何编写高效的ANDROID代码

    - **避免不必要的装箱拆箱操作**:尽量使用基本数据类型作为键或值,减少自动装箱拆箱操作。 #### 六、静态字段使用 在类中定义静态字段(如`static int`或`static String`)可以帮助减少内存消耗,因为这些字段在...

    详解_NET中六个你必须知道的重要概念

    开发者应该基于数据的实际需求和特性,合理选择数据类型,并注意在编写代码时避免不必要的类型转换,以确保应用程序能够高效、稳定地运行。在实际应用中,深入了解和运用这些概念,可以在内存分配、性能优化等方面...

Global site tag (gtag.js) - Google Analytics