我的博客

何为包装类

将原始类型和包装类分开以保持简单。当需要一个适合像面向对象编程的类型时就需要包装类。当希望数据类型变得简单时就使用原始类型。

原始类型不能为null,但包装类可以为null。包装类可用于实现多态性。

通俗的说,为啥要这个东西的存在呢?

首先,我们要知道,Java语言优势就是在于JVM的跨平台机制与面向对象语言的这两大优势。

Java是一个面向对象的编程语言,但是却有一个小小的不足,Java中的八种基本数据类型却是不面向对象的。

那既然不面向对象,就写一个类让这些类型面向对象,于是包装类诞生了。

在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。

包装类

为了方便记忆,除了IntegerCharacter类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。

对应如下

boolean —> Boolean
char —> Character
byte —> Byte
short —> Short
long —> Long
int —> Integer
float —> Float
double —> Double

如何装箱

public class Demo1 {
public static void main(String[] args) {
int a = 20;
Integer i = Integer.valueOf(a);
Integer j = a;
System.out.println(a + " " + i + " " + j);
}
}

首先,我们先定义一个对象,我们这里是int类型,那我们就直接使用了Integer i,定义了一个对象i,然后我们使用Integer类中的valueOf()方法将基本的int类型a转换成了对象i

此时,这个i是一个对象,携带的int值为20

但是,我们看看,给出的代码中还有一段,Integer j = a,是不是疑惑为什么他没有用valueOf()方法?

这是因为JDK自从1.5版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。

所以,他其实用了这个方法,只是你看不见罢了,我们称之为自动装箱。

输出的值也都一样。这里为了显示自动装箱,所以才去定义了valueOf()

如何拆箱

public class WrapperExample2 {
public static void main(String args[]) {
Integer a = new Integer(3);
int i = a.intValue();
int j = a;
System.out.println(a + " " + i + " " + j);
}
}

拆箱就不多说,使用对象调用intValue()方法即可。

同时他也支持自动拆箱。

演示

public class Demo1 {
public static void main(String[] args) {
int a = 20;
Integer i = Integer.valueOf(a);
Integer j = a;
System.out.println("装箱"+i);
System.out.println("自动装箱"+j); //对上面的j进行拆箱
int x = j.intValue();
int y = j;
System.out.println("拆箱"+i);
System.out.println("自动拆箱"+j);
}
}

运行结果如下:

自动装箱和拆箱与手动没有区别,我们自然平常选择自动啦!

Java包装类,基本的装箱与拆箱的更多相关文章

  1. java包装类,自动装箱,拆箱,以及基本数据类型与字符串的转换

    package cn.learn; import java.util.ArrayList; /* 包装类 java.lang中,基本运算类型效率高 装箱:把基本类型数据包装为包装类 1.构造方法 In ...

  2. 《Java中的自动装箱和拆箱功能.》

    //Java中的自动装箱和拆箱功能. class AutoboxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量 ...

  3. Java暗箱操作之自动装箱与拆箱

    我以前在写Android项目的时候,估计写得最多最熟练的几句话就是: List<Integer> list = new ArrayList<Integer>(); list.a ...

  4. Java基础(十四)--装箱、拆箱详解

    Java中基本数据类型都有相对应的包装类 什么是装箱?什么是拆箱? 在Java SE5之前,Integer是这样初始化的 Integer i = new Integer(10); 而在从Java SE ...

  5. java中的自动装箱和拆箱

    一.什么是自动装箱和拆箱: 我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i=new I ...

  6. 深入剖析Java中的自动装箱和拆箱过程

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...

  7. Java中的自动装箱与拆箱

    自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如 ...

  8. Java基础 【自动装箱和拆箱、面试题】

    JDK 1.5 (以后的版本)的新特性自动装箱和拆箱 1. 自动装箱:把基本类型转换为包装类类型 int a =10; Integer i = new Integer(a); Integer valu ...

  9. java 基础知识七 装箱和拆箱

    java  基础知识七  装箱和拆箱 数据类型可分为两大种,基本数据类型(值类型)和类类型(引用数据类型) 装箱:把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质    基本数据类型 ...

  10. java 中的自动装箱和拆箱操作

    在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成一个 ...

随机推荐

  1. CSC3100

    其实是存一下代码 1. AVL的java实现 维护一下每个点左右子树深度差,差绝对值大于2就转,转的方式和treap, splay转的方式差不多.旋转操作可以使两端差归零变得更平衡. 虽然平衡但转的次 ...

  2. 《HelloGitHub》第 72 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  3. 怎么让一个div消失在视野里

    怎么让一个div消失在视野里 视野内隐藏 1.设置高度宽度为0 div { height: 0; width: 0; } 2.设置透明度为0 div { opacity: 0; } 3.设置displ ...

  4. java 8 一个list过滤另外一个list

  5. svn 清理报错

    Can't install '*' from pristine store, because no checksum is recorded for this file svn同步时,提示clean ...

  6. ubuntu16 和ubuntu18安装及设置静态ip

    1.准备ubuntu16镜像2.安装:https://zhuanlan.zhihu.com/p/1447048653.安装ubuntu后,sudo passwd root这个命令建立root用户的密码 ...

  7. 为什么WAIT必须在同步块中

    我们知道java的Object有wait和notify方法,如果要使用wait和notify的话,那么必须在synchronized块中,否则会抛出IllegalMonitorStateExcepti ...

  8. Zookeeper Watcher 机制 -- 数据变更通知 ?

    Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功 ...

  9. Java 中 ++ 操作符是线程安全的吗?

    不是线程安全的操作.它涉及到多个指令,如读取变量值,增加,然后存 储回内存,这个过程可能会出现多个线程交差.

  10. js技术之转换为大写toUpperCase()

    案例:把所有单词以空格为分割并将首字母转为大写 <!DOCTYPE html><html lang="en"><head> <meta c ...