为了账号安全,请及时绑定邮箱和手机立即绑定

用Java创建对象数组

用Java创建对象数组

呼啦一阵风 2019-08-09 16:22:59
用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]并且它创建了四个对象。
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

这是对的。

A[] a = new A[4];

创建4个A引用,类似于这样做

A a1;A a2;A a3;A a4;

现在你不能在不分配a1的情况下执行a1.someMethod()

a1 = new A();

同样,您需要使用阵列

a[0] = new A();

在使用它之前。


查看完整回答
反对 回复 2019-08-09
?
jeck猫

TA贡献1909条经验 获得超7个赞

这是对的。你也可以这样做:

A[] a = new A[] { new A("args"), new A("other args"), .. };

此语法还可用于在任何位置创建和初始化数组,例如在方法参数中:

someMethod( new A[] { new A("args"), new A("other args"), . . } )


查看完整回答
反对 回复 2019-08-09
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

是的,它只创建引用,将其设置为默认值null。这就是你得到NullPointerException的原因你需要单独创建对象并分配引用。在Java中创建数组有3个步骤 -


声明 - 在此步骤中,我们指定数据类型和要创建的数组的维度。但请记住,我们还没有提到尺寸的大小。他们是空的。


实例化 - 在此步骤中,我们使用new关键字创建数组或为数组分配内存。在这一步中,我们提到了阵列尺寸的大小。


初始化 - 数组始终初始化为数据类型的默认值。但我们可以进行自己的初始化。


在Java中声明数组

这是我们在Java中声明一维数组的方法 -


int[] array;

int array[];

Oracle建议您使用以前的语法来声明数组。以下是法律声明的其他一些例子 -


// One Dimensional Arrays

int[] intArray;             // Good

double[] doubleArray;


// One Dimensional Arrays

byte byteArray[];           // Ugly!

long longArray[];


// Two Dimensional Arrays

int[][] int2DArray;         // Good

double[][] double2DArray;


// Two Dimensional Arrays

byte[] byte2DArray[];       // Ugly

long[] long2DArray[];

这些是非法声明的一些例子 -


int[5] intArray;       // Don't mention size!

double{} doubleArray;  // 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。我希望我的回答能帮助你......!:)

源 - Java中的数组


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 1143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信