zoukankan      html  css  js  c++  java
  • java面试题(杨晓峰)---第七讲谈谈int和integer有什么区别?

    理解装箱和拆箱的过程.

    对象由三部分组成:对象头,对象实例,对齐填充.

    对象头:一般是十六个字节,分两部分,第一部分:哈希码,锁状态标志,线程持有的锁,偏向线程id,gc分代年龄等,第二部分是类型指针,虚拟机由类型指针指向的类型确定对象的类型.

    对象实例:变量和方法,是父类继承或子类定义.

    对齐填充:类似占位符的作用,因为内存使用都会被填为八字节的倍数.

      1. int和integer

    JDK1.5引入了自动装箱与自动拆箱功能,java可根据上下文实现int/Integer,double/Double,boolean/Boolean等基本类型与相应对象之间的自动转换,为开发过程带来极大便利.

    对象可以应用常量池,在大量重复数据是可以节省内存,提高速度.

    2.注意事项

    [1]结果超出范围,大数*大数时可能会出现越界的情况.

    [2]基本数据类型转换时,使用类型的声明方式

    错:long result=1234567890*24*365

    对long result=1234567890L*24*365

    [3]慎用基本类型处理货币存储.如采用double常会带来差距,常采用BigDecimal,整形(如果要精确表示分,可将值扩大一百倍转化为整形)解决问题

    [4]优先使用基本类型,原则上,避免无意中的装箱,拆箱行为. 尤其是在性能敏感的场合,

    [5]如果有线程安全的计算需要,建议考虑使用类型Atomiclnteger,AtomicLong这样的线程安全类.部分比较宽的基本数据类型,比如float,double,甚至不能保证更新操作的原子性,可能出现程序仅读取一半数据位的数据

  • 相关阅读:
    位运算一些简单的应用
    运算符的优先级
    Vue.js 指南-基础
    Nginx将项目配置在子目录
    JavaScript创建读取cookie代码示例【附:跨域cookie解决办法】
    JavaScript动态加载资源【js|css】示例代码
    Uploadifive 使用教程【结合七牛】
    mac 配置快捷键快速锁屏
    七牛大文件上传同步工具配置
    使用七牛云存储作为图床
  • 原文地址:https://www.cnblogs.com/lanbofei/p/9122493.html
Copyright © 2011-2022 走看看