精华内容
下载资源
问答
  • 包装类-装箱和拆箱

    2019-08-18 16:01:20
    包装类 特点:具有类的特点,可以调用相应类的方法 包装类是基于8种基本类型而封装的8个对象的包装类 基本类型 包装类型 byte Byte short Short int ...装箱(基本类型转包装类型) ...

    包装类

    特点:具有类的特点,可以调用相应类的方法
    包装类是基于8种基本类型而封装的8个对象的包装类
    
    基本类型 包装类型
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean
    装箱(基本类型转包装类型)
    Integer num=10;
    Integer num1=new Integer(10);
    拆箱(包装类型转基本类型)
    int num2=num;//自动类型转换
    
    public class TestWraper {
    	//基本类型、 包装类型转换 和String
    	@Test
    	public void test2() {
    		//基本《-》String
    		int i1 = 10;
    		String s1 = String.valueOf(i1);
    		int n1 = Integer.parseInt("12");
    		System.out.println(s1);  //10
    		System.out.println(n1);   //12
    		
    		//“1.23”
    		double d1 = Double.parseDouble("1.23");
    		System.out.println(d1);
    		Integer i2 =100;
    		System.out.println(i2.toString().length());  //3
    	}
    	
    	//基本类型->包装类型转换
    	@Test
    	public void test1() {
    		int i1=10;  // 基本类型
    		Integer in1 = new Integer(i1);
    		System.out.println(in1);  //10
    		
    		float f1 = 1.23f;
    		Float fl1 = new Float(f1);
    		System.out.println(fl1);   //1.23
    		
    		boolean b1 = true;
    		Boolean bo1 = new Boolean(b1);
    		System.out.println(bo1);   //true
    		Boolean bo2 = new Boolean("falsesdfsd");
    		System.out.println(bo2);   //false
    	
    		int n = in1.intValue();
    		System.out.println(n);
    		float f = fl1.floatValue();
    		System.out.println(f);
    		boolean b = bo1.booleanValue();
    		System.out.println(b);
    		jdk1.5
    		//装箱(基本转包装) /    拆箱(包装转基本)   自动转换
    		Integer in3 = 10;  //装箱
    		int i3 = in3;      //拆箱
    	}
    }
    
    
    1.装箱和拆箱:
    	Integer i=10;//装箱:自动根据数值创建Integer对象将基本类型转换成包装器类型
    	int n=i//拆箱:自动将包装器类型转换成基本数据类型
    	
    	1.1为什么需要装箱和拆箱?
    			因为基本数据类型不是对象的情况下,就不能当成一个对象来使用,而基本数据类型
    			装箱后就可以当做一个对象,来调用Object子类的接口而且基本数据类型是不能作为
    			形参来使用的,虽然装箱和拆箱会稍微影响效率,但是提供了很多功能
    			
    	1.2装箱时调用的方法:
    			装箱时自动调用的是valueOf(***)方法
    			拆箱时自动调用的是***Value方法(***代表对应的基本数据类型)
    			
    	1.3 Integer的面试问题
    			Integer i1=128;
    			Integer i2=128;
    				
    			Integer i3=10;
    			Integer i4=10;
    				
    			Integer i5=new Integer(100);
    			Integer i6=new Integer(100);
    				
    			System.out.println(i1==i2);//false
    			System.out.println(i3==i4);//true
    			System.out.println(i5==i6);//false存在对象即是比较地址
    			如果数值在[-128,127]之间则返回指向IntegerCache.cache中已经存在的对象;否则创建一个新对象
    			Integer、Sort、Byte、Character、Long这几个类的valueOf方法是类似的
    			Integer、Sort、Byte、Long包装类的缓存范围[-128,127]
    			Character包装类缓存范围[0,127]
    			Double、Float的valueOf方法的实现是类似的,因为值不是离散的是连续的,不能使用缓存保存,所以没有范围	
    
    展开全文
  • 对象包装自动装箱

    对象包装器和自动装箱

    有时,需要将int这样的类型转化为对象。所有的基本类型都有一个与之对应的类。例如,Integer类对应基本类型int。通常,这些类称为包装器(wrapper)。这些对象包装器拥有很明显的名字:IntegerLongFloatDoubleShortByteCharacterVoidBoolean(前6个类派生于公共的超类Number)。对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,对象包装器还是final,因此不能定义它们的子类。
    例如:

    ArrayList<Integer> list = new ArrayList<>();

    下面这个调用:

    list.add(3);

    将自动地变成:

    list.add(Integer.valueOf(3));

    这种变换被称为自动装箱
    相反地,当将一个Integer类型对象赋值给一个int值时,将会自动拆箱。也就是说,编译器将下列语句:

    int n = list.get(i);

    翻译成:

    int n = list.get(i).intValue();

    关于自动装箱还有以下几点需要说明。首先,由于包装器类引用可以为null,所以自动装箱可能会抛出一个NullPointerException

    Integer n = null;
    System.out.println(2 * n); // Throws NullPointerException

    另外,如果在一个表达式中混合使用IntegerDouble类型,Integer值就会拆箱,提升为double,再装箱为Double

    Integer n = 1;
    Double x = 2.0;
    System.out.println(true ? n : x); // Prints 1.0

    最后,自动装箱和拆箱是编译器认可的,而不是虚拟机。编译器在生成类的字节码时,插入必要的方法调用。虚拟机只是执行这些字节码。

    展开全文
  • 包装和装箱、拆箱

    2020-08-08 14:28:59
    装箱 把基本类型的数据,包装包装类中(基本类型的数据—>包装类) 构造方法: Integer(int value) 构造一个新分配的Integer对象,它表示指定的int值 Integer(String s)构造一个新分配的Integer对象,他表示...

    包装类

    基本数据类型,使用起来非常方便,但是没有对应方法来操作这些基本类型的数据
    可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们可以使用类中的方法来操作这些基本类型的数据
    

    在这里插入图片描述

    装箱

    把基本类型的数据,包装到包装类中(基本类型的数据—>包装类)
    构造方法:
    Integer(int value) 构造一个新分配的Integer对象,它表示指定的int值
    Integer(String s)构造一个新分配的Integer对象,他表示String参数所指示的int值

            Integer in1 = new Integer(1);
            System.out.println(in1);//1
            Integer in2 = new Integer("1");
            System.out.println(in2);//1
    
    

    静态方法:
    static Integer valueOf(int i)返回一个表示指定的int值的Integer实例
    static Integer valueOf(String s)返回保存指定的String的值Integer对象

            Integer in3 = Integer.valueOf(1);
            System.out.println(in3);//1
    
            Integer in4 = Integer.valueOf("1");
            System.out.println(in4);//1
    

    错误写法

        Integer in5 = Integer.valueOf("a");
        System.out.println(in5);//NumberFormatException
    

    拆箱

    在包装类中取出基本类型的数据(包装类—>基本类型的数据)

            int i = in1.intValue();
            System.out.println(i);/1
    

    自动装箱与自动拆箱

    基本类型的数据和包装之间可以自动的相互转换
    JDK1.5之后出现的新特性

         //自动装箱:直接把int类型的整数赋值包装类
            Integer in =1;//相当于 Integer in = new Integer(1);
            
            
            //自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本数据类型,再进行计算
            in = in+2;//相当于in.intValue() + 2;
                      //in = in.inValue() + 2 = 3又是一个自动装箱
    
    展开全文
  • 自动拆箱和装箱就是,计算数值时,integer会自动转为int进行计算。而当int传入类型为integer的引用时,int数值又会被包装为integer。 装箱就是自动将基本数据类型转换成包装器类型;拆箱就是自动将包装类型转换为...

    自动拆箱和装箱就是,计算数值时,integer会自动转为int进行计算。而当int传入类型为integer的引用时,int数值又会被包装为integer。

    装箱就是自动将基本数据类型转换成包装器类型;拆箱就是自动将包装类型转换为基本数据类型;

    Integer i = new Integer(10); //以前要生成数值10的Integer对象
    
    Integer i = 10; //装箱
    int n = i; //拆箱
    
    • 总结:装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本数据类型)。

    对于new Integer(10)和Integer.valueOf(10)区别在于:

    • new Integer(10) 每次都会新建一个对象;
    • Integer.valueOf(10) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。
    Integer x = new Integer(10);
    Integer y = new Integer(10);
    System.out.println(x == y);    // false
    Integer z = Integer.valueOf(10);
    Integer k = Integer.valueOf(10);
    System.out.println(z == k);   // true
    
    Integer i1 = 100;
    Integer i2 = 100;
    Integer i3 = 200;
    Integer i4 = 200;
    System.out.println(i1==i2); // true
    System.out.println(i3==i4); // false
    

    这是由于缓存池的设置,由于valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。如果不是会new一个新的对象

    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
    

    由下可知创建Integer对象时数值的范围在[-128,127],所以200会显示false。

    基本类型对应的缓冲池如下:

    • boolean values true and false
    • all byte values
    • short values between -128 and 127
    • int values between -128 and 127
    • char in the range \u0000 to \u007F
    展开全文
  • 所谓的拆箱:正好和装箱相反,就是把Integer的这种引用类型的对象重新简化为基本类型数据。 知识扩展: 包装类的缓存: 包装类是不可变的,就像String类一样,String类的对象以及创建,便不可改变,所以...
  • 包装类的装箱和拆箱

    2020-08-04 18:50:03
    包装类的装箱和拆箱: 装箱:将基本数据包装包装类中。(基本数据类型–>包装类) 构造方法(已过时): public Integer(int value):构造一个nteger对象,表示指定的int值。 public Integer(String s): throws ...
  • Java:自动拆箱和装箱包装

    千次阅读 2018-10-26 11:50:48
    自动拆箱和装箱是从JDK5.0才开始有的,它方便了基本数据类型其对应的包装类型之间的转换。   将一个基本数据类型的值赋给其所对应的包装类型称之为自动装箱;将一个基本数据类型包装类类型的值赋给其所对应的...
  • 包装类自动装箱和拆箱原理

    千次阅读 2018-08-22 19:41:17
    包装类的自动装箱和自动拆箱 包装类的自动装箱和拆箱是JDK1.5的新特性 一.首先:了解自动装箱的过程 有两种自动装箱过程 第一种 (-128~127)之内 调用相应包装类的valueOf() 例如:Integer i = 12; ...
  • Java包装类,装箱和拆箱 在Java程序设计中,处处体现着一种思想,即万物皆对象。但是从数据类型的划分中,我们知道Java中的数据类型分为基本数据类型和引用数据类型,为了将基本数据类型的数据当做对象来操作,于是...
  • Java包装类、装箱和拆箱 在 Java 的设计中提倡一种思想,即一切皆对象。但是从数据类型的划分中,我们知道 Java 中的数据类型分为基 本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?于是 Java 为...
  • 包装类,装箱和拆箱

    2019-08-06 20:02:04
    import java.util.ArrayList; /* 基本数据类型: byte short int long float double boolean char 包装类:java.lang.XXX Byte Short Int Long Float Double Boolean Char ...装箱:把基本类型...
  • 包装类_自动装箱和拆箱_缓存源码分析 自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的相互切换。JDK1.5之后,Java引入了自动装箱和自动装拆箱。 1.自动装箱 基本数据类型处于需要对象的环境中,会自动...
  • 包装类1.什么是包装类?2.类型转换与装箱,拆箱Integer缓冲区 1.什么是包装类? 基本数据类型所对应的引用数据类型。 Object可统一所有数据,包装类的默认值是null。 2.类型转换与装箱,拆箱 8种包装类提供不同...
  • 在java中,数据类型总共可分为两大种,基本数据类型(值类型)类类型(引用数据类型)。基本类型的数据不是对象,不能作为对象调用其toString()、hashCode()、getClass()、equals()等等方法。 所以在java中,针对8...
  • JAVA——包装类的自动装箱和拆箱

    千次阅读 2015-11-10 21:06:02
    关于JAVA的包装类自动拆箱和装箱,有很多人做过介绍,但笔者发现说的不够简洁,而这个问题在面试、笔试中又经常涉及,故笔者将搜集到的信息与大家分享下: 包装类(原始类型对应的类,即Boolean, Byte, Short, ...
  • Java是一门面向对象型的语言,总共有8中基本数据类型:byte、short、int...所以根据这一缺点,Java为每种数据类型分别设计了对应的类,称之为包装类,这样就具备了面向对象的编程基础! 基本数据类型 包装类 ...
  • 包装类的装箱和拆箱操作 装箱操作:将基本数据类型转换成包装类称为装箱操作 拆箱操作:将包装类转换成基本数据类型称为拆箱操作  Integer的示例代码: class IntegerClass { public void method() ...
  • 我记得当初学习java中的包装类时,对其拆箱和装箱有点困惑,特意写该博客,来介绍下包装类及拆箱和装箱; 一.包装类简介  java中有两种基本类型,一个是基本类型,另外一个是引用类型;基本类型有8种,分别为4个...
  • 装箱和拆箱:基本数据类型和对应包装类之间的转换 装箱和拆箱都有自动和手动两种方式,以下为简单示例:这篇博客主要掌握装箱和拆箱的基本操作即可 public class WrapTestOne { public static void main...
  • Java包装类的拆箱和装箱是怎么回事? 什么是自动装箱和拆箱 ...因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。 原始类型byte,short,char,int,long,float,double,b...
  • 文章目录 ...二、关于自动装箱和拆箱 1.自动装箱 2.自动拆箱 三、自动装箱过程中的对象创建问题 四、包装类和基本类型的混合比较 1.==比较 2.equals比较 五、补充 1.boolean类型到底占多少字节 2.装箱拆箱
  • 装箱:是指基本类型变为相应包装类的过程,如Integer a=Integer.valueOf(100);或者int a=100;Integer b=new Integer(a);这里的Integer.valueOf(100)new Integer(a)就是装箱,由基本数据类型构造出一个包装类...
  • java中基本数据类型和包装类自动装箱和拆箱 自动装箱拆箱要点  自动装箱时编译器调用valueOf将原始类型值转换成对象,看Integer类的valueOf源码 public static Integer valueOf(int i) { if...
  • 主要介绍了Java包装类及自动装箱拆箱,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 包装类1.1 数值型包装类1.2 对象型包装类1.3 装箱与拆箱1.4 自动拆装箱(语法糖)1.5 String 基本数据类型的相互转换1.5.1 String ->基本数据类型1.5.2 基本数据类型->String 1.包装包装类的作用是将基本...
  • 自动装箱:就是把基础数据类型自动封装并转换成对应的包装类的对象。 拆 箱 :就是把包装类的对象自动解包并转换成对应的基础数据类型。public class BoxDemo { public static void main(String[] args) { //demo1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,973
精华内容 14,789
关键字:

包装和装箱