网站首页 > java教程 正文
数组的定义
数组是相同类型数据的有序集合。
简单理解就是:数组是由若干个相同类型的数据,按照一定的顺序组合而成的。数组中的每一个数据我们可以称为元素,每个元素可以通过索引(下标)来访问(获取)。
数组的一些特性
- java数组要求所有的元素具有相同的数据类型,因此一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。比如你这个数组是int类型的数组,那这个数组就不能存储boolean float string等其他类型的数据,只能存储int类型数据。(这里要注意Object类型的数组,由于Object类是所有类的父类,由于继承关系,所以看上去可以存储不同类型的数据)
- .数组的长度是固定的,一旦数组初始化完成,数组在内存中所占用的空间就被固定下来不可改变。
- java数组既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有的数组元素具有相同的类型即可。(数组也是一种数据类型,它本身是一种引用类型)
- 数组初始化后数组元素必须有值,如果不指定元素的值,系统会自动为每个元素设置默认值。
声明数组
java数组有两种格式来声明数组:
- type [ ] arrayName => 数组的数据类型 [ ] 数组的名称
- type arrayNmae [ ]
数组是一种引用类型的数据,当我们声明一个数组类型的变量(int [] num)时,仅仅表示定义了一个变量(num),数组还未真正创建, 这个变量还未指向任何有效内存,所以这个数组还无法使用,只有对数组进行初始化后才可以使用。
数组的初始化
数组的初始化有两种方式:
- 静态初始化:int [ ] num = new int[ ]{1,2,3} 或 int [ ] num = {1,2,3} 初始化时由程序员显式的指定每个数组元素的初始值,由系统计算数组的长度。
- 动态初始化:int [ ] num = new int[3] 初始化时由程序员指定数组的长度,由系统为数组元素分配默认值。
系统分配的默认值规则如下:
数组元素的类型是基本数据类型中的整数型(byte,short,int,long)则数组元素默认值为 0 ;
数组元素的类型是基本数据类型中的浮点型(float,double)则数组元素默认值为 0.0 ;
数组元素的类型是基本数据类型中的字符型(char)则数组元素默认值为 \u0000 ;
数组元素的类型是基本数据类型中的布尔型(boolean)则数组元素默认值为 false ;
数组元素的类型是引用类型(类,接口,数组)则数组元素默认值为 null ;
注意:不能同时使用静态初始化和动态初始化int [ ] num = new int[3]{1,2,3}
数组遍历
数组的遍历我们可以使用for循环和foreach循环,要注意foreach循环中无法修改数组元素
public static void main(String[] args) { int [] num = {1,2,3,4}; for(int n : num){ //修改数组元素都为6 n = 6; } System.out.println(num[1]);//结果不变仍为2 }
数组的内存分析
对于以下代码:
//声明一个int类型的数组,变量名为intArr1 int [] iArr; //初始化这个数组 iArr= new int[5]; //以上可以简写为int [] iArr= new int[5];
首先执行 int[ ]iArr; 在栈内存中定义了一个空引用也就是变量iArr,此时变量iArr并未指向任何有效内存,所以此时数组无法使用,如图
当执行iArr = new int[5]; 进行动态初始化之后,系统负责为该数组分配内存空间,并分配默认初始化值,然后将这个内存空间的地址赋值给变量iArr
这里要注意,对于基本数据类型的数组,数据存储在对应的数组元素中。而对于引用类型的数组,数组对应的元素存储是数据的引用(地址)
多维数组
java中对于多维数组可以简单理解为数组中嵌套数组。
比如二维数组,我们可以理解为在一维数组中保存的元素类型也是一个数组。
多维数组的声明同样按照数组声明的方式 type [ ] arrayName(或type arrayNmae [ ])
这里的类型type就变成了数组类型,比如int[ ][ ] nums = new int[2][3];这里type=>int[ ]
下期我们手写一个动态数组,改变数组长度固定的缺点
---------本文源于日常学习笔记记录,如有错误欢迎批评指正
猜你喜欢
- 2024-11-16 java开发中经常使用的数组以及使用方法
- 2024-11-16 为什么要使用数组?如何使用数组?(什么是数组为什么要使用数组)
- 2024-11-16 PHP的SPL扩展库(二)对象数组与数组迭代器
- 2024-11-16 ES6 数组解构赋值(es6 结构赋值)
- 2024-11-16 java笔记之数组(java,数组)
- 2024-11-16 PHP笔记 (七)数组(php7 数组)
- 2024-11-16 Scala学习数组和元组了解(scala数组集合的操作)
- 2024-11-16 Java——数组函数(java 数组使用)
- 2024-11-16 VBA一组代码如何搞定赋值给数组arr及回填数据给工作表
- 2024-11-16 学习VBA,报表做到飞 第二章 数组 2.1 数组的声明、赋值及读取
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)