JAVA Integer赋值比较

  • Integer介绍

Integer是int的包装类,继承Number类另实现Comparable接口,其取值范围为:-2147483648~2147483647

  • 赋值操作
	Integer newInt = new Integer(10);
	//自动装箱操作,编译后class文件中为:Integer num = Integer.valueOf(10);
	Integer num = 10;
	//num.intValue()为解包操作
	int intNum = num.intValue();
	/**
	 * 输出结果为true----false----true,原因:
	 * 1、 Integer为引用类型,引用类型栈中变量表示一个地址指向堆中的一片内存空间
	 * 2、 newInt.equals(num)为true是因为Integer重写了equals方法,equals方法中实际是值比较
	 * 3、(newInt == num)为false因为两个变量不指向同一片内存
	 * 4、(intNum==num)结果为true是因为intNum是基本数据类型,值直接存在栈中,两者比较的是值
	 */
	System.out.println(newInt.equals(num)+"----"+(newInt == num)+"----"+(intNum==num));
    private final int value;
    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
        	//将对象强制转换为Integer类型,然后自动拆箱进行==比较
            return value == ((Integer)obj).intValue();
        }
        return false;
    }
  • 构造函数
	public Integer(int value) {
		//参数为int 直接赋值
		this.value = value;
	}

	public Integer(String s) throws NumberFormatException {
		//参数为String的情况下调用paseInt()方法进行赋值,10表示为按10进制转换
		this.value = parseInt(s, 10);
	}

版权声明:本文为L15110103894原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。