一、包装类的由来:

  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;
}

16、java包装类的更多相关文章

  1. Java 包装类笔记

    @(JDK)[包装类] Java 包装类笔记 当需要使用到集合的时候,如果是基础数据类型,需要转换为包装类,再使用,在JDK1.5之前,每次使用的时候,都需要手动转换为包装类(称为装箱),然后在使用的 ...

  2. Java包装类及其拆箱装箱

    Java包装类,Wrapper~由于在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型).基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提 ...

  3. Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集

    ylbtech-Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集 1.返回顶部 1. Java 实例 - 数组并集  Java 实例 以下实例演示了如何使用 unio ...

  4. Java包装类的常量池

     Integer a=Integer.valueOf(100); Integer b=Integer.valueOf(100); System.out.println(a==b); Double d1 ...

  5. JAVA包装类的缓存范围

    JAVA包装类的缓存范围 前两天面试遇到两个关于JAVA源码的问题,记录下来提醒自己. 1.写出下面的输出结果 System.out.println(Integer.valueOf("100 ...

  6. java包装类和值类型的关系

    java包装类总是让人疑惑 它与值类型到底是怎么样一种关系? 本文将以int和Integer为例来探讨它们的关系 java值类型有int short char boolean byte long fl ...

  7. java包装类的缓存机制(转)

    出处: java包装类的缓存机制 java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存.提高性能的功能,只有在自动装箱时有效 Integer包装类 举个栗子: Integer a = ...

  8. Java—包装类、Date和SimpleDateFormat、Calendar类

    包装类 基本数据类型不能调用方法,功能简单,为了让基本数据类型也具备对象的特性,Java为每个基本数据类型提供了一个包装类,这样就可以像操作对象那样来操作基本数据类型. 基本类型和包装类之间的对应关系 ...

  9. Java 包装类及其与String转换、进制转换

    一.包装类 1.基本类型和引用类型 Java中的基本类型我们都知道有8种,但是作为基本类型限制功能的发挥,例如整形转String类型等可能需要类方法实现会更加简便.那么八个基本类型对应八个包装类,即引 ...

随机推荐

  1. 报错:该字符串未被识别为有效的DateTime

    报错:该字符串未被识别为有效的DateTime □ 背景 前端的搜索条件中包含关于时间的字符串,由jquery ui的datepicker产生时间字符串. 服务端对时间做了一次转换:DateTime. ...

  2. 建议:一般地,建议使用xcode 4.3开发app 而不是使用xcode4.5

    建议:一般地,建议使用xcode 4.3开发app 而不是使用xcode4.5 因为,xcode4.5 默认的sdk 是ios6.0,这里面有很多新特性.比如,Autolayout 等,这个特性再io ...

  3. JSP 上传文件

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  4. Unity中关于Device Filter的选择问题

    引言 目前工作的Unity版本是5.4.1f,发布Android版本.apk的时候,对包体的大小有些疑问,就上网查了下资料,发现Build Settings——Player Settings——Oth ...

  5. 26个Jquery1.4使用小技巧

    1. 禁止右键点击 1.       $(document).ready(function(){ 2.           $(document).bind("contextmenu&quo ...

  6. from __future__ import print_function

    1.在python2.x的环境是使用下面语句,则第二句语法检查通过,第三句语法检查失败 from __future__ import print_function priint('good') pri ...

  7. bzoj 1975 [Sdoi2010]魔法猪学院

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1758  Solved: 557[Submit][Statu ...

  8. WhyDemo: 画线圈LineFlower

    画线圈LineFlower 刚发过画线圈的屏保程序,现在发一下它的可编辑版本.可以对线圈的相关参数进行设置.      小时候玩过一种画线圈的玩具,将一个圆形齿轮在一个大圈里转,会画出各种图形来.这个 ...

  9. Ubuntu Linux自动发邮件配置及邮件发送脚本

    测试环境:Ubuntu 11.10 1. 安装mutt及msmtp软件 sudo apt-get install mutt sudo apt-get install msmtp 2. 编辑配置文件vi ...

  10. Jquery中parent()和parents()

    一.parent()方法 此方法取得匹配元素集合中每个元素的紧邻父元素,也就是第一级父元素,而不是所有的祖先元素.所取得的父元素集合也可以使用表达式进行筛选. 二.parents()方法 此方法取得一 ...