美文网首页程序员
Integer和int的爱恨情仇(Java)

Integer和int的爱恨情仇(Java)

作者: 雁度寒崖 | 来源:发表于2019-08-17 16:23 被阅读13次

    int类型

    int类的简介

    int是Java的8大基本数据类型之一,32位,有符号的以二进制补码表示的整数
    最小值-2^{31}=-2,147,483,648
    最大值2^{31}-1=2,147,483,647
    整形变量默认是int类型
    int类型默认值是0
    基本数据类型的对象都在栈中,所以可以直接用==来判断两个int类型的是否相等

    Integer类

    Integer类简介

    Integer类是基本数据类型int的包装器类,是抽象类Number的子类,位于java.lang包中
    Integer类在对象中包装了一个基本类型int的值,也就是每个Integer对象包含一个int类型的字段。在Integer源码中如下

    private final int value;
    

    占多少位?

    System.out.println(Integer.BYTES);  //4
    System.out.println(Integer.SIZE);   //32
    

    可以看出,Integer占32位,4个字节,和int类型是一样的

    最大值和最小值

    System.out.println(Integer.MAX_VALUE);//2147483647
    System.out.println(Integer.MIN_VALUE);//-2147483648
    
    初始化方法

    构造函数

    Integer(int value);
    Integer(String s); //String里面只能写数字
    

    这两种构造方法现在已经被废弃了,更多的现在是直接写=,就像这样:

    Integer i = 100;
    

    默认值是NULL

    对比int和Integer

    1)“==”和equals()方法:

    在Integer类中,“==”用来比较对象地址是否相同,并且Integer类重写了equals(Object obj)方法,
    在equals(Object obj)方法中,会先判断参数中的对象obj是否是Integer类型的对象,
    如果是则判断值是否相同,值相同则返回true,
    值不同则返回false,如果obj不是Integer类的对象,则返回false。

    int a = 200;
    Integer b = 200;
    Integer c = 200;
    Integer d = 2;
    Integer e = 2;
    
    //a在进行比较时,会***自动装箱***
    System.out.println(b.equals(a));  //true
            
    //因为b是Integer对象,a是基本数据类型int的变量,当进行“==”比较时,b会***自动拆箱***成int,从而比较的就是变量的值是否相等
    System.out.println(b == a);   //true
    
    //对比两个值相等的Integer对象(),如果用==,Integer的值在-128~127之间,则直接比对的是值,不在这个范围里就比较地址:
    System.out.println(b == c);  //false
    System.out.println(d == e);  //true
    

    另外,Integer类里面还有很多很实用的方法:

    函数 解释
    [static int] bitCount(int i) 返回指定 int 值的二进制补码表示形式的 1 位的数量
    [static int] compare(int x,int y) 比较x和y的值,当x大于y时返回1,当x等于y时返回0,否则返回-1
    [int] compareTo(Integer anotherInteger) 在数值上比较两个Integer对象
    [boolean] equals(Object obj) 比较此对象与指定对象
    [int] hashcode() 返回此对象的哈希码
    [static int] parseInt(String str) 将字符串参数作为有符号十进制数进行解析
    [static String] toBinaryString(int i) 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式
    [String] toString() 返回该Integer值得String对象
    [static Integer] valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例

    相关文章

      网友评论

        本文标题:Integer和int的爱恨情仇(Java)

        本文链接:https://www.haomeiwen.com/subject/epgqsctx.html