c++数组下标越界什么意思
比如你的数组定义时有十个元素
那么a[0] -- a[9] 分别对应相应的元素,
在程序中如果你使用了a[10]那么就超出了原来的数组定义的范围,这就是数组下标越界。
数组下标越界
String stra=new String[]{}//这句stra有语法错stra[] 先不提
而String a[]=new String[]{};
等价于
String a[]=new String[0];
等于建立了一个空数组对象,
所以stra[0]=str1时会越界
java的数组直接继承自C++数组,固定长度,需要预先申请空间。
只有初始化语法不需要声明大小
比如
String a[]={"hello", "world"};或者
String a[]=new String[]{"hello", "world"};
如果要使用自动增长的动态数组,请使用List的子类吧。
java是如何判断数组越界的
1. ArrayIndexOutOfBoundsException是运行时异常, 编译器是不会知道的, 只有运行时jvm才能捕获到
2. jvm为何能捕获到,数组在运行时是由jvm创建的一个东西,是用机器指令创建的。
。
。
类似于汇编指令, 先根据你声明的长度分别为每个元素赋值,压栈, 而对于数组的长度也是由一个特定的指令来得到的, 也会压到栈中。
这就是你为什么能用a.length得到数组长度的原因, 并且jvm在读写数组元素时都会有与数组长度比较的指令, 如果越界则抛出异常c语言是如何检测到数组越界的
每个字符串都会以"