zoukankan      html  css  js  c++  java
  • 16、java包装类

    一、包装类的由来:

      JAVA是面向对象的编程语言,但它也包含了8种基本数据类型,这8个基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备“对象”的特性:没有属性,方法可以被调用。JAVA之所以提供这8种基本数据类型,主要是为了照顾程序员的传统的习惯。

      如果没有包装了,那么使用基本的算术运算将非常麻烦,比如说计算一个1+2=3的运算

    //第一种方式使用面向对象的方式
    Integer a=new Integer(1);
    Integer b=new Integer(2);
    //当然如果不支持基本数据类型运算,可能会增加一个add方法如下
    nteger c=Integer.add(a,b);
            
            
    //第二种方式使用基本数据类型方式
    int c=1+2;

      明显使用第二种方式简单方便的多。所以JAVA为了保留正在编程方式,就保留了这8中基本数据类型。但在某些时候,基本数据类型就有一些制约,例如所有引用类型的变量都继承了Object类,都可以当成Object类型变量使用。但基本数据类型的变量就不可以,如果有个方法需要Object类型的参数,但实际需要的值却是2,3等,这可能就比较难以处理。

      为了解决8个基本数据类型的变量不能当成Object类型变量使用的问题,JAVA提供了包装类的概念,为了8个基本数据类型分别定义了相应的引用类型。

    二、基本数据类型和包装类的对应关系

    基本数量类型 包装类 继承父类
     byte   Byte  java.lang.Number
     short Short  java.lang.Number
     int Integer  java.lang.Number
     long Long  java.lang.Number
     float Float  java.lang.Number
     double Double  java.lang.Number
     boolean Boolean  java.lang.Object
     char Character  java.lang.Object

      8个包装类,除了Character外,其它都可以通过传递一个字符串来构建,例如:Integer a=new Integer("123")

      【特别注意】:如果构建对象为Character时,当传入字符串为true时(不区分大小写),都会创建true对应关系的Character对象,否则将创建false对应关系的Character对象

            如 :new Charater("trUE")——true         new Character("a23")——flase

    三、类型转换

      1、包装类和基本数据类型转换

      

      2、基本数据类型和String之间转换

      

    四、基本类型和包装类占用空间对比

      这里申明两个变量

    int n1 = 100;
    Integer n2 = new Integer(100);

        下图展示n1和n2在内存中的结构

      

      

       通过下面的方式计算后,在将Double类型改成double类型,对比后,可以发现,使用Double类型所暂用的空间多些

    public static long getBytesUsingPrimitives(int n)
          {
            System.gc();   // force garbage collection
            long memStart = Runtime.getRuntime().freeMemory();
            Double[][] a = new Double[n][n];
         
            // put some random values in the matrix
            for (int i = 0;  i < n;  ++i)
              {
                for (int j = 0; j < n;  ++j)
                    a[i][j] = Math.random();
              }
         
            long memEnd = Runtime.getRuntime().freeMemory();
         
            return memStart - memEnd;
          }
  • 相关阅读:
    LoadRunner FAQ
    LoadRunner下载文件脚本
    Loadrunner上传文件解决办法(大文件)
    LoadRunner中的IP欺骗的设置以及误区
    Loadrunner11在win7下录制脚本,ie打不开
    LoadRunner检查点实战
    设置Loadrunner负载机临时文件目录
    ArcGIS中国工具,版权声明,本人没有授权任何单位和个人销售,其他都是盗版,为了你个人和单位利益,请勿购买。 销售QQ:27652980,853740877,电话:18987281928,13108507190,qq群310964401
    勘测定界软件,增加平方米和公顷,小数进位面积不平,自动调平功能;不够线状扣除负面积自动处理功能 ​​​​
    arcgis 获得工具箱工具的个数
  • 原文地址:https://www.cnblogs.com/caoyc/p/4377694.html
Copyright © 2011-2022 走看看