美文网首页
基本数据类型和其包装类

基本数据类型和其包装类

作者: luoqiang108 | 来源:发表于2018-02-28 17:19 被阅读0次

    包装类概述

    • 用于将基本类型数据(内存中保存的是数据)当做引用类型看待。
    • Java语音的8中基本类型分别对应了8中“包装类”,每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了一些针对该数据类型的实用方法。
    包装类 对应的基本类型
    java.lang.Integer int
    java.lang.Long long
    java.lang.Double double
    java.lang.Character char
    java.lang.Boolean boolean
    java.lang.Byte byte
    java.lang.Float float
    java.lang.Short short
    /**
     * 八大基本数据类型的包装类
     */
    public class ElementaryDataType {
        //八大基本数据类型默认值
        byte bt;//0
        short s;//0
        int i;//0
        long l;//0
        float f;//0.0f
        double d;//0.0d
        char c;//\u0000(无符号0字符)
        boolean b;//false
        Integer integer;//其余引用类型初始值为null
        public static void main(String[] args) {
            int i = 1;//基本类型,不是Object子类!
            //在java里面,整数默认类型是整型(int),而小数的默认类型是双精度浮点型(double);
            float f = 1.2f;//表示一个float类型要在后面加f,否则小数默认表示的是double,需要强转才能赋值给float
            /**
             * 实例化一个对象,该对象代表整数1
             * Integer的作用是让基本数据类型int作为一个引用类型看待。
             * 这样就可以参与到面向对象的编程方式了。
             * 由此我们可以将一个int当做一个Object去看待了。
             * 这种从基本类型转变为引用类型的过程称之为“装箱”。反之叫“拆箱”。
             * 在java的jdk1.5后会进行自动的拆装箱
             */
            Integer integer = new Integer(1);
            //拆箱方法
            int a = integer.intValue();
            Double d = new Double(2.2);//装箱
            d = Double.valueOf(2.2);//装箱
            double b=d.doubleValue();//拆箱
            //自动装箱
            d = 2.2;
            //自动拆箱
            b = d;
            //包装类的一些常用功能
            /*
            * 包装类可以将描述该类型数据的字符串转换为对应的数据类型
            */
            String numStr= "123";
            /*
            * 包装类都可以将字符串转换为其类型
            * 方法是:parseXXX   XXX代表其类型
            * 这里要特别注意!一定要保证待转换的字符串描述的确实是
            * 或者兼容要转换的数据类型!否则会抛异常。
            */
            int num = Integer.parseInt(numStr);
            long longNum = Long.parseLong(numStr);
            double doubleNum = Double.parseDouble(numStr);
            System.out.println(num+longNum+doubleNum);//369.0
            /*
            * Integer为我们提供了几个有趣的方法
            * 将一个整数转换为2进制形式并以字符串返回
            *  * 将一个整数转换为16进制的形式并以字符串返回
            */
            String bStr = Integer.toBinaryString(num);//转换为2进制
            String hStr = Integer.toHexString(num);//转换为16进制
            System.out.println(bStr);//1111011
            System.out.println(hStr);//7b
            /*
            * 所有包装类具有几个共通的常量
            */
            int max = Integer.MAX_VALUE;//获取int最大值
            int min = Integer.MIN_VALUE;//获取int最小值
            double dMax = Double.MAX_VALUE;
            double dMin = Double.MIN_VALUE;
            System.out.println(max);//2147483647
            System.out.println(min);//-2147483648
            System.out.println(dMax);//1.7976931348623157E308
            System.out.println(dMin);//4.9E-324
        }
    }
    

    BigDecimal类

    表示精度更高的浮点型

    import java.math.BigDecimal;
    /**
     * BigDecimal类
     * 该类可以进行更高精度的浮点运算
     */
    public class BigDecimalTest {
        public static void main(String[] args) {
            /*
            * 创建一个BigDecimal实例,可以使用构造方法
            * BigDecimal(String numberFormatString)
            * 用字符串描述一个浮点数作为参数传入(理论上字符串可以无限长,可以不丢表示高精度浮点型数据)
            */
            BigDecimal num1 = new BigDecimal("3.0");
            BigDecimal num2 = new BigDecimal("2.9");
            /**
             * BigDecimal可以做加减乘除等运算
             * add:加法
             * multiply:乘法
             * 这里要注意除法(除不尽的时候):
             * 所以,对于除法而言,,我们要制定取舍模式,
             * 否则会一直计算下去,直到内存溢出报错。
             */
            BigDecimal result = num1.subtract(num2);//num1-num2
            System.out.println(result);//0.1
            //保留给定精度位数后四舍五入
            result = num1.divide(num2,8,BigDecimal.ROUND_HALF_UP);
            System.out.println(result);//1.03448276
            /**
             * 这里需要注意,BigDecimal可以描述比Double还要高的精度
             * 所有在转换为基本类型时,可能会丢失精度!
             */
            int i = result.intValue();
            System.out.println(i);//0
            float f = result.floatValue();
            System.out.println(f);//0.1
        }
    }
    

    BigInteger类

    可以保存更长位数的整数

    import java.math.BigInteger;
    /**
     * BigInteger类
     * 该类可以保存更长位数的整数
     * 理论上:BigInteger存放的整数只受内存容量影响,有容乃大。
     */
    public class BigIntegerTest {
        public static void main(String[] args) {
            /**
             * BigInteger同样支持使用描述更长位数的整数的字符串来
             * 创建BigInteger
             */
            BigInteger num = new BigInteger("1");
            /**
             * 这种方式我们可以将一个整数的基本类型转换为BigInteger的实例
             */
            num = BigInteger.valueOf(1);
            /**
             * BigIntegert同样支持加减乘除方法
             * 200的阶乘
             */
            for (int i = 1; i < 200; i++) {
                num = num.multiply(BigInteger.valueOf(i));
            }
            System.out.println(num);//3943289336823952517761816069660925311475679888435866316473712666221797249817016714601521420059923119520886060694598194151288213951213185525309633124764149655567314286353816586186984944719612228107258321201270166459320656137141474266387621212037869516201606287027897843301130159520851620311758504293980894611113948118519486873600000000000000000000000000000000000000000000000
        }
    }
    

    相关文章

      网友评论

          本文标题:基本数据类型和其包装类

          本文链接:https://www.haomeiwen.com/subject/doobxftx.html