我的博客

何为包装类

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

原始类型不能为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. SQL获取当前时间(日期)

    --获取当前日期(如:yyyymmdd)select CONVERT (nvarchar(12),GETDATE(),112) --获取当前日期(如:yyyymmdd hh:MM:ss)select ...

  2. 常用的jdbc的Druid连接池配置

    spring: datasource: username: root password: 888888 url: jdbc:mysql://localhost:3306/mybatis driver- ...

  3. Redis的集群搭建(四)

    1.redis-cluster架构图 2.redis-cluster投票:容错 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2) ...

  4. Mac安装swoole中遇到的问题

    转:https://blog.csdn.net/lishanleilixin/article/details/96137272 1:下载swoole源码,https://github.com/swoo ...

  5. SpringBoot 上传文件大小限制,SizeLimitExceededException: the request was rejected because its size (64042302) exceeds the configured maximum (10485760)

    对应的配置属性文件:org.springframework.boot.autoconfigure.web.servlet.MultipartProperties 由于我是yml文件,所以直接这样定义就 ...

  6. MyBatis 框架适用场合?

    1.MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案. 2.对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是 不错的选择.

  7. Semaphore 有什么作用 ?

    Semaphore 就是一个信号量,它的作用是限制某段代码块的并发数.Semaphore 有一个构造函数,可以传入一个 int 型整数 n,表示某段代码最多只有 n 个线程可 以访问,如果超出了 n, ...

  8. npm安装包出现UNMET DEPENDENCY报错

    出现这个内容应该是包损坏,导致npm无法正常解析,通过 npm ls 命令也可以看到UNMET DEPENDENCY在依赖包上出现,在输出的信息最后有一个错误信息 npm view pkg versi ...

  9. Java 中,编写多线程程序的时候你会遵循哪些最佳实践?

    这是我在写 Java 并发程序的时候遵循的一些最佳实践: a)给线程命名,这样可以帮助调试. b)最小化同步的范围,而不是将整个方法同步,只对关键部分做同步. c)如果可以,更偏向于使用 volati ...

  10. c语言代码规范

    什么叫规范?在C语言中不遵守编译器的规定,编译器在编译时就会报错,这个规定叫作规则.但是有一种规定,它是一种人为的.约定成俗的,即使不按照那种规定也不会出错,这种规定就叫作规范.虽然我们不按照规范也不 ...