一、数组
1.概念:数组是相同数据类型元素的集合。
数组内部可以划分为多个空间,且这些空间是连续的,一旦空间数量确定,就不能更改。数组是一个非常重要的数据结构。
2.java中数组本身是引用数据类型,即对象(与前面讲道德基本类型与区别)。但是数组可以存储基本数据类型, 也可以存储引用数据类型,取决于声明数组时,可以存储的数据类型。
二、数组的创建
1.数组的声明的两种方式:
• 数据类型 [] 数组名字 例如:int [] a;
• 数据类型 数组的名字 [] 例如:int a [];
注意: 在Java语言中两种声明方法没有任何区别,但是建议大家用第一种, 避免混淆a的数据类型。
//int x,y,z;
int a,d[ ];//a是整数,d是数组
int [ ] b,c;//b,c都表示数组
2.数组创建的不同方法:(必须指定长度)
①.声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
int[] ary0 = new int[10];
②.声明数组并分配内存,同时将其初始化
int[] ary1 = new int[]{1, 2, 3, 4, 5};
③.与前一种方式相同,仅仅只是语法相对简略
int[] ary2 = {1, 2, 3, 4, 5};
3.从另一个角度,数组创建可以分为动态和静态两种
• 动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char[] chAry = new char[10];
• 静态创建数组,在创建的时候,即为每个元素赋初值
int[] ary1 = new int[]{1, 2, 3, 4, 5};
三、数组的访问与迭代
1.数组元素访问:数组名字[索引] 例如:a[0],a[1];
数组在创建之初,会给每个空间分配编号(索引/下标)
通过编号可以对某个空间进行访问。
索引(编号)特点:
整型(int)
从0开始
最大的索引 数组长度-1
//Arrays.toString(a)将数组中的元素拼接为一个字符串表示
//出现了运行时异常 数组索引越界异常(异常类型)
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:5(异常原因)
at day1.Demo2.main(Demo2.java:26)(界常位置)
2.数组迭代的两种方式:
第一种:
for循环
int[] a = {1,2,3,4,5};
for(int i = 0;i <a.length;i++){
System.out.println(a[i]);
}
第二种:
增强for循环
a:需要遍历的数组
int t:声明一个变量
每循环一次,从数组中取出一个元素,赋给变量t,进入到循环体,直到数组中的元素遍历完成。
int [] b1 = new int []{1,2,3,4,5,6,7};
for(数组元素的类型 临时变量名字 :数组的名字){
System.out.println(临时变量名字 );
}
例如:
for(int t :a){
System.out.println(t)};
四、数组排序
1.冒泡排序:每一次取出相邻的两个元素进行表,把较大的值向后移动。
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
public static void main(String[] args){
int[] a = {5,4,3,2,1};
for(int i =0;i<a.length-1,i++){//控制循环次数
for(int j = 0;j <a.length-1-i;j++){//相邻元素比较
if(a[j]>a[j+1]){
int t =a[j];
a[j]=a[j+1];
a[j+1] = t;
}
}
}
System.out.println(Arrays.toString(a));
}
2.选择排序:假设第一个元素最大值,与之后的每一个位置上的元素进行比较,满足条件交换位置。
int[] a = {5,4,3,2,1};
//i=0
for(int i = 0;i<a.lengeth-1;i++){
for(int j =i+1;j<a.length;j++){
if(a[i]>a[j]){
int t =a[i];
a[i]=a[j];
a[j]=t;
}
}
}
System.out.println(Arrays.toString(a));
}
}
Debug调试
1.设置断点,开始调试程序的位置
2.启动时使用debug模式运行程序
3.调试按键
五、二维数组
1.定义:数组的数组,二维数组的每一个元素是一个一维数
组。
2.声明语法:
int [][] a;
3.数组创建:
int[][]x = new int[][]{{101,80,50,60},{102,80,70,60},{103,40,70,60}};
//二维数组遍历
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();
}
}
}