包装类 拆箱和装箱的注意事项

    

public static void main(String[] args) {
Integer a=1000;
Integer b=1000;
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
//
System.out.println("###############");
/*Integer c=127;
Integer d=127;*/
/*System.out.println(c==d);  //true
System.out.println(c.equals(d));*/ //true
/*Integer c=-127;
Integer d=-127;*/
/*System.out.println(c==d);  //true
System.out.println(c.equals(d));*/ //true
/* Integer c=128;
Integer d=128;
System.out.println(c==d);  //true
System.out.println(c.equals(d));*/ true
/*Integer c=-128;//
Integer d=-128;//
System.out.println(c==d); //true
System.out.println(c.equals(d));*///true
Integer c=-129;//
Integer d=-129;//
System.out.println(c==d);  //false
System.out.println(c.equals(d));//true
}

     当数值在[-128,127]的时候,这个时候有个缓存,按基本数据类型处理,不会包装成对象,所以用==符号的时候,是相等的,结果是true。

当大于这个数字段的时候,会包装成对象,用符号==的时候比较的是地址,所以结果是false

时间: 2024-08-28 18:40:47

包装类 拆箱和装箱的注意事项的相关文章

有关包装类拆箱、装箱和整型与字符串型之间的转换

原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5462489.html 1.8种基本数据类型都有各自的包装类,其对应关系为: 基本————————————包装类 byte————————————Byte short———————————Short char————————————Char int————————————Integer long————————————Long float————————————Float double———

java 1.5 自动拆箱和装箱的注意事项

背景 java1.5后引入了自动装箱和自动拆箱的概念 自动拆箱:将引用类型转化为基本数据类型 自动装箱:将基本数据类型装为引用类型 但是实际使用中,什么情况自动拆箱什么情况自动装箱呢? 自动装箱 Integer i = 100; (调用Integer.valueOf(100)) 这里存在一个缓存变量 -128~127 ,如果基本数据类型在此范围内,则使用缓存的对象,否则new Integer(number) 自动拆箱 //第一种情况 Integer i = 100; int x = i; (调用

Java知多少(24)包装类、拆箱和装箱详解

虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单.有效地进行常规数据处理. 这种借助于非面向对象技术的做法有时也会带来不便,比如引用类型数据均继承了 Object 类的特性,要转换为 String 类型(经常有这种需要)时只要简单调用 Object 类中定义的toString()即可,而基本数据类型转换为 String 类型则要麻烦得

Java中的拆箱和装箱

首先说一下Java中的包装类,Java语言是一个面向对象的语言,但是Java中的基本数据类型却不是面向对象的,这在实际使用时存在很多的不便(比如,我们不能直接想集合Collections中放入原始类型值,因为集合只接收对象).为了解决这个不足,在设计类的是为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class). 基本数据类型 包装类 byte Byte boolean Boolean short Short char Charact

拆箱与装箱

拆箱与装箱是一个早就接触的知识点,但是自己并没有系统的总结过,今天我们就来看一下: 一.首先介绍几个知识点: 值类型: 1. 值类型是在栈中分配内存,在声明时初始化才能使用,不能为null. 2. 值类型超出作用范围系统自动释放内存. 3. 主要由两类组成:结构,枚举(enum),结构分为以下几类: 1. 整型(Sbyte.Byte.Char.Short.Ushort.Int.Uint.Long.Ulong) 2. 浮点型(Float.Double) 3. decimal 4. bool 5. 

C#之拆箱,装箱

C#的数据类型分为三类,值类型,引用类型和指针类型.指针类型只能用于不安全模式,而值类型和引用类型通过拆箱和装箱机制可以相互转换,通过中间的object类型,所以C#的所有种类直接或间接地从object类种类派生而来. 值类型 值类型数据存储在栈中,栈用于存放固定长度的数据,分为简单类型,结构类型和枚举类型. 结构类型:把不同类型的数据组合在一起,便于使用.跟类相似,包含数据成员和函数成员的数据结构,类类型是一种引用类型.结构类型用关键字Struct定义,可以嵌套定义. 枚举类型:成员只能是整数

拆箱,装箱,枚举,结构

枚举: 1.不能定义自己的方法 2.它们不能实现接口 3.不能定义属性和索引器 4.枚举成员之间用“,”隔开 5.枚举成员如果没有赋值,那么它的第一个值默认为0 6.后面的成员取值是前一个成员取值+17.枚举成员只能赋值为整型 类与结构:1.类和结构都是创建对象的模版2.结构是值类型,类是引用类型,结构不能有析构函数3.类可以有析构函数结构不能声明默认构造函数(没有参数的构造函数)4.结构可以声明构造函数,但他们必须带参数,并且需要把所有字段都要赋值 5.在结构中初始化实例字段是错误的,在类中是

拆箱和装箱

1.拆箱和装箱,我们都知道的是 装箱:就是将值类型转换为引用类型拆箱:将引用类型转换为值类型 2.那么看下面一个例子: string str=“123”int n=Convert.ToInt32(str): string是引用类型,int为值类型.那么,此处有没有发生拆装箱呢 答案是:没有 原因:看两种类型是否发生了装箱或拆箱,要看这两种类型是否存在继承关系.有继承关系才有可能发生装箱和拆箱 3.现在,我们只知道拆装箱的定义,那么拆装箱到底给我们的应用程序带来了好处还是坏处呢? 我们可以看下面一

c# 的引用类型和值类型和数据的拆箱和装箱

c#中引用类型和值类型的区分: 一般的以calss声明的变量的类型是引用类型的,引用类型是存放到内存的堆上存放的是数据的地址.值类型是像int float 还有struct等属于值类型的数据类型,值类型的数据是存放在堆栈上的存放的数据本身. 拆箱和装箱: 我们可以用一个例子来理解装箱和拆箱的关系和作用.我们都知道小时候在村里有哪种你给他一些铝制品他可以给你溶成一个你想要的其他的铝制器件.装箱和拆箱就是这个原理.例如:你想把一种数据类型转化为另一种数据类型,int16到int32的数据类型的转化,