Java中数组的初始化的含义

Java中数组的初始化的含义

引用数组的定义为(如果不是基本的数据类型):

   Obj[] a=new obj[size]

下面首先来看这个例子

class showstr{

    public void show(){

        System.out.println("hello!");

    }

}

public class Arraytest {

 

    public static void main(String[] args) {

        showstr[] a=new showstr[10];

        for(int i=0;i<a.length;i++)

        {

            a[i].show();

        }

    }

}

这段代码会运行正常吗?

答案是不会,因为辉抛出异常,因为在数组的定义得时候,showstr[] a=new showstr[10]这句话调用的是数组对象的构造函数,而不是showstr的构造函数,在程序中,首先要加上对每个数组对象的初始化才能使用,例子如下

class showstr{

    public void show(){

        System.out.println("hello!");

    }

}

public class Arraytest {

 

    public static void main(String[] args) {

        showstr[] a=new showstr[10];//这句话只是调用了数组的构造函数,返回队中的一个地址,而不是showstr的构造函数

        for(int i=0;i<a.length;i++)

        {

            a[i]=new showstr();//如果要调用对象中的函数,需要先对其进行初始化

            a[i].show();

        }

    }

}

Java里面真的是一切皆对象啊!数组都是对象。例如String s1[] = new String[5];也是返回堆中一个地址,也要调用构造函数,只不过不是String类的构造函数而是这个数组对象类的构造函数。不能习惯的认为此处的构造函数是String类的构造函数,没有把它当成数组对象的一种定义来看待。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值