首页 > 编程知识 正文

java数组初始化方法,java数组怎么初始化

时间:2023-05-05 15:57:30 阅读:188985 作者:3658

java数组在编程中非常常见,一般我们使用数组有如下几种方式:

Object [] obj = new Object[10];Object [] obj = {};Object [] obj = new Object[]{};

大部分声明数组就是这三种方式,还有一些特殊的创建方式,比如反射,反序列化都是可以产生数组对象的。

数组一旦初始化长度之后,是无法更改长度的,也就是说,数组是不可改变长度的。
第1种方式是声明加初始化数组并且定义数组长度
第2种方式是声明加初始化,等同于第三种方式,也就是第三种方式的缩写版,并且,数组的长度为0
第3种方式是声明加初始化,等同于第二种方式,并且数组的长度为0

内存中的分配

第1种:
在一个方法中定义一个数组,也就是局部变量,包含两块空间,一个是变量名字,存放到栈内存中,还有一个是数组实例,也就是new Object[10],或者{},或者new Object[]{}
数组实例是存放在堆内存中。栈内存中的变量名字只是存放了指向堆内存中数组实例的地址。

第2种:
在一个类中定义一个数组,也就是成员变量(也叫全局变量),这种数组定义的时候并不会在内存中创建出来(加了static的成员变量除外),只有当产生了该类的实例,那么成员变量才会在堆内存中创建出来,也就是说类中的数组变量名是存放在该对象的堆空间中的,存放的也是地址,指向数组实例的堆空间地址。

java中的jvm虚拟机内存分配原理是很有用的,可以极大的加深对java语言的理解程度。

总结:数组类在java中是没有源码的,这是java从C语言里传承过来的,java是使用C语言开发出来的。所以数组在java中的表现形式是以一种引用类型来定义。在java中,所有的引用类型实例的创建都是在堆内存中创建。而且数据实例一旦创建就会有值,基本类型数组的默认值是各种基本类型的默认值,引用类型数组的默认值是null。
数组创建如果只写了声明变量,省略了new这种写法,例如第2种方式的写法,那么编译器编译成class文件的时候会自动加上new 声明的类型 。
总之,省略了new关键字的写法,就是声明了什么类型的数组就会创建什么类型的实例数组。

对比java代码与class代码

java代码:

String [] str = {}; String [] str1 = {"qqq","www","rrr","ee","f"}; String [] str2 = new String [] {"aa","fds","fds"}; String [] str3 = new String[]{};

class代码:

String[] str = new String[0]; String[] str1 = new String[]{"qqq", "www", "rrr", "ee", "f"}; String[] str2 = new String[]{"aa", "fds", "fds"}; String[] str3 = new String[0];

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。