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;
}
16、java包装类的更多相关文章
- Java 包装类笔记
@(JDK)[包装类] Java 包装类笔记 当需要使用到集合的时候,如果是基础数据类型,需要转换为包装类,再使用,在JDK1.5之前,每次使用的时候,都需要手动转换为包装类(称为装箱),然后在使用的 ...
- Java包装类及其拆箱装箱
Java包装类,Wrapper~由于在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型).基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提 ...
- Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集
ylbtech-Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集 1.返回顶部 1. Java 实例 - 数组并集 Java 实例 以下实例演示了如何使用 unio ...
- Java包装类的常量池
Integer a=Integer.valueOf(100); Integer b=Integer.valueOf(100); System.out.println(a==b); Double d1 ...
- JAVA包装类的缓存范围
JAVA包装类的缓存范围 前两天面试遇到两个关于JAVA源码的问题,记录下来提醒自己. 1.写出下面的输出结果 System.out.println(Integer.valueOf("100 ...
- java包装类和值类型的关系
java包装类总是让人疑惑 它与值类型到底是怎么样一种关系? 本文将以int和Integer为例来探讨它们的关系 java值类型有int short char boolean byte long fl ...
- java包装类的缓存机制(转)
出处: java包装类的缓存机制 java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存.提高性能的功能,只有在自动装箱时有效 Integer包装类 举个栗子: Integer a = ...
- Java—包装类、Date和SimpleDateFormat、Calendar类
包装类 基本数据类型不能调用方法,功能简单,为了让基本数据类型也具备对象的特性,Java为每个基本数据类型提供了一个包装类,这样就可以像操作对象那样来操作基本数据类型. 基本类型和包装类之间的对应关系 ...
- Java 包装类及其与String转换、进制转换
一.包装类 1.基本类型和引用类型 Java中的基本类型我们都知道有8种,但是作为基本类型限制功能的发挥,例如整形转String类型等可能需要类方法实现会更加简便.那么八个基本类型对应八个包装类,即引 ...
随机推荐
- 报错:该字符串未被识别为有效的DateTime
报错:该字符串未被识别为有效的DateTime □ 背景 前端的搜索条件中包含关于时间的字符串,由jquery ui的datepicker产生时间字符串. 服务端对时间做了一次转换:DateTime. ...
- 建议:一般地,建议使用xcode 4.3开发app 而不是使用xcode4.5
建议:一般地,建议使用xcode 4.3开发app 而不是使用xcode4.5 因为,xcode4.5 默认的sdk 是ios6.0,这里面有很多新特性.比如,Autolayout 等,这个特性再io ...
- JSP 上传文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...
- Unity中关于Device Filter的选择问题
引言 目前工作的Unity版本是5.4.1f,发布Android版本.apk的时候,对包体的大小有些疑问,就上网查了下资料,发现Build Settings——Player Settings——Oth ...
- 26个Jquery1.4使用小技巧
1. 禁止右键点击 1. $(document).ready(function(){ 2. $(document).bind("contextmenu&quo ...
- from __future__ import print_function
1.在python2.x的环境是使用下面语句,则第二句语法检查通过,第三句语法检查失败 from __future__ import print_function priint('good') pri ...
- bzoj 1975 [Sdoi2010]魔法猪学院
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1758 Solved: 557[Submit][Statu ...
- WhyDemo: 画线圈LineFlower
画线圈LineFlower 刚发过画线圈的屏保程序,现在发一下它的可编辑版本.可以对线圈的相关参数进行设置. 小时候玩过一种画线圈的玩具,将一个圆形齿轮在一个大圈里转,会画出各种图形来.这个 ...
- Ubuntu Linux自动发邮件配置及邮件发送脚本
测试环境:Ubuntu 11.10 1. 安装mutt及msmtp软件 sudo apt-get install mutt sudo apt-get install msmtp 2. 编辑配置文件vi ...
- Jquery中parent()和parents()
一.parent()方法 此方法取得匹配元素集合中每个元素的紧邻父元素,也就是第一级父元素,而不是所有的祖先元素.所取得的父元素集合也可以使用表达式进行筛选. 二.parents()方法 此方法取得一 ...