zoukankan      html  css  js  c++  java
  • Java中的包装类

    • 关于包装类
      1、java中为8种基本数据类型又对应准备了8种包装类型(SUN公司已写好)。8种包装类属于引用数据类型,父类是Object。
      2、为什么要提供包装类型?分析这种需求(代码示例):
    public class DemoTest{
        public static void main(String[] args) {
            /*调用doSome()方法的时候需要传一个数字进去。
            * 但是数字属于基本数据类型,
            * 而dosome()方法参数的类型是object。
            * 可见dosome()方法无法接收基本数据类型的数字,
            * 所以要传一个数字对应的包装类进去。
            * 把200这个数字经过构造方法包装成对象。*/
            Demo demo = new Demo(10);
            /*doSome()方法虽然不能直接传10,
            但是可以传一个10对应的包装类型。*/
            dosome(demo);
        }
        private static void dosome(Object obj) {
            System.out.println(obj);
            //输出:10
        }
    }
    
    public class Demo{
        int value;
        public Demo() {
        }
        public Demo(int value) {
            this.value = value;
        }
        @Override
        public String toString() {
            return String.valueOf(value);
        }
    }
    
    • 8种基本数据类型对应的包装类型名是什么?
    基本数据类型 包装类型
    byte java.lang.Byte(父类为Number)
    short java.lang.Short(父类为Number)
    int java.lang.Integer(父类为Number)
    long java.lang.Long(父类为Number)
    float java.lang.Float(父类为Number)
    double java.lang.Double(父类为Number)
    boolean Java.lang.Boolean(父类为Object)
    char java.lang.Character(父类为Object)

    其中Number是一个抽象类,无法实例化对象。

    • 装箱和拆箱
      1、代码示例:
    public class Demo{
        public static void main(String[] args) {
            /*进行构造方法的包装达到了:
            基本数据类型向引用数据类型的转换。*/
            //这就是装箱。
            Integer i = new Integer(111);
            /*将引用数据类型转换为基本数据类型*/
            //这就是拆箱。
            float f = i.floatValue();
            /*floatValue()就是以float的形式返回指定的数值,
             * 其它形式以此类推*/
            System.out.println(f);//输出:111.0
            /*关于Integer类的构造方法,有两个:
            Integer(int)、Integer(String)。
            关于其它类的构造方法看源码*/
            Integer i2 = new Integer("222");
            System.out.println(i2);//输出:222
        }
    }
    

    2、通过访问包装类的常量,来获取最大值和最小值。
    代码示例:

    public class Demo{
        public static void main(String[] args) {
            System.out.println(Integer.MAX_VALUE);
            System.out.println(Integer.MIN_VALUE);
        }
    }
    
    • jdk1.5之后支持自动装箱和自动拆箱
    public class Demo{
        public static void main(String[] args) {
            //自动装箱
            Integer i = 11;
            //自动拆箱
            int x = i;
            System.out.println(x);//输出:11
            
            Integer n = 10;//n还是一个引用
            System.out.println(n + 1);
            //输出:11(n是包装类,这里的n自动拆箱了)
            
            Integer q = 127;
            Integer w = 127;
            System.out.println(q == w);//输出:true
            Integer e = 128;
            Integer r = 128;
            System.out.println(e == r);//输出:false
            /*java中为了提高程序的执行效率,
            将[-128到127]之间所有的包装对象提前创建好,
            放到了一个方法区的“整数型常量池”当中。
            目的是只要用这个区间的数据不需要再new了,
            直接从整数型常量池当中取出来。
            原理:q变量中保存的对象的内存地址和
            w变量中保存的对象的内存地址是一样的。
            "=="永远判断的是两个对象的内存地址是否相同。*/
        }
    }
    

    图例:
    在这里插入图片描述

    • NumberFormatException异常
      代码示例:
    public class Demo{
        public static void main(String[] args) {
            /*重点方法:static int parseInt(String s)
            静态方法,传参String,返回int.
            例子:网页上文本框中输入的100实际上是"100"字符串。
            后台数据库中要求存储100数字,此时java程序需要將"100"转换成100数字。*/
            int retValue = Integer.parseInt("123");
            /*以下代码会出现异常:NumberFormatException。
            int retValue1 = Integer.parseInt("中文");*/
            System.out.println(retValue);
        }
    }
    
    • 进制转换
      代码示例:
    public class Demo{
        public static void main(String[] args) {
            /*static String toBinarystring(int i)
            静态的:将十进制转换成二进制字符串。*/
            String s = Integer.toBinaryString(3);
            System.out.println(s);//11
    
            /*static String toOctalString(int i)
            静态的:将十进制转换成八进制字符串。*/
            String s1 = Integer.toOctalString(16);
            System.out.println(s1);//10
    
            /*static string toHexString(int i)
            静态的:将十进制转换成十六进制字符串。*/
            String s2 = Integer.toHexString(26);
            System.out.println(s2);//1a
        }
    }
    
    • Integer.valueOf方法
      代码示例:
    public class Demo{
        public static void main(String[] args) {
            Integer integer = Integer.valueOf(3);
            System.out.println(integer);
        }
    }
    
    • 总结图例
      在这里插入图片描述
  • 相关阅读:
    model.object对象查询过滤、增删改、Q
    模板中的标签、过滤器
    模板(template)包含与继承
    url用法
    AD用户登录验证,遍历OU(LDAP)
    Python下操作sqlite3
    多线程应用-类(thread)
    数组(list)分组、分段
    多线程应用-函数方式(thread)
    IntelliJ IDEA maven项目 ***
  • 原文地址:https://www.cnblogs.com/yu011/p/12656687.html
Copyright © 2011-2022 走看看