zoukankan      html  css  js  c++  java
  • 包装类

    包装类

    java.lang.*是为了给对应着的基本类型, 提供丰富的功能

    对应关系

    基本类型 包装类 父类
    byte Byte Number
    short Short Number
    int Integer Number
    long Long Number
    float Float Number
    double Double Number
    boolean Boolean Object
    char Character Object

    包装类常用方法

    所有包装类的方法都大同小异, 熟练了一个, 其他都是这个模板

    这里以Integer为例:

    构造方法

    Integer(int value) 构造一个新分配的 Integer对象,该对象表示指定的 int值。
    Integer(String s) 构造一个新分配 Integer对象,表示 int由指示值 String参数。

    常用静态方法

    返回值 方法 说明
    int intValue() Integer转为int类型(拆箱)
    其他包装类的方法名字例如: DoubleValue()
    Integer valueOf(int i) int类型转为Integer(装箱)
    int parseInt(String str) 将一个String转为int类型的十进制数

    自动拆箱装箱

    // 自动装箱
    Integer a = 100; 
    // Integer a = new Integer(100); //  不推荐使用
    
    // 自动拆箱
    int b = a;
    

    创建方式对比

    Integer in = new Integer(2);
    Integer in2 = Integer.valueOf(2);// 高效, 如果是相同的数据, 则不会开辟新的空间, 但是有特殊情况, 请见下面的Integer缓存
    

    验证

    Integer in2 = Integer.valueOf(2);
    Integer in3 = Integer.valueOf(2);
    System.out.println(in2 == in3); // 结果: true
    

    由此可见, 使用valueOf()如果存在相同的数据, 则不会开辟新的空间, 建议使用!

    Integer的缓存

    Integer里有一个缓存空间(源码中可见, 是一个缓存数组), 范围是一个字节的范围, 即-128~127, 上面创建方式对比说到Integer in2 = Integer.valueOf(2);高效, 是因为 如果是相同的数据, 则不会开辟新的空间. 但是如果范围超出了这个缓存范围, 那么还是会开辟新的空间的

    代码示例:

    Integer x1 = 127;
    Integer x2 = 127;
    
    Integer x3 = 128;
    Integer x4 = 128;
    
    System.out.println(x1 == x2);
    System.out.println(x3 == x4);
    
    // 或者你可以这么写(等效上面的写法)
    // Integer x1 = Integer.valueOf(127);
    // Integer x2 = Integer.valueOf(127);
    
    // Integer x3 = Integer.valueOf(128);
    // Integer x4 = Integer.valueOf(128);
    
    // System.out.println(x1 == x2);
    // System.out.println(x3 == x4);
    

    运行结果:

    true
    false
    

    所以, 当使用==比较Integer时, 可能会出现意外的结果, 所以推荐使用Inteherequals()进行比较

  • 相关阅读:
    hdu 5025 bfs+状压
    hibernate的saveOrUpdate方法
    jsp中使用css选择器与<c:foreach>标签的问题
    5- js 正则的方法
    cookie存储的值
    word中目录的灰色是怎么回事?
    css三角形
    windows下,OracleServiceXXX和Oracle 实例的关系
    echo的功能
    myeclipse 删除不再使用的工作空间记录
  • 原文地址:https://www.cnblogs.com/zpKang/p/12899858.html
Copyright © 2011-2022 走看看