Java数组定义及初始化
数组定义及初始化
数组这玩意是一种用于存放数据最常见数据结构。
数组的的概念及注意点
- 数组要求所有的数组元素具有相同的数据类型,且只能存在一种数据类型,要多专一有多专一。
- 数据类型既可以是基本类型也可以是引用类型,类里虽然有不同对象,但都属于同一类,也可存于数组。
- 数组就是一种引用类型。
- 数组一旦初始化完成,长度就已经确定,所占内存空间也被固定且不能改变,把数据删除也没用。
数组的定义
// 定义数组
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数组定义及初始化的更多相关文章
- Java数组一定要初始化才能使用吗?
数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.Java语言的数组变量是引用类型的变量,因此具有Java独有的特性. 在正常的Java开发中,使用Ja ...
- js二维数组定义和初始化的三种方法总结
js二维数组定义和初始化的三种方法总结 方法一:直接定义并且初始化,这种遇到数量少的情况可以用var _TheArray = [["0-1","0-2"],[& ...
- Java数组声明、初始化
维数组的声明方式:type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 ...
- 200-Java语言基础-Java编程入门-006 | Java数组定义及使用(引用数据类型)
一.数组概述和定义格式说明 为什么要有数组(容器): 为了存储同种数据类型的多个值 数组概念: 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引 ...
- C++中数组定义及初始化
一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...
- C# 、Java数组申明、初始化区别
一.数组申明 int[] a1 int a2[] C# 支持 不支持 Java 支持 支持 二.数组申明且初始化 int[] a1 = new int[] { 2, 31 } int a1[ ...
- Java 数组声明与初始化
引言 学习了好久的java,每次要写数组的声明和初始化代码,总是理不清.最近又碰到了一次这种情况.这次拿出<Thinking In Java>好好总结一翻. 数组声明 对于数组的声明其实都 ...
- Java数组填充和初始化
Java中,如何填充(一次初始化)数组? 示例 此示例使用Java Util类的Array.fill(arrayname,value)方法和Array.fill(arrayname,starting ...
- verilog数组定义及其初始化
这里的内存模型指的是内存的行为模型.Verilog中提供了两维数组来帮助我们建立内存的行为模型.具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问.这 ...
随机推荐
- Webpack打包css后z-index被重新计算的解决方法
发现问题 最近在使用 Webpack 打包 css 文件时,发现了一个问题,发现打包后的 z-index 值跟源文件 z-index 不一致. 如下图,左侧是源文件,右侧是打包后的文件: 即使加上 ! ...
- vue 2.0 点击添加class,同时删除同级class
<template> <div class="n-header"> <ul class="title-wrapper"> & ...
- Spring Cloud gateway 网关服务 一
之前我们介绍了 zuul网关服务,今天聊聊spring cloud gateway 作为spring cloud的亲儿子网关服务.很多的想法都是参照zuul,为了考虑zuul 迁移到gateway 提 ...
- Flutter学习笔记--Dart基础
前言 Flutter使用Dart语言开发, Dart是面向对象编程语言, 由Google2011年推出, 目前最新版本是2.4.0. 工欲善其事,必先利其器. 为了更好的开发Flutter应用, 我们 ...
- vsftpd超实用技巧详解
简介: vsftpd是"very secure FTP daemon"的缩写,是一个完全免费的.开放源代码的ftp服务器软件. 工作原理: vsftpd使用ftp协议,该协议属于应 ...
- 以Mnist为例从头开始自己建立数据集,搭建resnet34,识别Mnist
写在前面: 本人小白研一,刚开始学习深度学习,将自己的第一个实验过程总结下来,看了很多的大牛的博客,在下面的程序中也参考了很多大牛的博客.在刚开始入门的学习的时候,直接编写程序下载数据集,但是后来觉得 ...
- 在虚拟机上的关于Apache(阿帕奇)(4)基于域名访问网站
这篇随笔是基于域名访问网站,和前后两篇文章基于ip和基于端口一起练习效果更好 首先配置网卡Ip地址与hosts文件 输入命令: vi /etc/hosts/ (每行只能写一条,格式为IP地址+空格 ...
- C语言I博客作业04
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-1/homework/9773 我在这个课程的目标 ...
- [tesseract-ocr]OCR图像识别Ubuntu下环境包安装
问题: ImportError: libSM.so.6: cannot open shared object file: No such file or directory 解决: sudo apt- ...
- CSPS_101
T1 众所周知,只要在任意三个方向上有连续五颗棋子,游戏即结束. T2 又是最短路优化dp啦. T3 神奇的期望dp.还没改出来. 改出来啦!