首页 > 代码库 > 包装类

包装类

包装类

1、概述

java是面向对象的语言,但是java中支持的8个基本类型不是面向对象的。他们是以值的形式存在的,而不是对象的形式。在面向对象开发过程中及其不方便。为了将基本类型变成以对象形式存在,java对8个基本类型提供了引用类型。

这8个引用类型称为基本类型的“包装类”

基本类型                包装类

int                  java.lang.Integer

char                java.lang.Character

byte                       Byte

shor                       Short

long                       Long

float                       Float

double                     Double

boolean                      Boolean

            包装类带来的好处,除了可以以对象的形式存在参与面向对象开发外,因为对象还

可以含有方法,所以包装类提供了一些对基本类型数据操作的方法。最常用的就是将字

符串转换为基本类型数据。

注意:包装类对字面量的优化(127内,1个字节)

  使用常量池的方式缓存字面量,这样在出现重复字面量时,不创建新的对象。

  Integer a = Integer.valueOf(1);

  Integer b = Integer.valueOf(1);

  System.out.println(a == b); //true

  Integer a = Integer.valueOf(128);

  Integer b = Integer.valueOf(128);

  System.out.println(a == b); //false

  Float和Double没有进行优化

               Double d1=Double.valueOf(1.1);

                Double d2=Double.valueOf(1.1);

  System.out.println(d1==d2);//false

2、包装类的方法

   (1)将字符串转换为基本类型数据

Integer.parseInt( String  str );

Double.parseDouble( String str )

   (2)Integer提供了可以将数字转化为2进制和16进制并用字符串去描述

        Integer.toBinaryString( int  i);

Integer.toHexString(int  i);

   (3)包装类常用的常量

Integer.MAX_VALUE;

Integer.MIN_VALUE;

Double.MAX_VALUE;

   (4)int a=65;

System.out.println(a);--->相当于 System.out.println(Integer.toString(a));

3、拆装箱

java1.5后支持了一个新的特性------>自动拆装箱

自动装箱:可以自动的将一个基本类型数据变成其包装类实例

自动装箱的语法现象: Integer a = 1;

                            或

                            int i = 1;

                            Integer a = i;

自动拆箱:可以自动将一个包装类实例转变为一个基本类型数据

语法现象:

         Integer i = Integer.valueOf(1);

         int a = i;//自动拆箱

手动装箱:Integer c = Integer.valueOf(3);

  Integer i = new Integer(1);

手动拆箱:Integer i = Integer.valueOf(1);

                int a = i.intValue();  

BigDecimal

java中的double/float在计算时会有舍入误差。要想得到更加精确的结果,可以使用该类。

java.math.BigDecimal

BigDecimal用于计算更精确的小数,同时也可以表示一个很精确的小数。

使用一个BigDecimal实例来表示一个精确的小数,构造方法通常传入一个可以描述该小数的字符串。

该类定义了运算方法 + - * /

add()         用当前浮点数加上另一个浮点数

subtract()      减法

multiply()     乘法

divide()       除法

案例:

BigDecimal num1 = new BigDecimal("3.0");

BigDecimal num2 = new BigDecimal("2.9");

除法要注意,通常我们会使用除法的重载方法

添加舍入模式。(四舍五入)

若不添加这项,那么再遇到两个数相除商为无限小数时,会一致除下去,直到报错。

b1.divide(b2);//报错

BigDecimal b3=b1.divide(b2, 9, BigDecimal.ROUND_HALF_UP);

//表示保留9位有效数字

BigInteger

java.math.BigInteger用来描述更长位数的整数。

也支持加减乘数,用法和BigDecimal一样

BigInteger的存储范围理论上只受内存容量限制。

案例:

BigInteger num1 = new BigInteger("123");

BigInteger num2 = BigInteger.valueOf(1);

求200的阶乘

BigInteger num = new BigInteger("1");

       for(int i = 2;i<=200;i++){

              num = num.multiply(BigInteger.valueOf(i));

       }

System.out.println(num);

包装类