zoukankan      html  css  js  c++  java
  • Java的8种包装类:Wrapper Class

    Java有8种基本数据类型,为什么又要出现对应的8种包装类:

    1、Java的8种基本数据类型不支持面向对象编程机制

    2、8种基本数据类型不具备“对象”的特性:没有成员变量、方法可供调用

    3、例如:某个方法需要Object类型的参数,但实际需要的却是2、3这种值,只靠基本的数据类型无法转换成Object参数传递过去

    4、为解决8种基本数据类型不能当成Object类型使用的问题,Java提供了包装类的概念:

    8种基本数据类型与对应的包装类:

    byte         ------------------------>      Byte

    short       ------------------------->     Short

    int           ------------------------->     Integer

    long        ------------------------->     Long

    char        ------------------------->     Character

    float        ------------------------->     Float

    double    ------------------------->     Double

    boolean  ------------------------->    Boolean

    5、基本类型与包装类之间的转换(JDK1.5之前):

      5.1、通过包装类对应的构造器实现

      5.2、通过传入一些字符串参数,来构建包装类对象,如:

        Integer a = new Integer("5.5");

      5.3、如果想获得包装类对象中包装的基本类型变量,可以用包装类提供的.xxxValue()方法

    代码示例:

    public class WrapperClass{
    	public static void main(String[] args){
    		//-构造器方法定义Integer包装类a,并赋值
    		Integer a=new Integer("5");
    		System.out.println(a);
    		
    		//-构造器方法定义Double包装类b,并赋值
    		Double b=new Double("5.5");
    		System.out.println(b);
    
    		//-通过包装类.xxxValue()方法,从包装类对象中获取基本类变量
    		int c=a.intValue();
    		System.out.println(c);
    
    		double d=b.doubleValue();
    		System.out.println(d);
    	}
    }
    

     运行结果:

    6、基本类型与包装类之间的转换(JDK1.5之后):

      6.1、自动装箱(Autoboxing):把一个基本类型的变量,直接赋值给对应的包装类变量,或者赋值给Object变量(Object是所有类的父类,子类对象可以直接赋给父类变量----Java的向上自动转型特性)如:

        Integer i=3;或Object j=4;

      6.2、自动拆箱(AutoUnboxing):把一个包装类变量,直接赋值给一个基本类型的变量,如:

        int a=i;

        注意:int b=j;编译会报错,原因是:Java有向上自动转型特性,但不能自动向下转型,想要转要加强制转换,如:

        int b = (Integer)j;

    代码示例:

    public class AutoBoxingUnboxing{
    	public static void main(String[] args){
    		//-自动装箱
    		Integer a=3;
    		//-自动拆箱
    		int b=a;
    
    		//-直接赋值给Object类型的变量,利用了Java的向上自动转型特性
    		Object o=true;
    		if(o instanceof Boolean){
    			//-Object类型不能直接赋值给Boolean类型,Java不能自动向下转型,如下代码会报错
    			//Boolean d=o;
    			//-想向下转型可以用强制转换方法,如下代码
    			Boolean c=(Boolean)o;
    			System.out.println(c);
    		}
    	}
    }
    
  • 相关阅读:
    ASP.NET页面优化,提高载入速度[转]
    winform app.config文件的动态配置
    ASP.NET 程序中删除文件夹导致session失效解决问题
    ASP.NET网站版本自动更新程序及代码[转]
    swf2pdf转swf时字符集问题【转】
    ASP.NET中EVAL用法大全
    安装sqlserver2012时出现的丧心病狂的错误
    sqlserver2008清日志
    搭建了个静态资源服务器遇到的问题与解决
    获取action name在asp.net mvc
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8051689.html
Copyright © 2011-2022 走看看