zoukankan      html  css  js  c++  java
  • 包装类和自动解封装

    包装类

    8个基本类型的包装类
    我们知道java是面向对象的语言,其精髓之一是可以使用多态性,提高程序的灵活度。但是java中有8个基本类型:byte,short,int,long,float,double,char,boolean。它们是以值的形式存在于内存中,而不是对象。它们不是Object的子类,不能参与面向对象的开发。


    包装类的作用
    让基本类型参与面向对象的开发
      可以获取其基本类型的取值范围
      可以将字符串转换成基本类型数据

    基本类型包装类

    对于8个基本类型,java提供了他们相应的包装类:
    基本类型 包装类
    byte            java.lang.Byte
    short           java.lang.Short
    int           java.lang.Integer
    long         java.lang.Long
    float         java.lang.Float
    double      java.lang.Double
    char         java.lang.Character
    boolean    java.lang.Boolean
    其中除了Character与Boolean的父类是Object之外,其余的都是继承自:java.lang.Number

    Number及其主要方法

    除了Character与Boolean之外的其他包装类都是继承自Number的,这些包装类都有一个共性,描述的都是数字。那么我们来了解一下他们的父类:java.lang.Number
    Number是一个抽象类。本身不能实例化。Number 的子类必须提供将表示的数值转换为 byte、double、float、int、long 和 short 的方法
    比如:
    abstract double doubleValue() 以double形式返回指定的数值
    abstract int intValue() 以int形式返回指定的数值
    abstract float floatValue() 以float形式返回指定的数值
    剩下的抽象方法请参阅API文档:java.lang.Number

     1 /**
     2  * Number 是6个数字类型包装类的父类
     3  * intValue 反向转换  把包装好的转换为int型
     4  */
     5 
     6  class NumberDemo{
     7     public static void main(String[] args) {
     8         Number d=new Double(123.45);
     9         Number n=new Integer(345);
    10         //将123.45 转换为int
    11         int i = d.intValue();
    12         System.out.println(i);
    13         double dou =d.doubleValue();
    14         System.out.println(dou);
    15         
    16         i=n.intValue();
    17         System.out.println(i);
    18         dou = n.doubleValue();
    19         System.out.println(dou);
    20         

    Integer.parsetInt()方法

    java.lang.Integer是int的包装类,其每一个实例用于描述一个基本类型int的值。
    Integer有一个静态方法static int parseInt(String s)
    该方法的作用是将一个描述整数的字符串解析为该整数,并用int形式返回。该方法可能会抛出
    NumberFormatException异常:当给定的字符串里边含有非整数字符时。
    转的字符串不能是小数

    /**
      * 包装类支持将字符串转换为对应的基本类型
      * 
      */
     
     
     class    parseNumber{
         public static void main(String[] args) {
            String intStr ="123";     //z
            /*
             * 将字符串转换为int值
             * 包装类支持parsexxx方法
             */
            int num = Integer.parseInt(intStr);
            System.out.println(num+1);
        }
     }

     Double.parseDouble()方法

     自动装箱和拆箱
    2.2.1. 自动装箱和拆箱的操作

    如何在基本类型与包装类之间相互转换。
    当我们需要将基本类型转换为包装类时,我们可以调用包装类的一个静态方法valueOf():

    **
      * jdk 1.5之后推出新特性 自动拆装箱
      * @author Administrator
      *
      */
     
     class AutoboxingDemo{
         public static void main(String[] args) {
            int a=1;
            //转换为包装类推荐使用静态方法valueof()
            Integer ii =Integer.valueOf(a);
            say(a);//自动装箱
            //将包装类装换为基本类型
            ii=a;        //自动装箱
            int b =ii;  //自动拆箱
            
            Integer i =1;
            a=i;
        }
    /**
     * 将输入的字符串转换为数字
     * @author Administrator
     *
     */
    
    class ParseBumber{
         public static final String DOUBLE_REGEX="^[0-9]+\.[0-9]+$";
         public static final String INTEGER_REGEX="^[0-9]+$";
         /*
          * 1创建Scanner用于获取用户输入的内容
          * 2通过整数的正则表达式验证用户输入的字符串  匹配则转换为整数
          * 3.不匹配通过小数的正则表达式转换为小数
          * 4.再不匹配 输出  不是数字
          */
         public void checkNumber(){
             Scanner scanner =new Scanner(System.in);
             System.out.println("请输入一个数");
             
             //nextLine 用于获取用户输入的一行字符串
             //next  空格分隔下一个
             String number =scanner.nextLine();
             if(number.matches(INTEGER_REGEX)){
                 int i =Integer.parseInt(number);
                 System.out.println("这个整数:"+i);
             }else if(number.matches(DOUBLE_REGEX)){
                 double d= Double.parseDouble(number);
                 System.out.println("这个小数:"+d);
             }else{
                 System.out.println("输入不是数字");
             }
         }
         
         public static void main(String[] args) {
             ParseBumber Parse = new ParseBumber();
             Parse.checkNumber();
         }
         
     }
  • 相关阅读:
    linux读写锁
    轻量级过程改进之需求开发
    Hibernate4.3.6 Final+Spring3.0.5配置出错提示及解决方法
    hdu1198Farm Irrigation(dfs找联通)
    ushare编译之 ‘struct sockaddr_storage’ has no member named ‘s_addr’
    iOS的URLScheme
    Python学习笔记(一)
    un-资源-开源-WebGallery:Windows Web App Gallery
    几何-莱罗三角形:百科
    几何-正十七边形:百科
  • 原文地址:https://www.cnblogs.com/manue1/p/4495793.html
Copyright © 2011-2022 走看看