本文共 3543 字,大约阅读时间需要 11 分钟。
Java笔记——数组
创建时间:2019.11.20
说明:持续更新ing
——————————————————————————— 我 是 分 割 线 ————————————————————————————
数组
- 数组是一组相同类型的变量(元素)的集合。可以用来存放一组相同类型的数据。数组的学习涉及数组的定义、赋值和使用。再扩展一点就是二维数组的应用。数组既是一种重要的数据类型,也是一种重要的数据结构。
数组(array)————一组相同类型的变量(元素)集合
相同的任意类型 (包括基本类型、类类型等)
这组变量被连续地存放在Java堆区的内存空间
数组是一种引用类型,数组名是一个地址的别名
数组需要创建(new),否则不会被分配堆空间
数组名对应的地址单元中存放上述连续堆区空间的首地址
🔺 对程序员而言, 数组总体有三样东西:数组名+数组长度+数组元素
- “声明、创建、初始化、访问”数组
声明数组:
🔺只给数组变量(由数组名描述)分配空间,而不会给数组按要存放的元素的多少来分配空间。
- 有两种形式——>推荐第一种: 数据类型[] 数组名
1 2 3 4 5 | //数据类型[] 数组名 int[] a; //数据类型 数组名[] int a[]; |
——————————————————————————— 我 是 分 割 线 ————————————————————————————
创建数组:用new运算符,同对象的创建。
- 有两种形式——>
1 2 3 4 5 6 | //先声明,后创建 int[] a; //声明存放int型数据的数组a a = new int[10]; //在Java堆区中创建10个int型元素空间(共40个字节) //声明和创建合一 int[] test = new int[12]; |
注意:
🔺声明数组,仅仅创建数组变量
🔺创建数组,才在堆区中分配空间[ ]
中必须是非负整数,否则执行时异常。可以是字面常量、也可以是变量,只要保证其值是非负整数。创建数组之后,各元素的默认初始值是:数值型为0(0.0);字符型’\0’;引用类型null;布尔型false
——————————————————————————— 我 是 分 割 线 ————————————————————————————
初始化数组:在创建好的数组元素空间中存放初始值.否则按默认值初始化。
🔺数组创建时(即new时使用)初始化器语法:{元素值列表}。
1 2 | //声明存放int型数据的数组aMonth并初始化 int[] aMonth = new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12}; |
注意:
使用了初始化器之后不能显式指定长度
即
new int[12]{…}
,不对
1 2 3 4 5 | int[] a; //先声明数组a a = new int[2]{ 1,2}; // Error,不能显式指明长度[2] a = { 1,2}; // Error a = new int[]{ 1,2}; // OK! int[] b = { 1, 2}; // OK!此方式用得最多 |
——————————————————————————— 我 是 分 割 线 ————————————————————————————
访问数组:
🔺数组元素:数组中的每一个变量,也被称为下标变量,索引变量
🔺下标从0开始:用[ ]
运算符访问元素,即 数组名 [ 数组下标 ]
🔺既然是变量,所以数组元素可以作为左值也可以作为右值,比如a[i]++
、b[0]=5;
、a=b[0]+2;
等等。
- 数组长度属性
🔺数组唯一的一个 只读 属性:length 存有数组元素个数值。
🔺*数组名.length
*
- 遍历数组
🔺增强版for语句:foreach语句(JDK5开始提供)
🔺适用于遍历数组、集合元素等形式
1 2 3 | for(元素的数据类型 遍历变量x : 遍历对象obj){ //x是自定义遍历变量名 引用了x的Java语句; //循环体 } |
注意:
- foreach语句是for的简化,任何foreach语句都可以改用for语句,反之不行。
- foreach语句不关注下标。
- 用foreach的遍历变量不能修改元素值。
1 2 3 4 5 6 7 8 9 | public class Demo { public static void main(String[] args) { int[] a = { 1, 3, 4, 5, 6, 8, 10}; /* 循环输出a */ for(int n : a){ // 利用变量n遍历数组a System.out.printf("%4d ", n); // n表示数组a的每一个元素值 } } } |
- 二维数组、多维数组
- Arrays 类
主要功能:
🔺java.util.Arrays类: 数组操作实用类,它提供了一系列静态方法
- equals()方法:比较两个数组长度是否相同和对应索引上的元素值是否相同.
- fill()方法:向数组中填充数据.
- copyOf()方法:复制一个数组的部分元素并生成一个新的数组返回
- sort()方法:若是基本类型则把数组元素按自然顺序升序排列.若是引用类型,其该实现了Comparable接口才能调用sort方法,否则报异常.
- binarySearch()方法:对已排序数组使用二分查找算法查找指定元素.
- asList()方法:返回数组的List对象形式.
- toString()方法:返回包含所有元素信息的字符串
- parallelSort()方法:开启多线程的排序.
- deepEquals()方法:深度比较两个数组是否相同.适于任何深度的多维(嵌套)数组.
- 问:数组可以作为方法的参数或返回值吗?
当然是可以的 。答案来源 m
- 数组作为方法参数
🔺数组作为方法参数传递,传递的参数是数组内存的地址。
1 2 3 4 5 6 7 8 9 10 11 12 | public static void main(String[] args) { int[] arr = { 11, 22, 33, 44, 55}; System.out.println("1位置: " + arr); printArray(arr); // 数组作为方法参数传递,传递的参数是数组内存的地址 } public static void printArray(int[] arr) { System.out.println("2位置: " + arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } 1234567891011 |
- 数组作为方法返回值
🔺数组作为方法的返回值,返回的是数组的内存地址。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public static void main(String[] args) { //调用方法,接收数组的返回值 //接收到的是数组的内存地址 int[] arr = getArray(); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } /* 创建方法,返回值是数组类型 return返回数组的地址 */ public static int[] getArray() { int[] arr = { 1, 3, 5, 7, 9 }; //返回数组的地址,返回到调用者 return arr; } 1234567891011121314151617 |
该博主的延伸阅读: 、、
- 判断: Java中数组可以动态改变长度?
错误。 Java中的数组的定义就是相同类型,固定长度的一组数据,一旦被初始化,长度不可更改。
10.
转载地址:https://melodyjerry.blog.csdn.net/article/details/106617400 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!