• java中的包装类


    java一共有8中基本数据类型,每一种数据类型就有对应的包装类。

    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean
    • 包装类有什么用?

    可以在对象中定义更多的功能方法操作该数据。

    • 包装类的常用方法

    来看一下其中一个包装类Integer。

    Integer 类在对象中包装了一个基本数据类型int的值。

    该类还提供了多个方法,能在int类型和String类型之间互相转换,

    还提供了处理int类型时非常有用的其他一些常量与方法。

    常量:

    Integer包装类里面有int范围最大值与最小值

    由于是静态,可以直接调用

    Integer.MIN_VALUE(最小值)

    Integer.MAX_VALUE(最大值)

    构造方法:

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

    Integer i1 = new Integer(100);
    Integer i2 = new Integer("200");

    成员方法:

    static parseInt

    public class Test {
        public static void main(String[] args){
            String i = "100";
            int j = Integer.parseInt(i);     // 转换类型一般用这个,注意Character没有这个parseXxx方法
            System.out.println(j);
        }
    }

    更多还是看API文档吧。

    • 自动装箱与自动拆箱

    public static void main(String[] args){
            int i = 10;
            Integer integer = new Integer(i);    // 装箱,将基本类型包装成对象,装箱
            
            int j = integer.intValue();          // 拆箱,将对象转换为基本数据类型
            
            Integer integer2 = 100;              // 自动装箱,把基本数据类型转换为对象(jdk5新特性)
            int k = integer + 100;               // 自动拆箱,把对象转换为基本数据类型(jdk5新特性)
            System.out.println(k);
        }
    • 补充一个坑:

    自动装箱与自动拆箱有一个坑。

    public static void main(String[] args){
            {
                int n1 = 10;
                int n2 = 10;
                Integer i1 = new Integer(n1);
                Integer i2 = new Integer(n2);
                System.out.println(i1 == i2);
                System.out.println(i1.equals(i2));
                System.out.println("-------------");
            }
    
            {
                Integer i1 = 127;
                Integer i2 = 127;
                System.out.println(i1 == i2);
                System.out.println(i1.equals(i2));
                System.out.println("-------------");
            }
    
            {
                Integer i1 = 128;
                Integer i2 = 128;
                System.out.println(i1 == i2);
                System.out.println(i1.equals(i2));
                System.out.println("-------------");
            }
        }

    输出结果是:

    false
    true
    -------------
    true
    true
    -------------
    false
    true
    -------------

    为什么127是true,128就是false呢?

    -128到127是byte的取值范围,如果在这个范围内,自动装箱不会新创建对象,而是从常量池中获取。如果超过了byte取值范围就会再创建对象。

    源码:

    public static Integer valueOf(int i) {
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
        }
  • 相关阅读:
    java基础面试题(一)
    关于Redis的十个高频面试问题
    postgres中的merge join
    cgdb调试postgresql
    再见了,程序员!
    掌握这个小技巧,让你的 C++ 编译速度提升 50 倍!
    C语言修仙大法!基础知识全复习(纯干货)!!!
    一锅端了!北京朝阳一互联网公司被端,警方上门,23人被带走…
    C++入口不是main?知乎上都快打起来了,你们不要再打了啦!
    不用创建项目,直接在 VS 里快速测试 C/C++ 代码 !
  • 原文地址:https://www.cnblogs.com/chichung/p/10233749.html
Copyright © 2020-2023  润新知