java 静态数组 动态数组_Java – 静态和动态数组初始化

是否真的在运行时初始化的每个数组都是动态的

在编译期间初始化的每个数组都是静态的?

例如:

int array[];

public main() {

array = new int[100];

}

编译器知道数组有多少元素,因此它可以在编译期间启动它?或者我需要给每个int一个值,使它变为静态?

像这样:

int array[3] { 1, 2, 3};

并且可以定义一个数组在main()函数之外应该有多少个元素? (没有给每个int一个值)这样:

int array[100];

public main() {

}

我正在编写一个小游戏,它必须运行得非常快.我读动态数组需要更长的时间来处理,所以我想尝试使用静态数组,但我不确定数组何时变为静态或动态.

我在许多不同的教程中搜索,但我找不到答案.

谢谢阅读.

解决方法:

动态和静态分配的区别是不明确的(它在某种程度上取决于语言的含义).在最一般意义上,静态分配意味着某些大小已经预先确定,可能是在编译时.

在java中,任何对象(包括数组)总是在运行时分配.这并不一定意味着它的动态,它可能仍然是静态的,因为它无法在运行时更改.例:

public class Test1 {

public final int[] array1 = new int[10];

public int[] array2 = new int[20];

public void setArray2Size(int size) {

array2 = new int[size];

}

}

arrayFixed的大小为10,并且在运行时无法更改.请注意最终的关键字.这使您只能分配“array1”成员一次.因此,您无法为此成员分配不同的数组.

现在array2不是final,所以你可以在任何时候给它分配一个不同的数组,比如setArray2Size() – 方法.如果在初始赋值之后没有赋值,则array2在它无法更改的意义上仍然是静态的(因为没有代码可以这样做),尽管通过声明更改它是允许的.

一旦创建了数组的具体实例就无法调整大小(没有语言元素来表示在java中调整数组的大小).初学者有点难以理解,但像array2这样的变量不是数组.它是对数组的引用.但是,您可以将array2保存的引用替换为对另一个数组的引用,如setArray2Size() – 方法中的array2所示.

标签:java,arrays,initialization,static,dynamic

来源: https://codeday.me/bug/20190725/1534788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值