包装类

2019-10-28 06:23:20来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

包装类

 


 

首先思考一个问题:为什么要存在 包装类?

                  Java是语言一门纯面向对象的编程语言,万物皆对象!

如:

            int num = 30;     // int是基本数据类型

            Person p = new Person( );

 

在某些特殊场合中,如集合中:集合要求放入的所有数据都必须是对象(即,引用类型)。

而对于基本类型的数据来说,这并不满足是对象的要求:因此不能直接将 基本数据类型的数据 放入到集合中。

为了能够放入该类数据,就要对这些基本数据类型进行对象化处理,于是需要借助 包装类

 

 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     类

 
Integer 类  (重点)   1. 概述:    java.lang.Integer类 被 final修饰,表示该类不能被继承。该类的内部包装了一个int类型的数据。   2. 常用方法:               Integer(int value)    -采用参数指定的整数来构造对象               Integer(String str)   -采用参数指定的字符串来构造对象 static int parseInt(String str) -用于将字符串转换为 int类型的整数。(静态方法使用 类名.的方式调用)               int intValue()           -将Integer类型对象中的整数值返回   3. 装箱 和 拆箱   (从JDK1.5开始,支持自动装箱 和 自动拆箱 功能)   装箱就是指 从基本数据类型 转换成 引用数据类型;  如: int  ===> Integer 拆箱就是指 从引用数据类型 转换成 基本用数据类型;  如:Integer ===> int
    4. 自动装箱池     从JDK1.5开始,支持自动装箱 和 自动拆箱 功能,为了提高装箱的效率,Integer类的内部还提供了一个自动装箱池, 里面放好了  -128  ~ 127 之间的数据对象。当程序中需要对该范围中的数据进行装箱时,直接从装箱池中获取。超出该范围的数据,才需要创建新的对象。    代码演示:
public class IntegerTest {

    public static void main(String[] args) {
        
         //根据参数指定的int类型来构造Integer类型的对象 
        // int ==> Integer类型   : 装箱 操作  (手动)
        Integer it1 = new Integer(123);
        System.out.println("字符串类型的it1---"+it1);
        
        // 将Integer类型对象中的整数值返回
        // Integer类型 ==> int  : 拆箱 操作    (手动)
        int res = it1.intValue();
        System.out.println("int类型的it1-------"+res);
        
        System.out.println("---------------------------------");
        
        // int 数据类型 ==>  Integer类型,
        Integer it2 = 456; // 这里Integer能够直接 接收一个 int数据类型:是因为jdk1.5之后实现了自动装箱功能
        System.out.println("字符串类型的it2---"+it2);
        
        // Integer 数据类型 ==>  int 类型,
        res = it2;    // 
        System.out.println("int类型的it2-------"+res);
        
        System.out.println("---------------------------------");
        
        Integer it3 =  127;  
        Integer it4 =  127;
        Integer it5 = new Integer(127);
        Integer it6 = new Integer(127);
        
        // 此时 it3 ,it4 都是Integer类型
        System.out.println("it3 == it4 ?----" +(it3 == it4));    // == 用于比较 引用类型时,比较的是对象的地址   127 在 [-128, 127]自动装箱的数据范围之内,所以127来自自动装箱池
        System.out.println("it3.equals(it4)----"+(it3.equals(it4)));  // Integer类重写了Object的equals()方法,用于比较两个对象的内容是否一致,it3,it4都是127
        
        // 此时it5, it6 都Integer类型
        System.out.println( "it5 == it6 ?----" +(it5 == it6));     // == 用于比较 引用类型时,比较的是对象的地址 it5 ,it6都是通过new出来的,是两个不同的对象。
        System.out.println("it5.equals(it6)----"+(it5.equals(it6)));    // // Integer类重写了Object的equals()方法,用于比较两个对象的内容是否一致,it3,it4都是127
        
        
        System.out.println("---------------------------------");
        
        // 同理 it7, it8 都Integer类型
        Integer it7 =  128;  
        Integer it8 =  128;  
        System.out.println( "it7 == it8 ?----" +(it7 == it8));   // 比较对象地址      但是,128不在自动装箱池的数据范围之内。  
        System.out.println("it7.equals(it8)----"+(it7.equals(it8))); // 比较内容

    }

}

 结果;

字符串类型的it1---123
int类型的it1-------123
---------------------------------
字符串类型的it2---456
int类型的it2-------456
---------------------------------
it3 == it4 ?----true
it3.equals(it4)----true
it5 == it6 ?----false
it5.equals(it6)----true
---------------------------------
it7 == it8 ?----false
it7.equals(it8)----true

 

 


 常用方法代码测试:

public class IntegerTest {

    public static void main(String[] args) {
        
        // 使用参数指定的整数来构造对象
        Integer it1 = new Integer(123);
        System.out.println("自动调用toString()方法 打印it1 = "+it1);      // 自动调用toString()方法 
        System.out.println("获取包含的整数值: "+it1.intValue());                               // 获取包含的整数值 123
        
        // 使用参数指定的字符串来构造对象
        Integer it2 = new Integer("456");
        System.out.println("自动调用toString()方法 打印it2 = "+it2);      // 自动调用toString()方法 
        System.out.println("获取包含的整数值: "+it2.intValue());       // 获取包含的整数值值 456
        
        // 将字符串转换为整数
        int parseInt = Integer.parseInt("789");
        System.out.println("将字符串转换为整数:"+parseInt);
        
        // 将整数转换为 二进制形式 的字符串
        String binaryString = Integer.toBinaryString(-1);
        System.out.println("将整数转换为 二进制形式 的字符串: "+binaryString);
        
        // // 将整数转换为 二进制形式 的字符串
        String hexString = Integer.toHexString(-1);
        System.out.println("将整数转换为 二进制形式 的字符串: "+hexString);
        

    }

}

结果:

自动调用toString()方法 打印it1 = 123
获取包含的整数值: 123
自动调用toString()方法 打印it2 = 456
获取包含的整数值: 456
将字符串转换为整数:789
将整数转换为 二进制形式 的字符串: 11111111111111111111111111111111
将整数转换为 二进制形式 的字符串: ffffffff

 



原文链接:https://www.cnblogs.com/penguin1024/p/11741652.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:高安全性密码的正则表达式验证

下一篇:数据库优化 - 实例优化