1. 什么是数组
- 数组就是一种可以存放大量数据类型相同的变量的数据结构,是一种具有相同数据类型的数据集合。
- 数组中的数据必须是同一种数据类型。
2. 数组的基本要素
- 数组名称
- 数组元素
- 元素下标
- 数据类型
3. 如何使用数组
- 声明数组
- 分配内存空间
- 给数组赋值
- 使用数组
public class Main {
public static void main(String[] args) {
//声明数组:数据类型[] 数组名
int[] array1;
String array2[];
//分配内存空间:创建数组必须指定长度,根据长度开辟一串连续的内存空间,长度不能修改
array1 = new int[6];
array2 = new String[7];
//给数组赋值
array1[0] = 50;
array1[1] = 60;
array2[1] = "Hello World";
//使用数组
System.out.println(array1[0]);
}
}
数组中常见的错误
- 数组声明时数据类型不匹配
- 边声明边赋值必须写在同一行
- 数组下标越界
- 。。。。
数组中的常用的操作与方法
Java数组的深入研究
二维数组
public class Main {
public static void main(String[] args) {
//1. 声明二维数组
int[][] array;
//2. 开辟内存空间
array = new int[2][5];
//3. 赋值
array[0][0] = 50;
array[0][1] = 60;
array[0][2] = 70;
array[0][3] = 80;
array[0][4] = 90;
array[1][0] = 150;
array[1][1] = 160;
array[1][2] = 170;
array[1][3] = 180;
array[1][4] = 190;
int[][] array2 = {{1,2,3},{4,5,6}};
int[][] array3 = new int[][] {{1,2,3},{4,5,6}};
System.out.println(array3[1][1]);
}
}
public class Main {
public static void main(String[] args) {
int[][] array = new int[3][6];
int sum = 0;
for(int i=0;i<array.length;i++) {
System.out.println("------ 第"+(i+1)+"层货架 ------");
for(int j=0;j<array[i].length;j++) {
int num = (i+1)*(j+1);
System.out.println("第"+(j+1)+"个格挡的鸡蛋个数:"+num);
sum += num;
}
}
System.out.println("鸡蛋的总数是:"+sum);
}
}
- 求数组中的最大值
public class Test {
public static void main(String[] args) {
int[] array = {73,80,62,93,96,87};
//求最大值
int max = array[0];
for(int i=1;i<array.length;i++) {
if(array[i]>max) {
max = array[i];
}
}
System.out.println("数组中的最大值是"+max);
}
}
- 求数组中的最小值
public class Test {
public static void main(String[] args) {
int[] array = {73,80,62,93,96,87};
//求最小值
int min = array[0];
for(int i=1;i<array.length;i++) {
if(array[i]<min) {
min = array[i];
}
}
System.out.println("数组中的最小值是"+min);
}
}
- 在数组指定位置插入一个数据
public class Test2 {
public static void main(String[] args) {
int[] array = {96,93,87,80,73,62};
System.out.println("添加之前的数组");
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+" ");
}
//将83插入到下标为3的位置
//96,93,87,83,80,73,62
//创建新的数组
int[] array2 = new int[array.length+1];
for(int i=0;i<3;i++) {
array2[i] = array[i];
}
for(int j=4;j<array2.length;j++) {
array2[j] = array[j-1];
}
array2[3] = 83;
System.out.println("");
System.out.println("添加之后的数组");
for(int i=0;i<array2.length;i++) {
System.out.print(array2[i]+" ");
}
}
}
- 数组排序
import java.util.Arrays;
public class Test3 {
public static void main(String[] args) {
int[] array = {73,80,62,93,96,87};
for(int i=0;i<array.length-1;i++) {
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(Arrays.toString(array));
System.out.println(array); //输出的是内存地址
}
}
- 其他方法
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = {73,80,62,93,96,87};
int[] array2 = {73,80,62,93,96,87};
int[] array3 = {66,55,44,33,22};
boolean flag = Arrays.equals(array, array3);
if(flag == true) {
System.out.println("array, array3两个数组相等");
}else {
System.out.println("array, array3两个数组不相等");
}
boolean flag1 = Arrays.equals(array, array2);
if(flag1 == true) {
System.out.println("array, array2两个数组相等");
}else {
System.out.println("array, array2两个数组不相等");
}
System.out.println("输出array数组的内存地址");
System.out.println("输出array数组的存储的内容: " + Arrays.toString(array));
Arrays.sort(array);
System.out.println("输出array数组排序后的内容:" + Arrays.toString(array));
//fill 填充数组
Arrays.fill(array2, 66);
System.out.println("用66覆盖填充array2数组: " + Arrays.toString(array2));
//copyOf 复制数组到另一个数组中
int[] copyArray = Arrays.copyOf(array3, 10);
System.out.println("把数组array3复制到 大小为 10 的copyArray数组中: " + Arrays.toString(copyArray));
//查找某一数值在数组中的下标
int index = Arrays.binarySearch(array, 96);
System.out.println(index);
}
}