JAVA基础4-数组

数组

定义:是多个相同类型按一定顺序排列的集合,并使用一个名字命名,通过索引进行管理

概述

  1. 组成
    • 数组名
    • 长度
    • 下标
    • 元素
  2. 数组本身是引用数据类型,数组中的元素可以是任意数据类型
  3. 创建数组元素会在内存中开辟一整块连续空间,而数组名是这连续空间的首地址
  4. 数组长度一旦确定就不能更改
  5. 数据分类:一维数组,二维数组…

一维数组使用

  1. 一维数组声明和初始化
public class test1 {
    
    
    public static void main(String[] args) {
    
    
        int[] arr;//声明
        //静态初始化:数组初始化和数组元素赋值操作同时进行
        arr =new int[]{
    
    1,2,10,};
        //动态初始化:数组初始化和数组元素赋值操作分开进行
        String[] names=new String[5];
        names[0]="jack";
        names[1]="rose";
    }

}
  1. 调用数组指定位置元素(通过角标调用)
public class arryTest1 {
    
    
    public static void main(String[] args) {
    
    
        int[] nums;
        nums=new int[]{
    
    1,2,5};
        String[] names=new String[4];
        names[0]="jack";
        names[1]="rose";
        names[2]="mack";
        names[3]="tom";
        System.out.println(nums[2]);
        //5
    }
}
  1. 获取数组长度
public class arryTest1 {
    
    
    public static void main(String[] args) {
    
    
        int[] nums;
        nums=new int[]{
    
    1,2,5};
        String[] names=new String[4];
        names[0]="jack";
        names[1]="rose";
        names[2]="mack";
        names[3]="tom";
        System.out.println(nums.length);
        //3
        System.out.println(names.length);
        //4
    }
}
  1. 遍历数组
public class arryTest1 {
    
    
    public static void main(String[] args) {
    
    
        int[] nums;
        nums=new int[]{
    
    1,2,5};
        String[] names=new String[4];
        names[0]="jack";
        names[1]="rose";
        names[2]="mack";
        names[3]="tom";
		for (int i=0;i< names.length;i++){
    
    
            System.out.println(names[i]);
        }
        //jack
        //rose
        //mack
        //tom
    }
}
  1. 数组元素默认初始化
  • 数组元素是整形默认初始化是0
  • 数组元素是浮点值默认初始化是0.0
  • 数组元素是char型默认初始化是0或‘\u0000’
  • 数组元素是boolean默认初始化是false
  • 数组元素是引用数据类型默认初始化是null
  1. 数组内存解析
  • 定义的变量a保存的栈区域
  • new的String1保存在堆区域
  • 堆区域String1第一个空间通常16进制的数,把它赋值给变量a
  • 使用变量a时,会通过首空间地址去寻找值
  • 重新new一个String2时,会把String2首空间地址重新赋给变量a,上一个String1会在某个时间被处理掉
  1. 示例:
public class arryTest2 {
    
    
    public static void main(String[] args) {
    
    
        int[] arr=new int[]{
    
    2,5,3,7,3,1};
        int[] index=new int[]{
    
    5,2,5,3,3,5,1,3,4};
        String num="";
        for (int i=0;i<index.length;i++){
    
    
            num += arr[index[i]];
        }
        System.out.println(num);
    }
}
	//131771573
//输入学生成绩,基于第一名计算其他学生等级
import java.util.Scanner;

public class arrytest3 {
    
    
    public static void main(String[] args) {
    
    
        Scanner scan=new Scanner(System.in);
        System.out.println("输入学生人数:");
        int number=scan.nextInt();
        //定义数组长度
        int[] score=new int[number];
        System.out.println("输入" + number + "个学生分数");
        for (int i =0;i<score.length;i++){
    
    
            //数组中添加分数
            score[i]= scan.nextInt();
        }
        //获取最大值
        int maxScore=0;
        for (int i=0;i<score.length;i++){
    
    
            if(maxScore<score[i]){
    
    
                maxScore=score[i];
            }
        }
        //计算每个分数的等级
        for (int i=0;i<score.length;i++){
    
    
            if(maxScore - score[i]<=10){
    
    
                System.out.println("A");
            }else if(maxScore - score[i]<=20){
    
    
                System.out.println("B");
            }else if(maxScore - score[i]<=30){
    
    
                System.out.println("C");
            }else {
    
    
                System.out.println("D");
            }
        }
    }
}
	//34 78 90 45 66
	//D  B  A  D  C

二维数组使用

  1. 二维数组就是一维数组的元素是一维数组
  2. 二维数组的声明和初始化
public class arrysTest1 {
    
    
    public static void main(String[] args) {
    
    
        //静态初始化
        int[][] arr1=new int[][]{
    
    {
    
    1,5,8},{
    
    1,5},{
    
    4,6}};
        //动态初始化1
        String[][] arr2=new String[3][2];
        //动态初始化2
        String[][] arr3=new String[3][];//第二个也可先不赋值,表示不确定
        String[] arr4[]=new String[3][];//也可以这么写
    }
}
  1. 调用数组指定位置的元素
public class arrysTest1 {
    
    
    public static void main(String[] args) {
    
    
        //静态初始化
        int[][] arr1=new int[][]{
    
    {
    
    1,5,8},{
    
    1,5},{
    
    4,6}};
        //动态初始化1
        String[][] arr2=new String[3][2];
        //动态初始化2
        String[][] arr3=new String[3][];
        System.out.println(arr1[0][2]);
        //8
    }
}
  1. 获取数组长度
public class arrysTest1 {
    
    
    public static void main(String[] args) {
    
    
        //静态初始化
        int[][] arr1=new int[][]{
    
    {
    
    1,5,8},{
    
    1,5},{
    
    4,6}};
        //动态初始化1
        String[][] arr2=new String[3][2];
        //动态初始化2
        String[][] arr3=new String[3][];
        System.out.println(arr1.length);
        //3
        System.out.println(arr1[0].length);
        //3
        System.out.println(arr1[1].length);
        //3
    }
}
  1. 遍历二维数组
public class arrysTest1 {
    
    
    public static void main(String[] args) {
    
    
        //静态初始化
        int[][] arr1=new int[][]{
    
    {
    
    1,5,8},{
    
    1,5},{
    
    4,6}};
        //动态初始化1
        String[][] arr2=new String[3][2];
        //动态初始化2
        String[][] arr3=new String[3][];
        for (int i=0;i<arr1.length;i++){
    
    
            for (int j=0;j<arr1[i].length;j++){
    
    
                System.out.print(arr1[i][j]+" ");
                //1 5 8 1 5 4 6 
            }
        }

    }
}
  1. 数组元素默认初始化值
  • int arr[][]=new int[4][3];外层默认地址,内层默认一维数组一致
  • int arr[][]=new int[4][];外层默认null,内层不能调用否则报错
  1. 内存解析
    请添加图片描述

Arrays工具类

语法 含义
boolean equals(int[] a,int[] b) 判断两个数组是否相等
String toString(int[] a) 输出数组信息
void fill(int[] a,int val) 将指定值填充到数组中
void sort(int[] a) 对数组进行排序
int binarySearch(int[] a,int key) 对排序后的数组进行二分法查找

示例:

import java.util.Arrays;

public class test11 {
    
    
    public static void main(String[] args) {
    
    
        int[] arr1=new int[]{
    
    1,2,3,4};
        int[] arr2=new int[]{
    
    1,3,2,4};
        
        //判断相等
        boolean isEquals= Arrays.equals(arr1,arr2);
        System.out.println(isEquals);
        //false
        
        //显示数组元素信息
        System.out.println(Arrays.toString(arr2));
        //[1, 3, 2, 4]
        
        //数组元素赋值
        Arrays.fill(arr1,10);
        System.out.println(Arrays.toString(arr1));
        //[10, 10, 10, 10]
        
        //数组排序
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));
        //[1, 2, 3, 4]
        
        //二分法查找
        int index=Arrays.binarySearch(arr2,4);
        System.out.println(index);
        //3
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_64925940/article/details/124509396