繁体   English   中英

在java中创建数组时,new运算符会做什么?

[英]What does the new operator do when creating an array in java?

当我们创建一个classtype对象时,new运算符会在运行时分配内存。

myclass obj1 = new myclass();

这里myclass()定义了myclass的构造函数

int arr1[4] = new int[];

new分配内存,但int[]在这里做什么?

新的分配内存,但int []在这里做什么?

int[]部分简单地指定新分配的内存应该具有的类型。

但是,由于数组不能动态增长,所以编写new int[]是没有意义的(即使你在声明中指定了int[4] ),你必须像这样编写它

int arr1[] = new int[4];

或者像这样

int arr1[] = {1, 2, 3, 4};

JLS中的相关部分:

你的代码:

int arr1[4] = new int[];

不会编译。 它应该是:

int arr1[] = new int[4];

在数组名称之前放置[]被认为是一种很好的做法,所以你应该这样做:

int[] arr1 = new int[4];

通常,数组创建为:

type[] arrayName = new type[size];

上面的[size]部分指定要分配的数组的大小。

为什么我们在创建数组时使用new

因为Java中的数组是对象。 上面示例中的数组arrayName的名称不是实际的数组,而只是一个引用。 new运算符在堆上创建数组,并返回对新创建的数组对象的引用,然后将其分配给arrayName

上面的程序使用以下代码行声明anArray:

int[] anArray; //声明一个整数数组

与其他类型的变量的声明一样,数组声明有两个组件:数组的类型和数组的名称。 数组的类型写为type [],其中type是包含元素的数据类型; 方括号是特殊符号,表示此变量包含数组。 数组的大小不是其类型的一部分(这就是括号为空的原因)。 与其他类型的变量一样,声明实际上并不创建数组 - 它只是告诉编译器该变量将包含指定类型的数组。

int[] a=new int[5];
  1. 在上面的数组声明中,int []是数组类型,即整数类型数组
  2. a是数组名称,例如声明变量'a'------> int a; 对于数组int [] a的相同方式,其中[]表示声明数组只有diff是[]

现在来到新的

new是一个运算符这个运算符的功能是什么?

这个新运算符转到堆内存并分配一个数组(由于int [])并在数组类型int中分配5个值(由于int [5])调用引用变量。其中引用变量是arrayname即a。

在堆中创建的任何数组都被赋予引用变量a

                memory diagram
                ---------------------
                |  in heap memory    |
                |                    |
                ||------------------ |
                ||  |   |   |  |  |  |
                |------------------- |
      /          ---------------------
    /
  /   
a/

在上面的示例中,5个位置为int[5] ,引用变量指向数组内存位置

创建对象的实例。 new堆上分配内存。 int arr1[4]=new int[]; 在堆上分配14个字节。

int数组的正确声明如下:

int[] arr = new int[] {1,2,3};  // legal, array of size 3
int[] a = new int[100];  // Declare and allocate, array of size 100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM