Wrapper-装箱和拆箱

基本数据类型:栈
  byte, short,int,long,float,double,char,boolean
包装类型: 都处在java.lang包(不需要导包)
  Byte, Short,Integer,Long,Float,Double,Character,Boolean
  Integer中常用的方法:
    parseInt(String x):将字符串转为int类型
  数值类型常用的方法:Xxx:具体的数据类型
    parseXxx(String x):将字符串x转换为指定的数组类型Xxx
    parseInt,parseLong,parseFlot,parseDouble...
  1.什么是包装类型:堆(在内存中的消耗比较大)
    包装类是将基本类型封装到一个类中,然后提供常用的属性和方法
  2.为什么要用包装类型?
    a.在程序处理过程有些时候需要使用对象类型
    b.包装类型(类):其中提供一些属性和方法,方便操作
  JDK1.5之后Java支持自动装箱和拆箱
  装箱:将基本数据类型转化为包装类型:调用构造函数 或调用静态valueOf方法
    a.Integer num = new Integer(10);
    b.Integer num = Integer.valueOf(10);
  拆箱:将包装类型转为基本数据类型:对象名.xxValue():
    Integer a = Integer.valueOf(10);
    int b = Integer.intValue(a);

public class WrapperDemo {
    public static void main(String[] args) {
//        List list = new ArrayList();
//        list.add(new Integer(1));//将基本数据类型转换为对象类型
//        list.add(new Double(3.14));
//        Integer num = new Integer(10);
        Integer num = Integer.valueOf(10);
        int num2 = num.intValue();//将包装类型转换为基本数据类型
        System.out.println("Integer-->max_value="+Integer.MAX_VALUE);
        System.out.println("Integer-->min_value="+Integer.MIN_VALUE);
        System.out.println("Integer-->SIZE="+Integer.SIZE);
        System.out.println(Integer.toBinaryString(10));//将指定的数值转化为2进制
        System.out.println(Integer.toHexString(10));//将指定的数值转化为16进制
        System.out.println(Integer.toOctalString(10));//将指定的数值转化为8进制
        String str="12";
        String str2="34";
//        System.out.println(str+str2);//字符拼接
        int  a = Integer.parseInt(str);//将字符串转换为int类型
        int  b = Integer.parseInt(str2);
        System.out.println(a+b);
        //JDK1.5支持自动装箱(基本类型--->包装类型)和拆箱(包装类型--->基本类型)操作
        Double d=3.14;//自动装箱
        double d2=d;//自动拆箱
    }
}

==与equals的区别:
  ==比较对象的话比较是的地址的引用是否相等
  equals:比较是对象的内容是否相等
Integer num3=123;//自动装箱
  ==>Integer num3=Integer.valueOf(123);

public class WrapperDemo2 {
    public static void main(String[] args) {
        Integer num1=new Integer(123);
        Integer num2=new Integer(123);
        System.out.println(num1==num2);//false
        System.out.println(num1.equals(num2));//true
        System.out.println("-----------------------");
//        Integer num3=123;//Integer num3=Integer.valueOf(123);
//        Integer num4=Integer.valueOf(123);
        Integer num3=1234;//Integer num3=Integer.valueOf(1234);
        Integer num4=Integer.valueOf(1234);
        System.out.println(num3==num4);//false
        System.out.println(num3.equals(num4));//true

    }
}
时间: 2024-10-08 15:55:25

Wrapper-装箱和拆箱的相关文章

C#装箱与拆箱的研究

在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题. 观者也许曾无数次的使用过诸如System.Console类或.NET类库中那些品种繁多的类.那么,我想问的是它们究竟源自何处?C#又是如何联系它们?有没有支持我们个性化扩展的机制或类型系统?又有哪些类型系统可供我们使用呢?如果我们这些PL们连这些问题都不知其然,更不知其所以然的话,C#之门恐怕会把我们拒之门外的. 那就让我们先停停手中的活儿,理理头绪,对作为.NET重要技术和基础之一的CTS(Common

Java中自动装箱与拆箱详解

在讲装箱与拆箱之前我们要先了解一下这个问题的来源: Java中的类型分为基本类型(Primitive type)和类类型(Class type)两种: 基本类型包括byte型.char型.short型.int型.long型.float型.double型.boolean型八种.基本类型指的是直接包含值得类型,可提供语言级别的支持. 类类型包括Byte.Character.Short.Integer.Long.Float.Double.Boolean.为什么要用类类型呢?原因其实很简单,因为Java

全面理解java自动装箱和拆箱(转)

自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如果你在Java1.5下进行过编程的话,你一定不会陌生这一点,你不能直接地向集合(Collections)中放入原始类型值,因为集合只接收对象.通常这种情况下你的做法是,将这些原始类型的值转换成对象,然后将这些转换的对象放入集合中.使用Integer,Double,Boolean等这些类我们可以将原始

Java中的自动装箱与拆箱

自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如果你在Java1.5下进行过编程的话,你一定不会陌生这一点,你不能直接地向集合(Collections)中放入原始类型值,因为集合只接收对象.通常这种情况下你的做法是,将这些原始类型的值转换成对象,然后将这些转换的对象放入集合中.使用Integer,Double,Boolean等这些类我们可以将原始

深入剖析Java中的装箱和拆箱

阅读目录 一.什么是装箱?什么是拆箱?二.装箱和拆箱是如何实现的三.面试中相关的问题 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 回到顶部 一.什么是装箱?什么是拆箱? 我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成

转 C# 装箱和拆箱[整理]

1.      装箱和拆箱是一个抽象的概念 2.      装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型       利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", obj); 这是一个装箱的过程,是将值类型转换为引用类型的过程 int val = 100; object obj =

【c#】装箱与拆箱

从内存执行的角度来看,值类型的内存分配在线程的堆栈上,而引用类型的内存分配在托管堆上.因此从值类型向引用类型的转换,势必牵涉到数据的拷贝与指针引用等操作. 装箱操作,大致过程为:在托管堆中分配新对象的内存,将值类型的字段拷贝到该内存中,然后返回该对象的地址,这样就完成了从值类型到引用类型的转变:拆箱操作,则是获取已装箱对象中来自值类型部分字段的地址.装箱与拆箱并非完全对称的互逆操作,拆箱并不包含字段的拷贝. 概念雷区: 装箱与拆箱不是完全对等的互逆操作.从内存的角度上看,拆箱的性能开销远小于装箱

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

1 //Java中的自动装箱和拆箱功能. 2 class AutoboxingUnboxing 3 { 4 public static void main(String[] args) 5 { 6 //直接把一个基本类型变量赋给Interger对象. 7 Integer inObj = 5; 8 Object inObj1 = 6; 9 //直接把一个boolean类型的变量赋给一个Object类型的变量. 10 Object boolObj = true; 11 //直接把Integer对象赋

Java中的装箱与拆箱

在J2SE5.0后推出了自动装箱和拆箱的功能,以提高我们的开发效率,然而自动装箱和拆箱实际上是通过编译器来支持的(并非语言本身,或者说虚拟机),因而这种支持也隐藏了部分内部实质,再加上某些类的优化(比如Integer里面的缓存等,参看关于缓存节),就更加容易在特定的环境下产生问题,并且如果不知道原来还无法调试.以下先是简单的介绍了编译器对装箱和拆箱的实现,并根据实现简单介绍一下可能会遇到的几个问题. 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integ

值类型的装箱和拆箱

在CLR中为了将一个值类型转换成一个引用类型,要使用一个名为装箱的机制. 下面总结了对值类型的一个实例进行装箱操作时内部发生的事: 1)在托管堆中分配好内存.分配的内存量是值类型的各个字段需要的内存量加上托管堆上的所有对象都有的两个额外成员(类型对象指针和同步块索引)需要的内存量. 2)值类型的字段复制到新的分配的堆内存. 3)返回对象的地址.现在,这个地址是对一个对象的引用,值类型现在是一个引用类型. 拆箱不是直接将装箱过程倒过来.拆箱的代价比装箱低得多.拆箱其实就是一个获取一个指针的过程,该