java八股文之基本数据类型

 八种基本数据类型

        6种数字类型:        

  • byte : 一个字节  默认值为 0,对应包装类型Byte

  • short: 二个字节,  默认值为 0,对应包装类型Short

  • int :四个字节,  默认值为 0,对应包装类型Integer

  • long:八个字节,默认值0L。long型数据必须要在数值后加上L,否则认定为整型int,对应包装类型Long

  • float:四个字节,0f,对应包装类型Float

  • double:八个字节,0d,对应包装类型Double

    一种字符型
  • char:2个字节  ,'u0000',使用单引号。对应包装类型Character

         一种布尔型

  • boolean,对应包装类型Boolean,默认值false

基本数据类型和包装类型的区别

  • 用途:包装类型可以用于泛型,基本类型不可以。
  • 存储方式:基本类型作为局部变量存放在java虚拟机栈中的局部 变量表中,成员变量(未被 static 修饰 ),存放在java虚拟机的堆中。包装类型属于对象类型,几乎所有的对象实例存在 于堆中。
  • 默认值,包装 类型默认为null,基本类型有默认值。
  • 比较方式,对于基本类型,==比较的是值,包装类型比较内存地址。所以包装类型的值的比较都用equals。

自动拆箱与装箱,与其原理

  1. 装箱:将基本类型用他们对应的引用类型包装起来。
  2. 拆箱:将包装类型转化为基本数据类型

        举例:        

Intege i= 10;//装箱
int n =i;//拆箱

        装箱其实就是调用包装类的valueOf()方法,拆箱就是调用了intValue()即xxxValue()方法。

        频繁拆装箱也会严重影响系统性能,应该避免不必要的拆装箱操作。

浮点数的精度损失问题

        由于计算机表示数字的位数是有限的,而无限循环的小数在存储时只能截断,就会导致小数精度发生损失。

如何避免?

  BigDecimal 可以实现对浮点数的运算,不会造成精度丢失。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过 BigDecimal 来做的。

超过 long 整型的数据应该如何表示?

  1. 基本数值类型都有一个表达范围,如果超过这个范围就会有数值溢出的风险。

    在 Java 中,64 位 long 整型是最大的整数类型。

  2. BigInteger 内部使用 int[] 数组来存储任意大小的整形数据。

    相对于常规整数类型的运算来说,BigInteger 运算的效率会相对较低。

           

你可能感兴趣的:(java,开发语言)