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());
    }
}

免责声明:文章转载自《Java正确创建对象数组》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kafka搭建命令与使用XML和JSON数据格式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

USBWriter之后恢复磁盘大小

USBWriter之后恢复磁盘大小的方法:1,cmd2,diskpart3,listdisk4,selectdisk*5,clean6、在我的电脑点右键,管理,然后选磁盘管理,选择USB后,右键,然后再新建卷就可以了。...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...

uniapp打包h5 出现'连接服务器超时,点击屏幕重试'的页面

跟踪以首先找出原因全局组件AsyncErrorNew在中注册。js文件可以自定义。我很快就过去了,所以我添加了一个空白页面,然后在清单中介绍了组件。json文件...

centos登录密码正确但一直报login incorrect错误(错误赋予权限)

3、 若要修改文件权限,请在无法登录之前仔细调用操作。回想一下,您以前在Linux中遇到过由文件权限引起的问题。尝试检查系统日志/var/log/secure。...

[Oracle]

MyOralceLinux6.5isrunningonVirtualBox.Basicsettingsis4Gmemory,50Ghard-disk,autopartitionwheninstallOL6.5.**Followingseriesofoperationsneedrootprivilege.1.Edit/etc/hostsAddyourhostn...

浅谈JEECG多数据源的使用

首先,我们将简要介绍JEECG是什么。JEECG主张简单的功能由代码生成器直接生成,复杂的业务由表单定制,业务流程由工作流实现和扩展,开发人员编写特殊的业务逻辑。让我们重点讨论JEECG3.5GA中多个数据源的使用。JEECG3.5提供多个数据源的功能。JEECG多数据源的设计直接使用Springjdbc连接,独立于Hibernate、Mybatis和其他持...