数组定义及初始化

数组这玩意是一种用于存放数据最常见数据结构。

数组的的概念及注意点

  • 数组要求所有的数组元素具有相同的数据类型,且只能存在一种数据类型,要多专一有多专一。
  • 数据类型既可以是基本类型也可以是引用类型,类里虽然有不同对象,但都属于同一类,也可存于数组。
  • 数组就是一种引用类型。
  • 数组一旦初始化完成,长度就已经确定,所占内存空间也被固定且不能改变,把数据删除也没用。

数组的定义

// 定义数组
char[] initArrays;
char initArrays1[];
  • 两者都可以定义一个数组,但建议使用第一种,也就是type[] arrayname,因为具有较好的可读性,让人一看就知道是个char[]类型的。
  • 仅仅定义了一个引用对象,且并没有指向任何的内存,所以暂时是不能使用的,需要对它初始化

数组的初始化

形式

  • 静态初始化
//静态初始化
char[] initArrays0;
initArrays0 = new char[]{'1','2'};
//char[] initArrays0= {'1','2'};

静态初始化需要人为显式指定每个数组元素的初始值,由系统决定数组长度。

type[] arrayname={element1,element2...};是上面两条语句的对于数组静态初始化的简化语法格式。

注意数组元素由花括号扩起,且由逗号分隔。

  • 动态初始化
//动态初始化
int[] arrays;
arrays = new int[3];
//int[] arrays = new int[3];

动态初始化是人为指定数组长度,由系统为数组元素分配初始值。

同样,动态初始化也有简化格式:type []arrayname = new int[length];

注意方括号内需指定数组的长度。

一旦为数组的每个元素数组分配了内存空间,每个内存空间里存储的内容就是该元素的值,即使内容为空,也是null值,所以不论哪种方式初始化数组,都会使数组元素获得初始值。只不过初始值的获得的方式不一样罢了,一个是人给的,一个是系统给的。

动态分配的初始值

既然动态初始化数组只需要指定每个元素所需的内存空间,由系统为各个元素赋初值,那么,这些初值系统又是如何来赋予的呢。以下是对各个不同类型的数组赋初值的尝试:

int[] arrays = new int[3];
boolean[] arrays1 = new boolean[3];
String[] arrays2 = new String[3];
float[] arrays3 = new float[3];
char[] arrays4 = new char[3];
System.out.println(arrays[0]);//0
System.out.println(arrays1[0]);//false
System.out.println(arrays2[0]);//null
System.out.println(arrays3[0]);//0.0
System.out.println(arrays4[0]);//输出'\u0000'为空
}

再根据查找资料,做出总结:

  • 整数类型(byte,short,int,long)->0;
  • 浮点类型(float,double)->0.0;
  • 字符类型(char) ->'\u0000';
  • 布尔类型(boolean) ->false;
  • 引用类型(类,接口,数组)->null;

通向Java深入:Java数组深入理解

小tips:关于输出'\u0000'为空引发的思考:Java 中各种空(""、\u0000、null)的区别?

Java数组定义及初始化的更多相关文章

  1. Java数组一定要初始化才能使用吗?

    数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.Java语言的数组变量是引用类型的变量,因此具有Java独有的特性. 在正常的Java开发中,使用Ja ...

  2. js二维数组定义和初始化的三种方法总结

    js二维数组定义和初始化的三种方法总结 方法一:直接定义并且初始化,这种遇到数量少的情况可以用var _TheArray = [["0-1","0-2"],[& ...

  3. Java数组声明、初始化

    维数组的声明方式:type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 ...

  4. 200-Java语言基础-Java编程入门-006 | Java数组定义及使用(引用数据类型)

    一.数组概述和定义格式说明 为什么要有数组(容器): 为了存储同种数据类型的多个值 数组概念: 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引 ...

  5. C++中数组定义及初始化

    一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...

  6. C# 、Java数组申明、初始化区别

    一.数组申明   int[] a1 int a2[] C# 支持 不支持 Java 支持 支持 二.数组申明且初始化    int[] a1 = new int[] { 2, 31 } int a1[ ...

  7. Java 数组声明与初始化

    引言 学习了好久的java,每次要写数组的声明和初始化代码,总是理不清.最近又碰到了一次这种情况.这次拿出<Thinking In Java>好好总结一翻. 数组声明 对于数组的声明其实都 ...

  8. Java数组填充和初始化

    Java中,如何填充(一次初始化)数组? 示例 此示例使用Java Util类的Array.fill(arrayname,value)方法和Array.fill(arrayname,starting ...

  9. verilog数组定义及其初始化

    这里的内存模型指的是内存的行为模型.Verilog中提供了两维数组来帮助我们建立内存的行为模型.具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问.这 ...

随机推荐

  1. SpringBoot学习(一)基础篇

    目录 关于Springboot Springboot优势 快速入门 关于SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭 ...

  2. The usage of Markdown---标题

    更新时间:2019.09.14 目录: 1. 序言 2. 标题   2.1 类Atx形式   2.2 类Setext形式 3. 总结 1. 序言   Markdown是一种纯文本的标记语言,只要熟悉M ...

  3. Hadoop环境部署

    1.虚拟机克隆 在VM界面点击查看-自定义-库,然后在左边我的计算机下右键点击安装好的第一个系统,然后管理-克隆,选择克隆系统所在的文件路径即可. 2.三台主机名字修改 root用户下: (1)编辑n ...

  4. 微服务SpringCloud之GateWay路由

    在前面博客学习了网关zuul,今天学下spring官方自带的网关spring cloud gateway.Zuul(1.x) 基于 Servlet,使用阻塞 API,它不支持任何长连接,如 WebSo ...

  5. CentOS 7 的root口令破解两种方法

    破解CentOS7的root口令 方法一: 第一步: 启动时任意键暂停启动 按-e-键进入编辑模式 第二步: 1.将光标移动至蓝框处linux16开头的行,添加内核参数 rd.break 2.按ctr ...

  6. gym102302E_Chi's performance

    题意 给n个二元组(v,p),要求排序使得v从小到大,而且总价值最大,价值定义为相邻两个v值不同的p值之差绝对值之和. 分析 in a row原来是相邻的意思. 对于每个相同v值的块来说,有用的数只有 ...

  7. windows服务参考

    dll文件 aaclient.dll 何时何地都可以访问客户端 accessibilitycpl.dll 轻松访问控制面板 acledit.dll 访问控制列表编辑器 aclui.dll 安全描述符编 ...

  8. python中str.isdigit()用法

    str.isdigit()中只包含数字返回true,包含其它则返回false

  9. 「卡常」我T死了我好桑心,我不会卡常。

    我死了我死了我死了 puts(“Lrefrain==T”)

  10. 详解SpringBoot应用跨域访问解决方案

    一.什么是跨域访问 说到跨域访问,必须先解释一个名词:同源策略.所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同.Host(ip)相同.端口相同的条件,否则访问将被禁止,该访 ...