zoukankan      html  css  js  c++  java
  • 91.Java自动装箱拆箱

    自动装箱/拆箱

    自动装箱:指开发人员可以把一个基本数据类型直接赋给对应的包装类。

    自动拆箱:指开发人员可以把一个包装类对象直接赋给对应的基本数据类型。

    典型应用:

       List list = new ArrayList();

       list.add(1);

       //list.add(new Integer(1));

       int i=list.get(0);

       //int j = (Integer)list.get(0);

    1.     基本数据类型包装类

                               

    包装类 

      基本数据类型

    Byte

    byte

    Short

    short

    Integer

    int

    Long

    long

    Boolean

    boolean

    Float

    float

    Double

    double

    Character

    char

    对象变基本数据类型:拆箱

    基本数据类型包装为对象:装箱

    为了使得java的基本类型有更多的功能,java为其所有的基本类型提供了包装类来封装常见的功能。如:最大值、数值转换等。

    将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

    所属的包:java.lang.*

    常见应用一:

    获取最大最小值MAX_VALUE / MIN_VALUE

    整数类型最大值

    Integer.MAX_VALUE

    System.out.println(Integer.MIN_VALUE);// -2147483648

    System.out.println(Integer.MAX_VALUE);// 2147483647

    应用二:

    基本数据类型和字符串之间的转换

    例:Integer的parseInt方法,intValue方法

    基本数据类型转换成字符串:

    1:基本数据类型+””

    2:基本数据类型.toString(基本数据类型值);

    例如  Integer.toString(34); //将34变成了”34”

    基本数据类型转字符串

            int i=100;
            String str=100+"";
            String string = Integer.toString(100);

    字符串变基本数据类型

    基本数据类型 a=基本数据类型包装类.parse基本数据类型(String str);

         str="123";
            int parseInt = Integer.parseInt(str);
            System.out.println(parseInt);
             

    注意: 

    public static int parseInt(String s)
    Integer类中的parseInt方法是静态的 参数必须是数字格式

    Double

         str = "3.14";
            double parseInt2 = Double.parseDouble(str);
            System.out.println(parseInt2);
    
         boolean b = Boolean.parseBoolean("true");

    应用三:

    进制转换:

     十进制转成其他进制.

    toBinaryString(int i) 
              以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。 
    toHexString(int i) 
              以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。 
    toOctalString(int i) 
              以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 
    那么其他进制转成十进制
    parseInt(String radix);
    parseInt(String s, int radix) 
              使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 

    十进制转其他进制

      

         // 十进制转二进制
            String binaryString = Integer.toBinaryString(100);
            System.out.println(binaryString); // 1100100
            // 十进制转十六进制
            String hexString = Integer.toHexString(100);
            System.out.println(hexString); // 64
    
            // 十进制转八进制
            String octalString = Integer.toOctalString(100);
            System.out.println(octalString); // 144

    其他进制转十进制

         // 字符串转对应的进制
            int parseInt3 = Integer.parseInt(octalString);
            System.out.println(parseInt3);
            // 二进制转十进制
            int parseInt4 = Integer.parseInt(binaryString, 2);
            System.out.println(parseInt4);
            // 十六进制转十进制
            int parseInt5 = Integer.parseInt(hexString, 16);
            System.out.println(parseInt5);
            // 八进制转十进制
            int parseInt6 = Integer.parseInt(octalString, 8);
            System.out.println(parseInt6);

    JDK5.0后出现了自动装箱和拆箱

    JDK5.0以后,简化了定义方式。

         Integer x = new Integer(5);//装箱
            int intValue = x.intValue(); //拆箱
    
            // 5.0简化书写
            // 自动装箱。new Integer(5);
            Integer y = 5;  
            // 对象加整数,x 进行了自动拆箱,变成了int 型 和5进行加法运算后再将和进行装箱赋给x。
            y = y + 5; // 是通过Integer.intValue() 方法进行拆箱

    练习:

    public static void main(String[] args) {
            Integer a = 127;
            Integer b = 127;
            System.out.println(a == b);
    
            Integer c = 128;
            Integer d = 128;
            System.out.println(c == d);
        }

    请问结果?

       a==b 为true 因为a和b指向了同一个Integer 对象.

       Integer的缓存大小-128 ~127 之间也就是byte的范围。

    author@nohert
  • 相关阅读:
    求随机数平均值方法 求随机数方差方法 求正态分布的随机数
    combox 绑定
    winform界面textbox框 鼠标经过时出现浮动
    Regex
    C# 3.0 一行求方差
    通过Linq 实现DataTable Group By
    ORACLE 时间运算
    发布几个国外的XHTML模板站,DIV+CSS模板下载
    C# 3.0新特性系列:隐含类型var
    在NTier 或多层应用程序中使用ADO.NET Entity Framework
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13624507.html
Copyright © 2011-2022 走看看