JavaSE数组

数组的基本概念及作用

• 数组是相同数据类型元素的集合。(一个数组中可以存储多个值)

• 数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。(与前面讲到的基本类型有区别的)

• 数组内部可以划分为多个空间,且这些空间是连续,一旦空间数量确定,就不能更改。

•  数组是一个非常重要的数据结构。

• 数组中可以存储基本类型,也可以存储引用类型,取决于声明数组时,可以存储的数据类型。

数组的创建

数组的声明的两种方式:
• 数据类型 [ ] 数组名字 例如:int [ ] a;
• 数据类型 数组的名字 [ ] 例如: int a [ ];
tip: 在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型。

举个栗子:

 //int a,d[ ];   //a是整数,d是数组。
 //int [ ] b,c;  //b,c都表示数组。

数组的创建

 数组创建的三种方式:
● 声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值

int[] ary0 = new int[10];
● 声明数组并分配内存,同时将其初始化
int[] ary1 = new int[]{1, 2, 3, 4, 5};
● 与前一种方式相同,仅仅只是语法相对简略
int[] ary2 = {1, 2, 3, 4, 5};

从另一个角度,数组创建可以分为动态和静态两种:
● 动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char[] chAry = new char[10];
● 静态创建数组,在创建的时候,即为每个元素赋初值
int[] ary1 = new int[]{1, 2, 3, 4, 5};
● 数组的长度:length属性
int [] b1 = new int []{1,2,3,4,5,6,7};
System.out.println(b1.length);  

如下图,这里看到我们定义数组a[],而你直接输出a,它会出现[I@1b6d3586这种字样,这个其实是默认输出是数组在内存中地址。而我们想要输出数组时,就要借用java中给我们提供的Arrays.toString[]方法。这个方法是将数组中的元素拼接位一个字符串表示。

如下图, 这里我们看到出现了  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5(异常原因)
 这就是数组中的一个经典异常,数组索引越界异常。

注意,最大索引是你规定的数组长度-1。这里我们a数组长度是3,所以它的最大索引应该是2。因此,输出a[3]就出现了越界异常。

 最后数组长度其实也是有上限的,因为定义的是int数组所以,长度应该就是int值的最大量。

 

 数组的访问与迭代

数组元素的访问:
• 数组名字[索引] 例如:a[0],a[1];

注意:
• 数组的索引从0开始。
• 索引的数据类型是整型
• 索引最大值和数组长度始终差1

 数组在创建之初,会给每个空间分配编号(索引/下标)
 通过索引可以对某个空间进行访问。

 数组迭代的两种方式:

第一种:for循环

int [ ] b1 = new int [ ]{1,2,3,4,5,6,7};
for(int i =0;i<b1.length;i++){
System.out.println(b1[i]);
}

第二种:强化for循环

int [] b1 = new int []{1,2,3,4,5,6,7};
for(数组元素的类型 临时变量名字 :数组的名字){
System.out.println(临时变量名字 );
}
即:
for(int x:b1){
System.out.println(x);
}

其实两种迭代效果都一样,不过我们常用第二种,强化for循环,这样省事。

数组排序

冒泡排序: 每一次取出相邻的两个元素进行比较,把较大的值向后移动。

举个简单的栗子,他的排序过程可视化一下其实就是这样。

5,4,3,2,1
4 3 2 1 5
3 2 1 4 5
2 1 3 4 5
1 2 3 4 5

详细代码如下图

 其中外循环for (int i = 0; i < a.length-1; i++) 是控制循环次数。

而内循环 for (int j = 0; j <a.length-1-i; j++) 是相邻元素比较。

这里给大家教一个IDEA中的功能,debug测试。

1.设置断点 开始调试程序的位置
2.启动时使用debug模式运行程序
3.调试按键

 如下图,在行数栏旁轻点一下就会出现红点,而这一行就会变成断点,等会debug测试就会从这一行开始往下运行。

 之后我们鼠标右键点击运行代码下面的debug测试。

如下图就会,出现调试器,这里你点击下一步就会一步一步的运行你的代码。从这里你就可以可视化的观看代码运行的过程。

 这是一个IDEA中提供的很方便的工具。

下面我们讲选择排序。

 选择排序:假设第一个元素最大值,与之后的每一个位置上的元素进行比较,满足条件交换位置。

 代码如下

 int[] a = {5,4,3,2,1};
        for (int i = 0; i <a.length-1; i++) {   //这个循环代表第一位数。
            for (int j = i+1; j < a.length; j++) {  //这个循环代表与i做对比的之后的数。
                  if(a[i]>a[j]){
                      int t = a[i];
                      a[i] = a[j];
                      a[j] = t;
                  }
            }
        }
        System.out.println(Arrays.toString(a));

 这里先讲的两种排序中,是数组中比较简单的两种排序,之后还有很多排序,等后续学习了新知识后我们再讲。

二维数组

●二维数组的定义:
数组的数组---二维数组的每一个元素是一个一维数组
例如:
int [][]a = {{1,2,3},{1,2,3},{1,2,3}};

●二维数组的创建:

数组创建
int [][]a = new int[][]{{1,2,3},{1,2,3},{1,2,3}};
int [] [] b = {{1,2,3},{1,2,3},{1,2,3}};
int [][] c = new int[3][5];

int[][] arr = new int[3][5];---定义了一个整型的二维数组 ,这个二维数组有3个一维数组,每一个一维数组包含5个元素.

 二维数组的遍历

for (int i = 0; i <x.length ; i++) {
                        for (int j = 0; j <x[i].length ; j++) {
                            System.out.print(x[i][j]+" ");
                        }
                        System.out.println();
                    }

    }
}

以上就是我们这次学习数组的内容。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值