小小问题,大家见谅

shlgsty 2008-08-07 12:24:34
class shuzhu1
{
public static void main(String args[])
{
int num2[][];
num2=new int [3][];
num2[0]=new int[5];
num2[0][4]=2;
System.out.println(num2[0][4]);
System.out.println(num2[0][3]);
System.out.println(num2[0][7]);
}
}

输出结果是
E:\>java shuzhu1
2
0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at shuzhu1.main(shuzhu1.java:11)
、、、
同时我想问一下我没设置的数组输出值为什么为空
超过数组边界的数组值输出是什么意识
我感刚刚开始学大家见谅!!问题简单!!!
...全文
106 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
rypgood 2008-08-07
  • 打赏
  • 举报
回复
System.out.println(num2[0][7]);

num2[0]=new int[5];

你认为7<5???
lxxzhy 2008-08-07
  • 打赏
  • 举报
回复
程序只对num2[0]进行了内存分配,也就是new int[5],分配这个内存的时候,编译器会自动把内存清零,所以num2[0][0]到num2[0][4]初值都为0
num2[1] num2[2]都没有分配内存,所以都是指向null
而num2[0][7]越界了,因为num2[0]=new int[5],只分配了5个int的内存(0到4),因此系统抛数组越界异常了.
wve 2008-08-07
  • 打赏
  • 举报
回复
new int时会设默认值为0,所以num2[0][3]==0

num2[0]=new int[5];
将num2[0]的长度设为5,所以只会有num2[0][0],num2[0][1],num2[0][2],num2[0][3],num2[0][4],
7〉4,所以num2[0][7] 超出数组的大小
sxn19811006 2008-08-07
  • 打赏
  • 举报
回复
越界了5>7?
xujiaxiang 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wftvecwd 的回复:]
引用 4 楼 zhaolinger2 的回复:
ls...
麻烦做广告的时候能不能专业一点啊,不要直接ctrl+cv好不好?如果上面这个问题“开始的时候我也找不到问题的原因”,还需要去技术交流群,不是说明兄弟你水平太次就是说明这个群太烂……一个水平太次的人推荐的群……最讨厌你们这帮做广告的,一点技术含量都没有。


就是就是
[/Quote]

真的很讨厌!很恶心!
wolfgang_l 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xcgnm 的回复:]
这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交

流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:六二八

七八零四三。另外,这个群里可以接项目。
[/Quote]

這SB廣告已經很久沒人管理了…………看著真難受。
wftvecwd 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhaolinger2 的回复:]
ls...
麻烦做广告的时候能不能专业一点啊,不要直接ctrl+cv好不好?如果上面这个问题“开始的时候我也找不到问题的原因”,还需要去技术交流群,不是说明兄弟你水平太次就是说明这个群太烂……一个水平太次的人推荐的群……最讨厌你们这帮做广告的,一点技术含量都没有。
[/Quote]

就是就是
zhaolinger2 2008-08-07
  • 打赏
  • 举报
回复
ls...
麻烦做广告的时候能不能专业一点啊,不要直接ctrl+cv好不好?如果上面这个问题“开始的时候我也找不到问题的原因”,还需要去技术交流群,不是说明兄弟你水平太次就是说明这个群太烂……一个水平太次的人推荐的群……最讨厌你们这帮做广告的,一点技术含量都没有。
shlgsty 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 clarck_913 的回复:]
哦,没看你的问题。

1 没设置的数组输出值为什么为空

没设置就是没有分配内存,所以为空。

2 超过数组边界的数组值输出是什么意识

你也看到了,是抛出异常。这点和C++不一样,C++和C不会去检查数组下标是否越界

Java会进行检查,并当数据下标越界的时候抛出数组下标越界异常ArrayIndexOutOfBoundsException


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at shu…
[/Quote]
明白了谢谢?
clarck_913 2008-08-07
  • 打赏
  • 举报
回复
哦,没看你的问题。

1 没设置的数组输出值为什么为空

没设置就是没有分配内存,所以为空。

2 超过数组边界的数组值输出是什么意识

你也看到了,是抛出异常。这点和C++不一样,C++和C不会去检查数组下标是否越界

Java会进行检查,并当数据下标越界的时候抛出数组下标越界异常ArrayIndexOutOfBoundsException



Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at shuzhu1.main(shuzhu1.java:11)

这个信息的意思就是,在main的这个线程里出现了java.lang.ArrayIndexOutOfBoundsException(数组下边越界异常)

位置是在你的这个shuzhu1.java文件中的第11行
clarck_913 2008-08-07
  • 打赏
  • 举报
回复
num2[0]=new int[5];

这是你定义的语句

这个二维数组的第一行被你定义为长度为5了

你在后面去访问该行第8个元素,肯定要出异常了。
shlgsty 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rypgood 的回复:]
System.out.println(num2[0][7]);

num2[0]=new int[5];

你认为7 <5???
[/Quote]
我是看一下越界输出时是什么结果?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧