java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java中Integer和int的使用

Java中Integer和int的使用及注意点

作者:心流时间

文章主要介绍了Java中Integer和Long类的缓存机制以及它们的比较方式,Integer和Long类在-128到127之间的值会被缓存,因此在这个范围内的值比较时可以使用==运算符,而超出这个范围的值则需要使用equals()方法进行比较

1. Integer缓存了-128到127之间的值

不在这个范围,比较值时需要用equals()方法

    public static void main(String[] args) {
        // Integer和Long都是缓存在-128~127之间,所以可以直接比较,不用equals
        Integer i1 = 127;
        Integer i2 = 127;
        System.out.println(i1 == i2);
        System.out.println(i1.equals(i2));
        System.out.println("=====");
        Integer i3 = 128;
        Integer i4 = 128;
        System.out.println(i3 == i4);
        System.out.println(i3.equals(i4));
        System.out.println("=====");

        Long ii1 = 127L;
        Long ii2 = 127L;
        Long ii3 = 128L;
        Long ii4 = 128L;
        System.out.println(ii1 == ii2);
        System.out.println(ii3 == ii4);
        System.out.println(ii1.equals(ii2));
        System.out.println(ii3.equals(ii4));
    }

true
true
=====
false
true
=====
true
false
true
true

Integer的equals方法源码

	private final int value;
    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

结论:

2. 由于int类型是基本数据类型,Integer拆箱时不能为空

    public static void main(String[] args) {
        // 由于int类型是基本数据类型,拆箱时不能为空
        // 例1
        Integer i5 = null;
        System.out.println(i5 == 3);
    }

报错:

    public static void main(String[] args) {
        // 由于int类型是基本数据类型,拆箱时不能为空
        // 例2
        Integer i5 = null;
        test1(i5);
    }

    public static void test1(int i) {
        System.out.println(i);
    }

结论:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文