Java笔记—数组
发布日期:2021-07-01 02:40:15 浏览次数:4 分类:技术文章

本文共 3543 字,大约阅读时间需要 11 分钟。

Java笔记——数组

创建时间:2019.11.20

说明:持续更新ing

——————————————————————————— 我 是 分 割 线 ————————————————————————————

数组


  1. 数组是一组相同类型的变量(元素)的集合。可以用来存放一组相同类型的数据。数组的学习涉及数组的定义、赋值和使用。再扩展一点就是二维数组的应用。数组既是一种重要的数据类型,也是一种重要的数据结构。

  1. 数组(array)————一组相同类型的变量(元素)集合

    • 相同任意类型 (包括基本类型、类类型等)

    • 这组变量被连续地存放在Java堆区的内存空间

    • 数组是一种引用类型,数组名是一个地址的别名

    • 数组需要创建(new),否则不会被分配空间

    • 数组名对应的地址单元中存放上述连续堆区空间的首地址

      🔺 对程序员而言, 数组总体有三样东西:数组名+数组长度+数组元素


  1. “声明、创建、初始化、访问”数组

声明数组:

🔺只给数组变量(由数组名描述)分配空间,而不会给数组按要存放的元素的多少来分配空间。
  • 有两种形式——>推荐第一种: 数据类型[] 数组名
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];

注意:

  1. 🔺声明数组,仅仅创建数组变量

    🔺创建数组,才在堆区中分配空间

  2. [ ]中必须是非负整数,否则执行时异常。可以是字面常量、也可以是变量,只要保证其值是非负整数

  3. 创建数组之后,各元素的默认初始值是:数值型为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;等等。


  1. 数组长度属性

🔺数组唯一的一个 只读 属性:length 存有数组元素个数值

🔺*数组名.length *


  1. 遍历数组

🔺增强版for语句:foreach语句(JDK5开始提供)

🔺适用于遍历数组、集合元素等形式

1 2 3
for(元素的数据类型 遍历变量x : 遍历对象obj){ //x是自定义遍历变量名     引用了x的Java语句; //循环体 }

注意:

  1. foreach语句是for的简化,任何foreach语句都可以改用for语句,反之不行
  2. foreach语句不关注下标
  3. 用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的每一个元素值 } } }

  1. 二维数组、多维数组

image.png

image.png

image.png

image.png


  1. Arrays 类

主要功能:

🔺java.util.Arrays类: 数组操作实用类,它提供了一系列静态方法

  • equals()方法:比较两个数组长度是否相同和对应索引上的元素值是否相同.
  • fill()方法:向数组中填充数据.
  • copyOf()方法:复制一个数组的部分元素并生成一个新的数组返回
  • sort()方法:若是基本类型则把数组元素按自然顺序升序排列.若是引用类型,其该实现了Comparable接口才能调用sort方法,否则报异常.
  • binarySearch()方法:对已排序数组使用二分查找算法查找指定元素.
  • asList()方法:返回数组的List对象形式.
  • toString()方法:返回包含所有元素信息的字符串
  • parallelSort()方法:开启多线程的排序.
  • deepEquals()方法:深度比较两个数组是否相同.适于任何深度的多维(嵌套)数组.

  1. 问:数组可以作为方法的参数或返回值吗?

当然是可以的 。答案来源 m

  1. 数组作为方法参数

🔺数组作为方法参数传递,传递的参数是数组内存的地址

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. 数组作为方法返回值

🔺数组作为方法的返回值,返回的是数组的内存地址

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

在这里插入图片描述

该博主的延伸阅读: 、、


  1. 判断: Java中数组可以动态改变长度?

错误。 Java中的数组的定义就是相同类型,固定长度的一组数据,一旦被初始化,长度不可更改。


10.

转载地址:https://melodyjerry.blog.csdn.net/article/details/106617400 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java笔记—继承
下一篇:Java笔记—语法

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月12日 11时15分26秒