Java数组超界异常示例:主方法与构造函数详解

需积分: 28 0 下载量 163 浏览量 更新于2024-08-20 收藏 949KB PPT 举报
在本篇关于“数组超界异常举例”的文章中,我们首先探讨了一个Java代码示例。在`ex1`类的`main`方法中,定义了一个字符串数组`str`,它包含四个元素。然而,在for循环中,尝试通过索引`i`访问数组元素,从0到4。这里需要注意,数组的索引是从0开始的,所以在循环中,当`i`等于4时,数组的下标应该是3,因为Java数组的范围是0到长度减一。因此,当执行`str[4]`时,会导致数组越界异常,因为数组的实际长度是4,而循环试图访问超出这个范围的位置。 接下来是与Java编程相关的知识点: 1. **数组声明错误** - 在选择题中,选项C `int[3][]a` 是错误的,因为它表示一个嵌套数组,但在Java中,应先声明外层数组,再声明内层数组。正确的语法应是 `int[] a` 或 `int[3][5] a`。 2. **访问控制修饰符** - 类成员变量的访问控制决定了它可以在哪些作用域内被访问。题目要求成员变量只能在类A内部访问,答案是(A) private,它限制了成员变量的可见性。 3. **构造函数的理解** - 构造函数是用于初始化新创建对象的特殊方法,选项(B)提到构造函数可以有返回值是错误的,因为构造函数通常没有返回值;选项(A)和(D)都是正确的描述。 4. **Java编程规范** - 填空题涉及Java编程的基础知识。一个Java源程序文件中最多可以定义一个公共类;`x`在`x=Float.parseFloat(y)`后变为浮点类型;一个类可以实现多个接口,数量不限;`a.length`表示数组a的长度;`Strings1`和`Strings2`是两个不同的字符串对象,所以`s1==s2`的结果为`false`。 5. **程序改错** - 题目给出了两个程序片段,第一个中的循环应该修改为`for (int i = 0; i < 5; i++)`,防止数组越界;第二个类的构造函数中,参数应放在方法体内部,即`public A(int a) { this.a = a; }`。 6. **数组声明和构造** - 选项B `int ages[] = new int[100];` 是合法的数组声明和构造语句,其余选项都有语法错误。 7. **修饰符组合** - 选项C `abstract final 类` 是错误的,因为抽象类不能是final,但抽象方法可以修饰final。 8. **构造函数特性** - 选项(A)错误,构造函数没有返回类型;选项(D)正确,创建新对象时会自动调用构造函数。 9. **声明常量关键字** - 声明常量的关键字是`final`。 10. **数据类型转换** - `x=Integer.parseInt(y)`后,`x`会变成整型。 11. **继承和覆盖** - 如果子类重写父类的`m()`方法,子类中调用父类的方括号表示法`super.m()`来调用父类的方法。 以上知识点总结了数组越界异常、Java语法、访问控制、构造函数、数组声明、常量、数据类型转换以及面向对象编程的相关概念。