在《Java数组简介》一节中,我们已经了解了什么是数组、什么是基本数据类型的数组,那么大家是不是迫不及待地想知道一个基本数据类型的数组是什么样子的呢?下面我们就一起来揭开它神秘的面纱吧!

Java数组的声明

基本数据类型的数组声明方式如下:

type var[]

type[] var;

其中:

type 用来标识数组的类型名,主要用来表示数组中元素的类型;

var 用来声明数组的变量名。

其基本的定义方式如下:

int[] scores;

char set[];

需要说明的是,在 Java 语言中声明数组时不能指定其长度,即不指定数组中元素的个数,类似于“ int a[5]; ”这样的定义方式是非法操作。

经过上面的操作,我们就在栈空间开辟了一个空间,存放着局部变量和对象的引用(数组可以看作一个对象,元素都是它的属性),如图 1 所示。

图 1  数组声明后在内存中的位置

Java数组的初始化

在上面我们学会了如何声明一个基本类型的数组,但是它现在还没有存放任何东西,还等着初始化,给它填充内容。现在就让我们一起来初始化它吧!

动态初始化

动态初始化指的是数组声明,且为数组元素分配空间与赋值的操作分开进行。初始化的时候使用关键字new。创建方式如下面的代码片段所示:

public class Test {

public static void main(String[] args) {

int[] scores; // 声明数组

scores = new int[3]; // 分配空间

scores[0] = 80; // 为元素赋值

scores[1] = 99;

scores[2] = 88;

}

}

声明数组的时候在栈空间开辟了一块区域,用于存储引用值,那么当我们使用关键字 new 为数组分配元素空间的时候发生了什么事呢?其实当我们使用关键字 new 之后,Java 虚拟机在内存中的堆空间开辟了一块区域,用于存放数组中的元素,声明数组的引用就指向这个堆空间,如图 2 所示。

图 2  数组初始化后的内存示意图

静态初始化

静态初始化是在定义数组时常用的初始化方式,即在定义数组的同时,就为数组元素分配空间并赋值。一般包含两种方式:声明之后初始化和声明的同时完成初始化。下面介绍如何完成这两种初始化方式。

1)声明之后初始化

public class Test {

public static void main(String[] args) {

int[] scores; // 声明数组

scores = new int[] { 80, 99, 88 }; // 分配空间并赋值

scores = {80,99,88}; // 另外一种方式

}

}

2)声明的同时初始化

public class Test {

public static void main(String[] args) {

int[] scores1 = new int[] { 80, 99, 88 }; // 声明数组、分配空间、赋值

int[] scores2 = { 80, 99, 88 }; // 另外一种方式

}

}

这时候的内存分配与动态初始化方式不同的是:动态初始化数组元素的值是默认值(int 就是0),而静态初始化在分配空间的同时,就已经为元素赋好了值,如图 3 所示。

图 3  静态初始化数组的内存示意图

默认初始化

数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也会按照成员变量同样的方式被隐式初始化。

对于基本数据类型而言,默认初始化值各有不同:

byte、short、int、long 类型数组的元素的默认初始值是 0。

float、double 类型数组的元素的默认初始值是 0.0。

char 类型数组的元素的默认初始值是空格。

boolean 类型数组的元素的默认初始值是 false。

对于引用数据类型而言,默认初始化值为 null,如示例 1 所示。

【示例 1】数组的默认初始化

package chapter5;

public class defaultInitClass {

public static void main(String[] args) {

int[] ints = new int[5]; // 定义不同数据类型的数组

double[] doubles = new double[5];

char[] chars = new char[5];

boolean[] booleans = new boolean[5];

String[] strings = new String[5];

for (int i = 0; i < booleans.length; i++) { // 输出数组中的数值

System.out.println("int数组第" + (i + 1) + "个元素值:" + ints[i]);

System.out.println("double数组第" + (i + 1) + "个元素值:" + doubles[i]);

System.out.println("char数组第" + (i + 1) + "个元素值:" + chars[i]);

System.out.println("boolean数组第" + (i + 1) + "个元素值:" + booleans[i]);

System.out.println("String数组第" + (i + 1) + "个元素值:" + strings[i]);

}

}

}

程序编译后,运行结果如下:

int数组第1个元素值:0

double数组第1个元素值:0.0

char数组第1个元素值:

boolean数组第1个元素值:false

String数组第1个元素值:null

int数组第2个元素值:0

double数组第2个元素值:0.0

char数组第2个元素值:

boolean数组第2个元素值:false

String数组第2个元素值:null

int数组第3个元素值:0

double数组第3个元素值:0.0

char数组第3个元素值:

boolean数组第3个元素值:false

String数组第3个元素值:null

int数组第4个元素值:0

double数组第4个元素值:0.0

char数组第4个元素值:

boolean数组第4个元素值:false

String数组第4个元素值:null

int数组第5个元素值:0

double数组第5个元素值:0.0

char数组第5个元素值:

boolean数组第5个元素值:false

String数组第5个元素值:null

通过示例 1 可以看出,在定义了数组之后,系统会给数组进行默认的赋值,如果不对数组的数值进行更改,那么在使用数组时会使用系统的默认数值。

java 数组声明并初始化_Java数组的声明与初始化相关推荐

  1. java类型的数组初始化_java数组初始化详解

    介绍 学习Java的朋友想必对数组并不陌生,它需要使用之前对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使 ...

  2. java数组声明语句是_Java数组的声明和遍历

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...

  3. java数组怎么全部初始化_Java数组初始化,这三种方式有什么区别?

    首先因为数组初始化要使用的时候必须确定数组的长度,也就是说数组的长度是不可变的. 在JAVA中创建数组有两种方式 : (1)静态创建 如 Object[] arr1 = {"a", ...

  4. java 数组 未初始化_Java数组未保持初始化状态

    我在一个数组中有一个数组,并希望用每个循环初始化它. // class variable Tree[][] trees; // in constructor this.trees = new Tree ...

  5. java数组元素是类_Java数组及其常用类

    本文由疯狂软件教育中心整理,更多Java等高新技术,疯狂软件期待与你交流. 一.JAVA中的数组 (1)数组的定义:是有相同类型的.用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列. 数 ...

  6. java 使用vsphere 创建虚拟机‘_Java数组的创建及使用

    数组是具有相同数据类型的一组数据的集合,作为对象允许使用new关键字进行内存分配.首先先来熟悉一下一维数组的创建和使用. 声明一维数组,有下列两种方式: 数组元素类型 数组名字[]; 数组元素类型[] ...

  7. java 数组减除值_java数组操作 - osc_hwpd2zko的个人空间 - OSCHINA - 中文开源技术交流社区...

    什么是数组: 程序 = 算法+数据结构 算法:解决问题的步骤,流程(顺序,分支,循环) 数据结构:将数据按照某种特定的结构来保存 数怎么存 设计良好的,合理的数据结构可以导致好的算法 数组:就是一种最 ...

  8. java数组使用实验报告_JAVA数组与类的定义-java实验报告

    JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...

  9. int数组初始化_Java数组

    ###理解数组 Java的数组要求所有的元素为相同数据类型.既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有元素的类型相同就可以. 一旦数组的初始化完成,数组在内存中占用的空间就被固定下来 ...

最新文章

  1. Github最强算法刷题笔记.pdf
  2. map std 浮点数索引_std:map中的浮点键
  3. 操作像素(一)--存取像素值
  4. Python简单主机批量管理工具
  5. 这是阿里技术专家对 SRE 和稳定性保障的理解
  6. Java面试10大知识点总结宝典助你通关!已拿意向书!
  7. 2059. 转化数字的最小运算数
  8. 通俗易懂,Python的条件和循环语句
  9. javascript-dom-文档对象模型
  10. linux 多核线程 调度,通过轻型线程提高多核设备中的Linux实时性能
  11. android studio:aar文件出现问号,导入不生效解决
  12. 安装django步骤
  13. 拓端tecdat|R语言对混合分布中的不可观测与可观测异质性因子分析
  14. 第九届蓝桥杯b组java
  15. java 单点登录(SSO)
  16. 常用通信光纤是如何分类的
  17. 你拥有的知识比你想象中更有意义和价值
  18. vue Elementui 引入第三方icon(阿里矢量库)
  19. 用友服务器系统,用友软件 用友云服务器
  20. 我打碎了夕阳开头...

热门文章

  1. 如果遇到压力面试应该怎么办?应对压力面试有什么技巧?
  2. 动态规划-类数塔问题(在一个n* m的方格中,m为奇数,放置有n*m个数)
  3. ipqc异常处理流程图_品质异常该怎么处理?照这个流程走!
  4. 计算机夏令营英语自我介绍,保研夏令营英文自我介绍3篇
  5. Consider defining a bean of type ‘cn.itcast.feign.clients.UserClient‘ in your configuration.解决方案
  6. 基于51单片机简易智能家居
  7. mac mysql 移动硬盘_Mac下无法推出硬盘
  8. webpack合成sprite图
  9. 网站服务器如何防御DDOS攻击和CC攻击
  10. Android计步器