2 u012733415 u012733415 于 2015.06.14 11:15 提问

关于Integer a=1;的问题

Integer是int封装类,它可以直接Integer a=1; 创建对象。

查询资料,Integer a=1;实际上执行的是Integer a=Integer.valueOf(1)

我参考Integer的源代码也创建了个Integer类,可是为何不能直接赋值?

自己创建的Integer类

public class Integer extends Number implements Comparable<Integer> {

    //Integer的值
    private static int value;

    /**
     * 构造方法用来 new创建对象
     * @param v
     */
    public Integer (int v){
        this.value=v;
    }


    /**
     * 静态方法,用来直接=赋值( 可是就是不管用。求解决)
     * @param value
     * @return
     */
    public static Integer valueOf(int value){
        return new Integer(value); 
    }


    /**
     * 以下都是抽象类的抽象方法的实现,和接口的方法的实现,
     */

    public int compareTo(Integer o) {

        return (int) this.value;
    }


    public int intValue() {

        return (int) this.value;
    }


    public long longValue() {

        return this.value;
    }


    public float floatValue() {

        return this.value;
    }


    public double doubleValue() {

        return this.value;
    }



    public String toString() {
        return this.value+"";
    }

}

测试类
测试类

6个回答

u012733415
u012733415   2015.06.14 11:18

为什么我创建的类不能直接赋值?****_

wdfxspt
wdfxspt   2015.06.14 11:21

不是不能赋值,你的jdk可能比较低,切换高的。

u012733415
u012733415 需要什么版本,你看看下面我截图的版本,
2 年多之前 回复
beacon_2011
beacon_2011   Rxr 2015.06.14 11:55

你是说integer没直接复制么?升级一下jdk看看底层代码,没关注过

u012733415
u012733415 需要什么版本,你看看下面我截图的版本,
2 年多之前 回复
u012733415
u012733415   2015.06.14 13:02

图片说明

这是我的jdk版本

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.06.14 14:39

我觉得跟版本没有关系,,提示报什么错误了么?肯定是没有转换成功啊,你肯定也看了原来的源代码参考写的,不应该有大问题,会不会是没有调用你的那个
类?一般是默认java.lang.*包

u012733415
u012733415 声明的那个类,的确是我写的那个类,请问是不是其他地方出错了?
2 年多之前 回复
zhi_ai_yaya
zhi_ai_yaya   Rxr 2015.06.15 09:23
//Integer的值
private static int value;

    不应该定义为static吧。
u012733415
u012733415 它只是存储个值,跟是不是静态没有关系
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片