关于JAVA中的数组操作

  • 关于数组需要学会什么
  • 定义数组的方式,访问方式以及注意事项
  • 数组的几个注意事项
  • 数组的动态初始化
  • 数组遍历介绍
  • 数组操作
  • 冒泡排序

关于数组需要学会什么
  1. 怎样定义数组存储数据
  2. 怎么操作数组元素
  3. 怎么解决实际问题
  4. 数组内存原理
  5. 数组使用的注意点
定义数组的方式,访问方式以及注意事项
//        数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}
            double[] scores = new double[]{1,2,3,4,5};
            int[] ages = new int[]{11,22,33,44};
            
//简化写法:数据类型[] = 数组名 = { 元素1, 元素2, ... }
            int[] age = {12,13,14};

⚠️
数组变量名中存储的数组是内存中的地址,数组是引用类型。

// 数组的访问
System.out.println(scores[0]);
// 数组的长度
System.out.println(scores.length);

⚠️数组的最大索引怎么表示:

数组名.length - 1 // 前提:元素个数大于0
数组的几个注意事项
  • “数组类型[] 数组名”也可以写成“数据类型 数组名[]”。
  • 什么类型的数组存放什么类型的数据,否则报错。
  • 数组一旦定义出来,程序执行的过程中,长度、类型就固定了。
数组的动态初始化

定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。

double[] scores = new double[3];
        System.out.println(scores[0]); // 0.0
        scores[0] = 1;
        System.out.println(scores[1]); //1.0

元素默认值规则:

数据类型

明细

默认值

基本类型

byte、short、char、int、long

0

基本类型

float、double

0.0

基本类型

boolean

false

引用类型

类、接口、数组、String

null

数组遍历介绍
int[] arr = {12,32,43,54,65,76};
        int sum = 0;
        for(int i = 0 ; i < arr.length; i ++){
            sum += arr[i];
        }
        System.out.println(sum);
数组操作
// 数组元素求最大值
		int[] faceScore = {15, 9000, 10000, 20000, 9300, -5};
        int max = faceScore[0];
        for(int i = 1; i < faceScore.length; i++){
            if (faceScore[i] > max){
                max = faceScore[i];
            }
        }
        System.out.println(max);
package scanner;

import java.util.Random;
import java.util.Scanner;

public class scanner {
    public static void main (String[] args) {
        // 需求:5个1~20之间的随机数,让用户猜测,猜中要提示,还要输出该数据在数组中第一次出现的索引,并打印数组的内容出来
        // 没有猜中继续
        int[] datas = new int[5];
        Random r = new Random();
        for (int i = 0; i < datas.length; i++) {
            datas[i] = r.nextInt(20) + 1;
        }
        Scanner sc = new Scanner(System.in);
        OUT:
        while (true){
            System.out.println("请您输入一个1~20之间的整数进行猜测:");
            int guessData = sc.nextInt();
            for (int i = 0; i < datas.length; i++) {
                if (guessData == datas[i]){
                    System.out.println("您猜中了,这个元素是第" + i + "个元素");
                    break OUT;
                }
            }
            System.out.println("当前猜测的数据,在数组中不存在,请重新猜测!");
        }
        for (int i = 0; i < datas.length; i++) {
            System.out.println(datas[i] + "\t");
        }
    }
}
package scanner;

import java.util.Random;
import java.util.Scanner;

public class scanner {
    public static void main (String[] args) {
        // 目标:键盘录入一组工号,最终要随机输出一组来作为排名
        int[] codes = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个员工的工号");
            int code = sc.nextInt();
            codes[i] = code;
        }
        Random r = new Random();
        for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);
            int temp = codes[index];
            codes[index] = codes[i];
            codes[i] = temp;
        }
        for (int i = 0; i < codes.length; i++) {
            System.out.println(codes[i] + "\t");
        }
    }
}
冒泡排序
package scanner;

import java.util.Random;
import java.util.Scanner;

public class scanner {
    public static void main (String[] args) {
        // 冒泡排序
        int[] arr = {5,4,3,21,1};
        for (int i = 1; i <= arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 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.println(arr[i] + "\t");
        }
    }
}