java之装箱拆箱

参考http://how2j.cn/k/number-string/number-string-wrap/22.html

封装类

所有的基本类型,都有对应的类类型
比如int对应的类是Integer

这种类就叫做封装类

package digit;

public class TestNumber {

    public static void main(String[] args) {
        int i = 5;

        //把一个基本类型的变量,转换为Integer对象
        Integer it = new Integer(i);
        //把一个Integer对象,转换为一个基本类型的int
        int i2 = it.intValue();

    }
}

Number类

数字封装类有
Byte,Short,Integer,Long,Float,Double

这些类都是抽象类Number的子类

package digit;

public class TestNumber {

    public static void main(String[] args) {
        int i = 5;

        Integer it = new Integer(i);
        //Integer是Number的子类,所以打印true
        System.out.println(it instanceof Number);
    }
}

基本类型转封装类

package digit;

public class TestNumber {

    public static void main(String[] args) {
        int i = 5;

        //基本类型转换成封装类型
        Integer it = new Integer(i);

    }
}

封装类转基本类型

package digit;

public class TestNumber {

    public static void main(String[] args) {
        int i = 5;

        //基本类型转换成封装类型
        Integer it = new Integer(i);

        //封装类型转换成基本类型
        int i2 = it.intValue();

    }
}

自动装箱

不需要调用构造方法,通过=符号自动把 基本类型 转换为 类类型 就叫装箱

package digit;

public class TestNumber {

    public static void main(String[] args) {
        int i = 5;

        //基本类型转换成封装类型
        Integer it = new Integer(i);

        //自动转换就叫装箱
        Integer it2 = i;

    }
}

自动拆箱

不需要调用Integer的intValue方法,通过=就自动转换成int类型,就叫拆箱

package digit;

public class TestNumber {

    public static void main(String[] args) {
        int i = 5;

        Integer it = new Integer(i);

        //封装类型转换成基本类型
        int i2 = it.intValue();

        //自动转换就叫拆箱
        int i3 = it;

    }
}

int的最大值,最小值

int的最大值可以通过其对应的封装类Integer.MAX_VALUE获取

应该是自动装箱必须一一匹配。

但是拆箱,只要拆出来的基本类型,其范围小于左侧基本类型的取值范围,就可以。

比如:

 Byte b = 5;

Short s = 5;

Integer i = 5; Long l = 5l;

long x;

x= b;

x=s;

x=i;

x=l; 

右边是类类型,左边的x是long基本类型,那么也可以自动拆箱。

以x=b为例,b自动拆箱出来时byte基本类型,byte的取值范围小于long,那么就不会出现编译错误。

原文地址:https://www.cnblogs.com/lijingran/p/9127004.html

时间: 2024-10-13 22:16:15

java之装箱拆箱的相关文章

java自动装箱拆箱总结

对于java1.5引入的自动装箱拆箱,之前只是知道一点点,最近在看一篇博客时发现自己对自动装箱拆箱这个特性了解的太少了,所以今天研究了下这个特性.以下是结合测试代码进行的总结. 测试代码: int a = 1; Integer b = 1; Integer c = 1; Integer d = 2; Integer e = 3; Integer f = 128; Integer g = 128; Long h = 3L; Double m = 4.0; Double n = 4.0; Float

Java自动装箱拆箱

一.装箱.拆箱定义 如果一个int型量被传递到需要一个Integer对象的地方,那么,编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱.而如果一个Integer对象被放到需要int型量的地方,则编译器将幕后插入一个队intValue方法的调用,这就叫做自动拆箱. public static void main(String[] args) { // 装箱 Integer i1 = Integer.valueOf(1); // 自动装箱 Integer i2 = 1;// 默

那些年一起踩过的坑 — java 自动装箱拆箱问题

坑在哪里? 我们都知道Java的八种基本数据类型:int, short, long, double, byte, char, float, boolean 分别有各自对应的包装类型:Integer, Short, Long, Double, Byte, Character, Float, Boolean 并且二者之间可以相互直接赋值,例如: 1 // 基本数据类型赋值给封装类 2 inta = 1; 3 Integer b = a; 4 // 封装类型赋值给基本数据类型 5 Character

Java 装箱 拆箱

Java 自动装箱与拆箱 ??什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i = 100; ) 实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = new Integer(1

Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口

Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个I

[Java5新特性]自动装箱/拆箱

自动装箱/拆箱概述 Java中具有基本类型(int,double,float,long,boolean,char,byte,short)和基本类型包装类(Integer,Double,Float,Long,Boolean,Char,Byte,Short),我们实现基本类型与包装类之间的转换基本有两种方式: 一种为JDK5之前的方式,比如Integer i = Integer.valueof(5);(这里5为基本类型int,Integer包装类利用valueof()方法将其转换为Integer类型

Java自动装/拆箱下,三目运算符的潜规则

最近发现了一个很诡异的NullPointerException,在下面这个方法抛出,一开始怎么都没想明白,dSrc即使为null,那直接赋值给distinct也没问题啊. private Doubledistinct; private void setParam(Double dSrc, boolean flag) { this.distinct = (flag) ? dSrc : 0d; } 最后才发现是Java自动拆箱的潜规则,下面我们来看看其所以然. 自动装箱/拆箱 在JDK1.5引入自动

int和Integer的区别?包装类?装箱?拆箱?

int和Integer的区别: 1) int是基本数据类型,直接存储的数值,默认是0; 2) Integer 是int的包装类,是个对象,存放的是对象的引用,必须实例化之后才能使用,默认是null; 包装类?装箱拆箱? 菜鸟教程 -- https://www.runoob.com/java/java-number.html 原文地址:https://www.cnblogs.com/liaowenhui/p/12251434.html

NET中的类型和装箱/拆箱原理

谈到装箱拆箱,DebugLZQ相信给位园子里的博友一定可以娓娓道来,大概的意思就是值类型和引用类型的相互转换呗---值类型到引用类型叫装箱,反之则叫拆箱.这当然没有问题,可是你只知道这么多,那么DebugLZQ建议你花点时间看看楼主这篇文章,继续前几篇博文的风格--浅谈杂侃. 1. .NET中的类型 为了说明装箱和拆箱,那首先必须先说类型.在.NET中,我们知道System.Object类型是所有内建类型的基类.注意这里说的是内建类型,程序员可以编写不继承子自System.Object的类型,这