请教高手:java里面的数组机制 看了think in java前几章,发现有一段说c++的数组容易出现内存问题“若程序访问自己内存块以外的数组,或者在初始化之前使用内存,会产生不可预测的后果”,我试用c++在这方面涉及的数组比较少,所以感觉不出来。那到底在java里面数组又是如何创建和访问的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java的数组的声明也是要求给定数的比如 int[] a = new int[10];但是如果你只用了5个他又一个length函数可以判断用的大小就可以不越界了 JAVA中不允许访问超过自身长度的元素。比如:int[] i = new int[5];那么只能访问i[0] - i[4],如果试图访问 i[5],就会抛出ArrayIndexOutOfBoundException异常。 数组有 length 函数?数组创建之后有自己的 Class 对象, JVM 知道用来判断是否越界. wzg_1981(王振国) ,你说的不对吧.length只和定义时候有关,无论你用了几个,length等于定义时候的。 应该是翻译的问题我觉得应该是 "若程序访问自己内存块以外的地址"如c/c++中//若程序访问自己内存块以外的地址 char *p = NULL;char buf[2];p = buf[3];*p='1'; //可能没任何错误,也可能AV错误, 但访问的地址不是你申请的//初始化之前使用内存char *p; //p不一定是NULL*p = '1'; //p没有初始化,允许就有AV错误而Java有越界判断, 当然,是用效率换安全 Scanner类,第一个与第三个cathch块( IOException和自定义异常)报错 this变量调用基本构造函数出错 数据库语句执行的问题 请大家帮一下忙! 新手想问线程是如何处理异常的呢? 请问wmv格式的文件怎么打开?!(视频) 紧急求救!!!!高手,高手,高手请进! java的开发环境该怎么样配置啊? 各位大虾,又有问题要请教了,关于内部类!!!! 数字签名请教!!分数不够可以在加!!!! SUN为什么规定public class 的名字与文件名一致? gui板块老是没人答题,是个问题啊。100分问题,这次高手别错过啊!
比如 int[] a = new int[10];
但是如果你只用了5个
他又一个length函数
可以判断用的大小
就可以不越界了
我觉得应该是 "若程序访问自己内存块以外的地址"如c/c++中
//若程序访问自己内存块以外的地址
char *p = NULL;
char buf[2];
p = buf[3];
*p='1'; //可能没任何错误,也可能AV错误, 但访问的地址不是你申请的//初始化之前使用内存
char *p; //p不一定是NULL
*p = '1'; //p没有初始化,允许就有AV错误而Java有越界判断, 当然,是用效率换安全