java的静态数组和动态数组有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的静态数组和动态数组有啥区别?相关的知识,希望对你有一定的参考价值。

链接: https://pan.baidu.com/s/1E79G006IL4fnyjoRL0v9aw

提取码: d6gp 

静态数组,其实在很多的时候,静态数组根本不能满足我们编程的实际需要,比方说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组,动态数组中的各个元素类型也是一致的,不过这种类型已经是用一个非常大的类型来揽括—t类型。

参考技术A 静态数组根本不能满足我们编程的实际需要,比方说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组,动态数组中的各个元素类型也是一致的。具有容量扩充性,同步性和数据操作效率等特点!本回答被提问者和网友采纳 参考技术B 区别:
1,数组创建时间不同,静态的是一定义出来就创建了,动态的则是定义时不创建,使用时才创建,一定意义上节省了内存空间。
2,使用场景不同,一开始就知道数组长度的使用静态初始化,反之,动态初始化。

Java:对象数组;本地实例和类级别实例有啥区别? [关闭]

【中文标题】Java:对象数组;本地实例和类级别实例有啥区别? [关闭]【英文标题】:Java: Arrays of Objects; what is the difference between local and class-level instances? [closed]Java:对象数组;本地实例和类级别实例有什么区别? [关闭] 【发布时间】:2012-06-07 09:53:11 【问题描述】:

就初始/默认/未初始化值而言... ...是否已初始化数组对象(在类和本地级别)?

在一些 SCJP 笔记中阅读它:

数组元素被赋予其默认值,无论是否 数组被声明为实例或局部变量。

如果声明了数组“对象”,则不会对其进行初始化 本地。

【问题讨论】:

你能解释一下你的问题是什么意思吗? 请查看 John Skeet 在how to ask the perfect question 上的博客文章,了解更多信息可以帮助我们。 已编辑问题,请再次查看 @pop stack:恭喜:您在 JLS 中找到了问题的答案。 【参考方案1】:

声明为字段的数组被初始化为 null,就像每个非原始实例变量一样。声明为局部变量的数组未初始化,与其他所有局部变量一样。

一旦初始化为一个新数组,它们的每个元素都包含 null。

【讨论】:

【参考方案2】:

一个未初始化的对象总是null

Object[] myArray;
//myArray == null

myArray = new Object[1];
//myArray[0] == null

【讨论】:

并非如此。如果它是实例或静态变量,则您的第一个数组被隐式初始化为 null。如果是局部变量,则未初始化。【参考方案3】:

作为引用类型的类成员的初始值为 null。

作为引用类型的局部变量被认为是单元化的,需要明确地分配 null 或其他东西,否则代码将无法编译。

尝试测试这个例子,看看会发生什么:

class Test 
    private Object[] member;

    public void foo() 
        member.toString(); // NullPointerException
        Object[] local;
        local.toString(); // won't compile: The local variable local may not have been initialized
    

对象数组遵循相同的规则,因为它们本身就是引用。

现在,这是数组本身。当谈到数组的实际元素时,无论您在何处声明它们,它们默认为 null:

class Test 
    private Object[] member = new Object[10];

    public void foo() 
        member[0].toString(); // NullPointerException
        Object[] local = new Object[10];
        local[0].toString(); // NullPointerException
    

【讨论】:

【参考方案4】:

1.In JAVA local variable have to intitialized before using it.

2. String s[] = new String[2];
Here s[0] and s[1] both contains NULL value and initialize s[0] and s[1] as:
s[0] = new String();
s[1] = new String();

【讨论】:

以上是关于java的静态数组和动态数组有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

动态分配数组和静态数组的区别

C++中为啥要动态创建对象,有啥好处

python中元组和列表有啥区别

C++ 中的静态数组与动态数组

c中啥是静态初始化和动态初始化,怎么理解静态和动态。

Java动态代理与静态代理的定义与区别??