数组:存储多个相同数据类型的存储模型
定义:
格式1:
数据类型[] 标识符;
格式2:
数据类型 标识符[];
注意:使用直接使用格式1,因为格式2消耗资源多
动态初始化:指定长度,系统分配默认值
格式:
数据类型[] 标识符=new int[长度];
访问数组:
格式:数组名称;
访问元素:
格式:数组名称[索引];
索引(下标):元素(数组中的数据)排列的方式
特点:
1.0开始
2.连续
3.递增(每次加1)
静态初始化:
初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[] 变量名=new 数据类型[]{数据1,数据2...数据n};
例如: int[] arr=new int[]{1,2,3,4,5};
可以简化为:数据类型[] 变量名={数据1,数据2...数据n};
注意:简化写法中使用的是大括号
例如: int[] arr={1,2,3,4,5,6,7,8,9,10};
操作:
最大值
最小值
排序 (冒泡)
查找 (二分):前提数组中的元素有序,不重复
//举例
//冒泡排序
int[] arr={4,5,8,9,3,2,1,6,12,32,15,16,21,54,46};
int len = arr.length;
for (int i = 0; i < len - 1; i++)//外循环决定冒泡趟数
{
for (int j = 0; j < len - 1 - i; j++)//内循环决定比较次数
{
if (arr[j] > arr[j+1])// 相邻元素两两对比
{
int temp = arr[j+1]; // 元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
//打印数组
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i] + "\t");
System.out.println("\n元素个数为:");
System.out.println(arr.length);
//二分查找
Scanner sc=new Scanner(System.in);
System.out.println();//换行
System.out.println("请输入你要查找的数:");//键盘输入想要查找的数
int x = sc.nextInt();//定义变量接收
//int len = arr.length;
int left = 0, right = arr.length - 1;//left表示数组中第一个元素的下标,
//right表示数组中尾元素的下标
int mid = 0;//mid用来接收中间点元素的下标
while (left <= right)//如果左端点小于右端点的话,说明还没有把数组查找完,循环继续
{
mid = (left + right )/ 2;
if (x < arr[mid])
{
right = mid - 1;
}
else if (x > arr[mid])
{
left = mid + 1;
}
else if(x==arr[mid])
{
System.out.println(mid);
break;
}
}
合并
追加
插入
二维数组:数组中的元素还是数组
动态初始化(手动指定长度,系统默认值):数组中的元素(数组)的长度必须统一
静态初始化(手动指定值,系统默认长度):数组中的元素(数组)的长度可以不统一
//举例
//动态数组的定义
int[] ints = new int[10];//10为数组中元素的个数可修改,ints为变量名可修改
double[] doubles = new double[10];//浮点型数组
String[] strings = new String[10];//字符串类型的数组
//静态数组的定义
//完整写法
int[] arr=new int[]{4,5,8,9,3,2};//系统根据元素个数默认数组的元素有多少个
int[] arr={4,5,8,9,3,2};//省略写法
随机数:类似与Scanner
1.导包
import java.util.Random;
2.创建对象
Random random=new Random();
3.产生随机数
int i=random.nextInt(15);//随机数的范围为0--15,包含0但是不包含15
//即随机范围不包含本身