java的静态数组和动态数组有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的静态数组和动态数组有啥区别?相关的知识,希望对你有一定的参考价值。
链接: https://pan.baidu.com/s/1E79G006IL4fnyjoRL0v9aw
静态数组,其实在很多的时候,静态数组根本不能满足我们编程的实际需要,比方说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组,动态数组中的各个元素类型也是一致的,不过这种类型已经是用一个非常大的类型来揽括—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的静态数组和动态数组有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章