Java 包装类 自动装箱和拆箱
包装类(Wrapper Class)
包装类是针对于原生数据类型的包装。
因为有8个原生数据类型,所以对应有8个包装类。
所有的包装类(8个)都位于java.lang下。
Java中的8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。
下面以主要Integer类为例说明。
Integer
Integer类将int类型的值包装到一个对象中。
Integer通过下面这个构造方法构造相应的整型数的对象:
public Integer(int value);
public int intValue()方法则返回这个包装类所包装的整型值。
自动装箱/拆箱(Autoboxing/unboxing)
JDK5.0的一个新特性是自动装箱和自动拆箱。
自动装箱/拆箱大大方便了基本类型数据和它们包装类的使用。
自动装箱:基本类型自动转为包装类(int >> Integer)
自动拆箱:包装类自动转为基本类型(Integer >> int)
比如下面的例子:

import java.util.ArrayList;
import java.util.Collection; public class BoxTest
{
public static void main(String[] args)
{
Collection<Integer> c = new ArrayList<Integer>(); c.add(3);//将int类型的3转换为Integer类型并放到集合当中
}
}

缓存
下面这个程序很奇怪:

public class BoxTest2
{
public static void main(String[] args)
{
Integer i1 = 200;
Integer i2 = 200; if (i1 == i2)
{
System.out.println("i1 == i2"); }
else
{
System.out.println("i1 != i2"); }
} }

当两个数都是100的时候==判断相等,当两个数都是200的时候判断不相等。
查看内部实现代码可知,Integer类有一个缓存,它会缓存-128~127之间的整数。
当调用valueOf的时候,不会生成新的对象,而是从缓存中取出对象。这样可以提高性能。
使用构造方法的时候肯定会生成新的对象。
Java 包装类 自动装箱和拆箱的更多相关文章
- java -关于包装类自动装箱与拆箱拓展+整形常量池
关于自动装箱与拆箱 1.包装类与基本数据类型的自动转换,叫装箱和拆箱(类型自动转换) 2.自动装箱拆箱是在编译器,编译器自动配转换方法,实现装箱和拆箱.所以这个过程发生在编译期 3.只有需要相互类型转 ...
- Java中自动装箱与拆箱
一.什么是封装类? Java中存在基础数据类型,但是在某些情况下,我们要对基础数据类型进行对象的操作,例如,集合中只能存在对象,而不能存在基础数据类型,于是便出现了包装器类.包装器类型就是对基本数据类 ...
- Java的自动装箱和拆箱
一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Jav ...
- 详解Java的自动装箱与拆箱(Autoboxing and unboxing)
一.什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 //自动装箱 Integer total = 99; //自定拆箱 int totalprim = total; 简单一点说,装箱 ...
- Java的自动装箱与拆箱(Autoboxing and unboxing)
一.什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 1 //自动装箱 2 Integer total = 99; 3 4 //自动拆箱 5 int totalprim = total ...
- Java的自动装箱和拆箱的简单讲解
装箱就是把基础类型封装成一个类.比如把int封装成Integer,这时你就不能把他当成一个数了,而是一个类了,对他的操作就需要用它的方法了. 拆箱就是把类转换成基础类型.比如你算个加法什么的是不能用 ...
- Java基础——自动装箱与拆箱
装箱:把基本数据类型转换为对应的包装类类型 //装箱Integer i=Integer.ValuesOf(100);//自动装箱integer i1=100;//能够直接赋值成功的称为自动装箱,也调用 ...
- Java SE之装箱与拆箱【基本数据类型的包装类/==与equals方法】
对象包装器.自动装箱与拆箱 2016/11/30 晚 特点 1.所有的基本类型都有一个包装器类与之对应.[Integer,Boolean,Long,Character,Shor ...
- [转]JAVA自动装箱和拆箱
http://www.cnblogs.com/dolphin0520/p/3780005.html 1.Java数据类型 装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类 ...
随机推荐
- 从零开始学ios开发(二十):Application Settings and User Defaults(下)
在上一篇的学习中,我们知道了如何为一个App添加它的Settings设置项,在Settings设置项中我们可以添加哪些类型的控件,这些控件都是通过一个plist来进行管理的,我们只需对plist进行修 ...
- c++ void,内存操作函数
void的含义 void的字面意思是“无类型”, void * 则为“无类型指针”, void * 可以指向任何类型的数据 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变 ...
- c++ 哪些自定义的数据类型
http://www.cnblogs.com/ShaneZhang/archive/2013/06/21/3147648.html 这些数据类型是 C99 中定义的,具体定义在:/usr/includ ...
- 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
// test20.cpp : 定义控制台应用程序的入口点. // include "stdafx.h" include include include include inclu ...
- function复习
#include <iostream> #include <functional> using namespace std; int fun(int a) { std::cou ...
- C# 虚方法 与 隐藏方法(new) 区别
重写和隐藏的定义: 重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的 例如:基类方法声明为virtual(虚方法),派生类中使用override申明此 ...
- 【锋利的JQuery-学习笔记】遮罩层
效果图: 鼠标移动到上面后---> html: <div id="jnBrandList"> <ul> <li> <a href= ...
- hdu 4888
网络流建模,建模不难,难在找环: #include<cstdio> #include<algorithm> #include<vector> #include< ...
- uva 1344
这本来是暑假集训做过的一个题 现在做来 就三种情况 1.田忌最快的比齐王最快的快 就用最快的比最快的 2.田忌最慢的比齐王最慢的快 就用最慢的比最慢的 3.上两种情况都不符合 用田忌最慢的去比齐王最快 ...
- Unity3D Development模式下的一个小问题
今天客户提交了一个反馈,说测试版本的应用在按下电源键的时候屏幕变黑,然后重新按下电源键启动的时候发现没有出现屏幕锁屏的情况,直接回到应用界面. 我这边看了一下,发现如果装了360之类的手机助手就没这个 ...