猿问

用Java创建对象数组

用Java创建对象数组

我是Java的新手,并且当时在Java中创建了一个对象数组。

我有一个例如A级 -

A[] arr = new A[4];

但这只是为A而不是4个对象创建指针(引用)。它是否正确?我看到当我尝试访问创建的对象中的函数/变量时,我得到一个空指针异常。为了能够操纵/访问我必须这样做的对象 -

A[] arr = new A[4];for( int i=0; i<4; i++ )
    arr[i] = new A();

这是正确的还是我做错了什么?如果这是正确的,那真的很奇怪。

编辑:我发现这很奇怪,因为在C ++中你只是说新的A [4]并且它创建了四个对象。


呼啦一阵风
浏览 1144回答 3
3回答

婷婷同学_

这是对的。A[]&nbsp;a&nbsp;=&nbsp;new&nbsp;A[4];创建4个A引用,类似于这样做A&nbsp;a1;A&nbsp;a2;A&nbsp;a3;A&nbsp;a4;现在你不能在不分配a1的情况下执行a1.someMethod()a1&nbsp;=&nbsp;new&nbsp;A();同样,您需要使用阵列a[0]&nbsp;=&nbsp;new&nbsp;A();在使用它之前。

jeck猫

这是对的。你也可以这样做:A[]&nbsp;a&nbsp;=&nbsp;new&nbsp;A[]&nbsp;{&nbsp;new&nbsp;A("args"),&nbsp;new&nbsp;A("other&nbsp;args"),&nbsp;..&nbsp;};此语法还可用于在任何位置创建和初始化数组,例如在方法参数中:someMethod(&nbsp;new&nbsp;A[]&nbsp;{&nbsp;new&nbsp;A("args"),&nbsp;new&nbsp;A("other&nbsp;args"),&nbsp;.&nbsp;.&nbsp;}&nbsp;)

慕哥6287543

是的,它只创建引用,将其设置为默认值null。这就是你得到NullPointerException的原因你需要单独创建对象并分配引用。在Java中创建数组有3个步骤 -声明 - 在此步骤中,我们指定数据类型和要创建的数组的维度。但请记住,我们还没有提到尺寸的大小。他们是空的。实例化 - 在此步骤中,我们使用new关键字创建数组或为数组分配内存。在这一步中,我们提到了阵列尺寸的大小。初始化 - 数组始终初始化为数据类型的默认值。但我们可以进行自己的初始化。在Java中声明数组这是我们在Java中声明一维数组的方法 -int[] array;int array[];Oracle建议您使用以前的语法来声明数组。以下是法律声明的其他一些例子 -// One Dimensional Arraysint[] intArray;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Gooddouble[] doubleArray;// One Dimensional Arraysbyte byteArray[];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Ugly!long longArray[];// Two Dimensional Arraysint[][] int2DArray;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Gooddouble[][] double2DArray;// Two Dimensional Arraysbyte[] byte2DArray[];&nbsp; &nbsp; &nbsp; &nbsp;// Uglylong[] long2DArray[];这些是非法声明的一些例子 -int[5] intArray;&nbsp; &nbsp; &nbsp; &nbsp;// Don't mention size!double{} doubleArray;&nbsp; // Square Brackets please!实例化这就是我们“实例化”或为数组分配内存的方法 -int[] array = new int[5];当JVM遇到new关键字时,它理解它必须为某些东西分配内存。通过指定int[5],我们意味着我们需要一个int大小为5 的s 数组。因此,JVM创建内存并将新分配的内存的引用分配给类型为“引用”的类型int[]初始化使用循环 - 使用for循环初始化数组元素是获取数组的最常用方法。如果您要自己分配默认值,则无需运行for循环,因为JVM会为您执行此操作。一体..! - 我们可以一次性声明,实例化和初始化我们的数组。这是语法 -int[] arr = {1, 2, 3, 4, 5};在这里,我们没有提到大小,因为JVM可以看到我们给出了5个值。因此,在我们实例化之前,引用保持为null。我希望我的回答能帮助你......!:)源 -&nbsp;Java中的数组
随时随地看视频慕课网APP

相关分类

Java
我要回答