• Java正确创建对象数组


    先从一段简单的错误代码切入,然后在后面提出正确的创建方法。

    先考虑这段代码:

    public class Student {
    
        private int age;
        private String name;
    
        public void Student() {
            this.age = 21;
            this.name = "someone";
        }
    
        public void setAge (int age) {
            this.age = age;
        }
    
        public int getAge() {
            return this.age;
        }
    }
    public class Test {
    
        public static void main(String[] args) {
    
            Student[] students = new Student [3]; 
    
            students[0].setAge(18);  
    
            System.out.println(students[0].getAge());
        }
    }

    运行结果如下,是一个空指针异常:

    Exception in thread “main” java.lang.NullPointerException 
    at Test.main(Test.java:7)

    分析原因

    Student[] students = new Student [3]; 这一句创建了三个Student的声明,但并没有调用Student的构造方法,等价于,

    Student s1;
    Student s2;
    Student s3;

    因此,s1, s2, s3的对象实际上并没有被创建,在内存上也没有一块对应的空间。那么在对象还没有被创建之前,我们自然是不可以调用它的任何方法的。

    正确的对象数组创建方法

    public class Test {
    
        public static void main(String[] args) {
    
            int i;
    
            Student[] students = new Student [3]; 
    
            //实例化每一个元素
            for (i = 0; i < students.length; i++) {
                students[i] = new Student();
            }
    
            students[0].setAge(18);  
            students[1].setAge(30); 
            students[2].setAge(25); 
    
            System.out.println(students[0].getAge());
            System.out.println(students[1].getAge());
            System.out.println(students[2].getAge());
        }
    }
  • 相关阅读:
    人民币大小写转换
    window.parent与window.openner区别
    jquery.honver(),toggle()
    ADO.NET Entity Framework 之“无法加载指定的元数据资源。”
    window.external 的用法(收藏夹功能)
    空链接的技巧
    IIS自动开通组件编程
    在Asp.net中操作IIS的虚拟目录(C#)
    最佳 .NET 网站推荐
    边框 top、clientTop、scrollTop、offsetTop
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12542553.html
Copyright © 2020-2023  润新知