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学习笔记之typedef
typedef unsigned long long weiboId; typedef 定义一个使用方便的类型,谓之为“宏定义“. unsigned long long 是一种无符号的长长整型.本应该 ...
- Excel快捷键
Ctrl 组合快捷键 关键字 说明 Ctrl+PgDn 在工作表选项卡之间从左至右进行切换. Ctrl+PgUp 在工作表选项卡之间从右至左进行切换. Ctrl+Shift+& 将轮廓边框应用 ...
- Lightmapping
当游戏场景包含了大量的多边形时,实时光源和阴影对游戏性能的影响会很大.这时更适合使用Lightmapping技术,将光线效果预渲染成贴图使用到多边形上模拟光影效果.这种方式不用担心光源数量和阴影对性能 ...
- net windows Kafka
net windows Kafka 安装与使用入门(入门笔记) 完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS 在环境搭建 ...
- (译)iOS Code Signing: 解惑
子龙山人 Learning,Sharing,Improving! (译)iOS Code Signing: 解惑 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切 ...
- Regex.Match 方法
Regex.Match 方法 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回. 重载列表 (1) 在指定的输入字符串中搜索 Regex 构造函数中指定的正则 ...
- 高性能网络编程1----accept建立连接
转 http://taohui.org.cn/tcpperf1.html 陶辉 taohui.org.cn 回到应用层,往往只需要调用类似于accept的API就可以建立TCP连接.建立连接的流程大 ...
- cookie中转注入实战
随着网络安全技术的发展,SQL注入作为一种很流行的攻击方式被越来越多的人所知晓.很多网站也都对SQL注入做了防护,许多网站管理员的做法就是添加一个防注入程序.这时我们用常规的手段去探测网站的SQL注入 ...
- Unity3D研究院之IOS全自动打包生成ipa
接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿.. 建议大家先看一下上一篇文章.http://www.xuanyusong.com/ ...
- POJ 3080 Blue Jeans (多个字符串的最长公共序列,暴力比较)
题意:给出m个字符串,找出其中的最长公共子序列,如果相同长度的有多个,输出按字母排序中的第一个. 思路:数据小,因此枚举第一个字符串的所有子字符串s,再一个个比较,是否为其它字符串的字串.判断是否为字 ...