Java新手易犯的陷阱:理解数组索引从0开始

需积分: 16 0 下载量 17 浏览量 更新于2024-07-13 收藏 2.07MB PPT 举报
在Java编程中,一个常见的陷阱是对于数组和类中变量索引的理解。Java与C/C++等其他语言有所不同,其数组索引是从0开始的,而非像C/C++那样从1开始。这意味着当你创建一个包含三个元素的字符串数组时,第一个元素的索引应写为`strArray[0]`,而不是`strArray[1]`。这是因为在Java中,数组的第一个位置总是索引0,最后一个元素的索引则是数组长度减一。 在给出的代码示例中,`StaticDemo`类试图在静态方法`main`中访问非静态成员变量`my_member_variable`。然而,由于`main`方法被声明为静态的,它不能直接引用非静态成员,因为静态方法属于类本身,而不是类的实例。这就导致了编译错误:"Cannot make a static reference to the non-static field". 解决这个问题的方法是在调用`my_member_variable`之前,先创建`StaticDemo`类的一个实例。如果想在静态方法中访问非静态成员,需要如下所示: ```java public class NonStaticDemo { public String my_member_variable = "somedata"; public void main(String[] args) { // 创建NonStaticDemo类的对象 NonStaticDemo demo = new NonStaticDemo(); // 现在可以从demo对象上调用my_member_variable System.out.println("This WON'T generate an error: " + demo.my_member_variable); } } ``` 通过实例化`NonStaticDemo`,你就可以正确地访问其非静态成员变量了。这个规则同样适用于访问类的实例方法,它们必须在一个具体的对象上下文中执行。 理解Java中的索引和成员访问规则对于编写无误的代码至关重要。记住,数组索引从0开始,而静态方法不能直接访问非静态成员,除非先创建该成员所属的对象实例。这不仅是初学者常常遇到的问题,也是提升Java编程技能时需要熟练掌握的基础概念。