数组是一种用于存储多个相同类型数据的存储模型
通常数组的定义格式有两种:
第一种:数据类型[] 变量名 例如 int [ ] arr (一般使用这一种)
第二种:数据类型 变量名[ ] 例如 int arr[ ]
数组初始化
数组的初始化分为静态初始化和动态初始化。
静态初始化就是只指定内容
其格式为:数据类型[ ] 变量名 =new 变量名[ ] {值1,值2,值3.....};
其简化格式为:数据类型[ ] 变量名 {值1,值2,值3.....};
int[] arr = {1,2,3,4,5,6};//静态初始化定义数组
动态初始化是指定长度
其格式为:数据类型[ ] 变量名 = new 数据类型[长度];
数据类型就是表示该数组中元素的数据类型,[]表示是一个数组,变量名就是数组名,new是为数组申请内存空间,长度就是数组中元素的个数。
int[] a = new int[6];//动态初始化定义数组
数组元素的访问
1.直接通过数组名进行访问,如下所示
public class ArrayDemo1 //类名
{ //java application程序主入口函数,带命令行参数
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};//静态初始化定义数组
System.out.println(arr);//输出数组名得到数组内存空间的地址值--->[I@1b6d3586
}
}
2.通过索引对数组内部保存的元素进行访问,如下所示:
public class ArrayDemo1 //类名
{ //java application程序主入口函数,带命令行参数
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};//静态初始化定义数组
System.out.println(arr[2]);//输出数组中索引为2的元素--->3
}
}
索引是数组中数据的编号,是从0开始的,需要注意的是索引最大为数组长度-1,如果超过了就会造成索引越界,从而报错。
给数组元素赋值,如下所示:
public class ArrayDemo2 //类名
{ //java application程序主入口函数,带命令行参数
public static void main(String[] args) {
int[] arr = new int[4];//动态初始化定义数组
arr[0]=2;//给数组索引为0的元素赋值
arr[1]=6;//给数组索引为1的元素赋值
arr[2]=9;//给数组索引为2的元素赋值
arr[3]=5;//给数组索引为3的元素赋值
System.out.println(arr[0]);//输出数组索引为0的元素--->2
System.out.println(arr[1]);//输出数组索引为1的元素--->6
System.out.println(arr[2]);//输出数组索引为2的元素--->9
System.out.println(arr[3]);//输出数组索引为3的元素--->5
}
}
使用for循环对上面程序的数组元素进行遍历,如下所示:
public class ArrayDemo2 //类名
{ //java application程序主入口函数,带命令行参数
public static void main(String[] args) {
int[] arr = new int[4];//动态初始化定义数组
arr[0]=2;//给数组索引为0的元素赋值
arr[1]=6;//给数组索引为1的元素赋值
arr[2]=9;//给数组索引为2的元素赋值
arr[3]=5;//给数组索引为3的元素赋值
for(int i=0;i<arr.length;i++)//arr.length是数组的长度
{
System.out.println("arr["+i+"]的值为"+arr[i]);//每次循环输出一个数组元素
}
}
}
数组冒泡排序
如下所示,将数组中的10个元素先按照从小到大的顺序排序,然后输出。
//把数组中已知得10个数组由小到大排序后输出
public class Challenge2 {
public static void main(String[] args) {
int[] arr = {5, 3, 9, 10, 4, 15, 18, 7, 2, 1};//静态初始化定义数组
int p;//定义遍历p,用于存放两数组元素中较大的元素
for (int i = 0; i < arr.length; i++)
/*循环完一次之后最小的那个数会放到第一个位置,然后下一轮循环后,
第二小的元素会到第二个位置,依此类推,最后整个for循环执行完毕,数组中的元素就排好了序。
*/
{
for (int j = arr.length - 1; j > i; j--)
/*
从最后一个数组元素开始与前一个进行比较,循环一次,较小的那个元素就到倒数第二个位置,
然后再进行循环,整个for循环执行完毕,最小的元素会到第一个位置
*/
{
if (arr[j] < arr[j - 1]) //如果前一位数比后一位数大,就要把两个数的位置调换
{
p = arr[j - 1];//将前一位数的值赋值给p
arr[j - 1] = arr[j];//将后一位数的值赋给前一位
arr[j] = p;//将p的值也就是前一位数的值赋给后一位
}
}
}
//遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);//输出数组元素
}
}
}
输出结果: