目录
一、数组的概念
数组:它是存储数据长度固定的容器;是集合中最原始简单的一种。
(集合就是 将一组数据集中放置在一起,可以对数据进行批量操作 )
二、数组的特点
-
只能存放同一数据类型的数据。
-
所有数组数据(元素)存放在连续的内存空间中。
-
数组的大小(长度),一旦确定,不能更改。
三、数组的声明语法
1.指定内容(确定具体数据)
变量的声明 数据类型 变量名 = 变量值;
数组的声明 数据类型[] 数组名 = {数据1,数据2,数据3,---,数据n};
例如:
声明一个存放整型数据的数组 数据有 10、20、30、40、80、100
int[] array = {10,20,30,40,80,100}
2.指定长度(不确定有哪些数据,只知道长度)
数组的声明 数据类型[] 数组名 = new 数据类型[数组长度];
例如:
声明一个存放双精度浮点数的数组 数组存放数据个数为8
double[] array = new double[8];
四、访问数组元素
1.语法
数组名[下标(数字)]
下标(索引):以0开始;最大下标为(数组长度-1)
PS: 在使用访问数组元素的语法时,要注意,不要超出数组所分配的空间,否则就回出现 异常(Exception) ArrayIndexOutOfBoundsException(数组下标越界异常) 为了避免数组访问越界情况的发生,Java中每一个数组都有一个length属性来表示数组的长度 语法 数组名.length
五、数据类型
数组是引用数据类型
区分:基本数据类型数组 和 引用数据类型数组
基本数据类型数组:指数组内存放的数据为 基本数据类型;
引用数据类型数组:指数组内存放的数据为 引用数据类型;
六、小练习
1.1 查询数组所有元素
1.1
//如何可以查看这个数组它的所有元素信息?(利用循环 遍历数组元素)
int[] number = {10,20,30,30,40,50};
for(int i = 0;i < number.length;i++){// 在此处 充当数组下标
System.out.println(number [i]);
}
1.2 反序输出数组
1.2
//自定义一个整形数组,将其元素反序遍历 012345 543210
// 访问数组元素时,最大下标为数组长度 - 1; 超出就回有异常出现
int[] ary = {0,1,2,3,4,5};
for(int i = ary.length - 1;i >= 0;i--){
System.out.print(ary[i] + " ");
}
1.3 备份数组数据
1.3数组的拷贝
int[] ary = {10,20,30,999,40,50};
int[] newAry = new int[ary.length]; // 新建一个数组,且 数组长度等于老数组长度
for(int i = 0;i < ary.length;i++){ // 将老数组元素 一一 赋值给 新数组
newAry[i] = ary[i];
}
for(int i = 0;i < newAry.length;i++){ // 利用循环 查询新数组数据
System.out.print(newAry[i] + " ");
}
1.4 增加数组元素
1.4 【数组元素的增加】
//输入一个数,将这个数放到到 数组下标为 2的位置
int[] ary = {10,20,30,30,40,50};
// 输入一个数,将这个数放到到 ary下标为 2的位置
// 增加后 数组为 {10,20,num,30,30,40,50};
// 创建一个数组长度 比老数组大1的新数组
int[] addAry = new int[ary.length + 1];
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数");
int num = input.nextInt();
// 将输入的num 数据 放入新数组下标为2的位置,
// 然后将原本老数组的数据依照对应位置赋值
// 遍历老数组
for(int i = 0;i < addAry.length;i++){ // i表示新数组的下标
if(i < 2){
addAry[i] = ary[i];
}else if(i == 2){
addAry[i] = num;
}else {
// 此时i大于等于3的
addAry[i] = ary[i - 1];
}
}
for(int i = 0;i < addAry.length;i++){
System.out.print(addAry[i] + " ");
}
1.5 删除数组元素
1.5【数组元素的删除】
int[] ary = {10,20,30,30,40,50};
// 删除 数组 ary中 下标为3的元素,删除后 数组长度减一 {10,20,30,40,50}
// 创建一个数组长度 比 老数组 少一的数组
int[] delAry = new int[ary.length - 1];
for(int i = 0;i < delAry.length;i++){
if(i < 3){
delAry[i] = ary[i];
}else if(i >= 3){// i > 3时 i=3的情况 就被我忽略了
delAry[i] = ary[i + 1];
}
}
// PS: 对数组进行操作时,一定注意 边界情况
for(int i = 0;i < delAry.length;i++){
System.out.print(delAry[i] + " ");
}
1.6 数组排序
1.6【数组的排序(冒泡排序)】
// 有一个乱序数组,要将数组中的元素 按照数据的从小到大进行排序
int[] array = {20,42,3,412,90,7,434,23,11,-4,5,-1};
// 比较轮数 数组长度减一
// 每次比较次数,随着比较轮数的递增而递减
for(int i = 0;i < array.length - 1;i++){ // 0 - 4
for(int j = 0;j < array.length - 1 -i;j++){
// 做比较
if(array[j] > array[j + 1]){// 交换两数位置
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.println("排序后");
for(int i = 0;i < array.length;i++){
System.out.print(array[i] + " ");
}
1.7 字符串 转换为 字符数组
1.7 字符串 转换为 字符数组
字符串.toCharArray()
String str = "好好学习天天向上";
char[] chars = str.toCharArray();
System.out.println(chars[0]);
for(int i = 0;i < chars.length;i++){
System.out.print(chars[i] + " ");
}
1.8 生产随机数
1.8 生成随机数
Math.random(); 可以生成 0-1之间的浮点数
0.000000000000001-0.9999999999999999 0.0000001-9.99999999
借助它生成 某个整数范围随机数
for(int i = 0;i <= 20;i++){
// 强转语法 (目标数据类型)数据
System.out.println( (int)(Math.random() * 10) + 11 );
}
// 生成 整型随机数规律 a-b (int)(Math.random() * (b -a + 1)+ a )
// 生成0-10之间的整型随机数 (int)(Math.random() * 11)
// 生成11-20 之间整型随机数 11 + 0-9 (int)(Math.random() * 10+ 11)