MyInteger {
;
MyInteger[] ;
= -;
= ;
{
(i=;i<=;i++){
[i+] = MyInteger.(i);
}
}
MyInteger valueOf(i){
(i>=&&i<=){
[i+];
}
MyInteger(i);
}
MyInteger(i){
.= i;
}
main(String[] args) {
MyInteger m = MyInteger.();
}
}
我按照老师代码一个不差的敲得,上面是我的代码,但是运行的时候报错了(视频中老师并没有运行这个代码)
运行报错:

我仔细研究了一下代码,想问一下:
1.静态方法
public static MyInteger valueOf(int i){
if (i>=LOW&&i<=HIGH){
return cache[i+128];
}
return new MyInteger(i);
}
方法中能new对象吗?关于这个问题我百度了一下,但是并没有查到关于static方法中能不能调用构造函数的问题解答,但是就我理解来讲是不能的,希望老师解答XD。
2.i在【-128,127】区间里可以直接cache【i+128】 =MuInteger.valueOf(i) = cache【i+128】吗,这样不就是一个死循环吗,只是有个256个数组空间但是没有并没有赋东西进去啊,有点搞不懂这个
3.我将
(i=;i<=;i++){
[i+] = MyInteger.(i);
}
改为
(i=;i<=;i++){
[i+] = MyInteger(i);
}
运行报错变为:
我不知道是不是问题2的代码问题导致的,还是我对数组赋值部分理解有问题,希望老师可以解答一下,帮忙找下代码错误,我按照老师的代码比对很久了,但是没找到不同的地方,也可能是我自己看自己的代码很难看出错,希望老师看下,辛苦老师了XD