⑴
我将源代码稍作修改,将
a[i] = new Integer(pRand(500));
换成了
a[i] = new Integer(i);
⑵
去除了源代码中的一些方法;以便突出显示问题的所在。
===========================
还望高手点拨!谢谢了 ^_^
我将源代码稍作修改,将
a[i] = new Integer(pRand(500));
换成了
a[i] = new Integer(i);
⑵
去除了源代码中的一些方法;以便突出显示问题的所在。
===========================
还望高手点拨!谢谢了 ^_^
解决方案 »
- 调用JPanel.getGraphics()出现java.lang.NullPointerException
- 这种写法是什么含义:int flag = reader.readShort() & 0xffff;
- 请问将int[]={1,2,3}转换为String
- CardLayout的一个小问题
- 编译出错.提示 cannot find symbol variable a 很简单的问题,刚学java没两天.
- ItemUnitList cannot be resolved to a type怎么解决了!请大牛指点!!
- Applet中classnotfound问题
- 排序问题
- [求助]请问一下关于Thread的问题
- javah -jni myclass???在线...
- 我装的是j2sdk1.4.0,写了一个相应htm请求的servllet,xiangying.java,但是..
- 三问高手。
就已经对数组进行初始化了,数组里的每个元素的值都为null。
int[] a=new int[3];
数组里的每个元素都是0;
其元素是Integer对象的引用,按照java规范,其初值为 null,
即不指向任何对象。
a[i] = new Integer(i);
仍然能执行的原因是下面的这句语句
prt("a[" + i + "] = " + a[i]);
它会把a[i]转换成字符串,然后想加.
由于a[i]=null,而null这个特殊的东西转换成的字符串也是"null",所以你的程序的输出必然是
a[0] = null
a[1] = null
a[2] = null
...
,当然你把prt语句中的a[i]换成null,程序一样的执行结果.但是这并不是说你的数组就初始化结束了,这个时候数组仍然没有被初始化,他的每个值都是null,即不可用的.这个时候调用a[i].任何方法都会出异常.
比如你把prt这句该为
prt("a[" + i + "] = " + a[i].toString());还有想看看效果,可以把上句该为
prt("a[" + i + "] = " + new Object());
他输出的是Object.toString()转换出来的地址.
只有在「生成新的Integer 物件以初始化reference」之後,初始化動作才算完成:是正确的.
只有这样才能使用a[i],否则可能就只能象你prt 这样的程序可以执行,其他的恐怕还会出错.能运行的原因当然是因为那个null了.而不是说a[i]是可用的.