Java基础知识(数组)

目录

1:一维数组

#1.1:数组的声明

#1.2:数组的赋值

@1:静态赋值

@2:动态赋值

#1.3:一维数组的遍历

@1:第一种方式

@2:第二种方式:for-each

#1.4:一维数组的排序

@1:升序 

@2:降序

!1:第一种

!2:第二种

#1.5:一维数组元素的查找与比较

2:二维数组

@2.1:数组的声明

@2.2:数组的赋值

@2.3:数组的遍历

3:多维数组


数组是具有相同数据类型的一组有序数据的集合。数组中的每个元素都属于同一个数据类型,不同 数据类型的数据不能放在同一个数组中。

在Java数组分为一维数组,二位数组,多维数组。

数组的基本要素:

  • 标识符:数组的名称,用于区分不同的数组
  • 数组元素:向数组中存放的数据
  • 元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
  • 元素类型:数组元素的数据类型 

1:一维数组

数组的访问是通过索引完成的,即数组名称[索引],但是需要注意的是,数组的索引从0开始,所以索引的范围就是0~(数组长度-1)。例如,一个长度为3的数组,可以使用的索引是0,1,2,如果访问超过了数组的索引范围,就会产生错误,在Java中有一种动态获得数组长度的方式是“数组名称.length”。

#1.1:数组的声明

数据类型[ ]数组名称=new 数据类型[长度 ]; 

                                                                                                                                                                                                                                  

  • 声明一个变量就是在内存空间划出一块合适的空间
  • 声明一个数组就是在内存空间划出一串连续的空间

例如:声明一个int型数组。

public class test{
    public static void main(String[]args){
        int num[]=new int[3];//创建一个长度为3的数组
    }
}

例如:采用分步的模式创建数组空间。

public class arr{
    public static void main(String[]args){
        int num[]=null;//声明变量
        num=new int[3];//创建一个长度为3的数组
    }
}

注意 :数组属于引用数据类型,所以在数组使用之前一定要分配空间(实例化),如果使用了没有空间的数组,就会出现错误。例如

public class arr{
    public static void main(String[]args){
        int num[]=null;
        System.out.println(num[x]);//未分配空间会显示异常。
    }
}

#1.2:数组的赋值

 数组的赋值分为静态赋值和动态赋值。

@1:静态赋值

public class arr{
    public static void main(String[]args){
        //一步到位赋值,第一种
        int num[]={10,20,30};
        //一步到位赋值,第二种
        int nun[]=new int[3]{10,20,30};
    }
}

@2:动态赋值

import java.util.Scanner;
public class arr{
    public static void main(String[]args){
        //动态赋值第一种方式,分布赋值
        int num[]=null;
        num=new int[3];//创建一个长度为3的数组
        num[0]=10;//数据赋值
        num[1]=20;
        num[2]=30;
        //动态赋值第二种方式,键盘输入
        Scanner sc=new Scanner(System.in);
        int[]nun=new int[3];
        for(int i=0;i<nun.length;i++){
            nun[i]=sc.nextInt();//通过键盘输入动态赋值
        }
    }
}

#1.3:一维数组的遍历

@1:第一种方式

实例代码如下: 

public class arr{
    public static void main(String[]args){
        int[]num={1,2,3,4,5};//创建一个有5个元素的数组
        for (int i = 0; i < num.length; i++) {//进行遍历
            System.out.print(num[i]+"\t");//输出其中的元素
        }
    }
}

@2:第二种方式:for-each

 for-each是增强的for循环,在遍历集合和数组时使用比较方便。语法格式如下:

for(元素数据类型 元素变量 :遍历对象){
    //循环体代码块
}

实例代码如下:

public class arr{
    public static void main(String[]args){
        int[]num={1,2,3,4,5};//创建一个有5个元素的数组
        for (int i:num) {//进行遍历
            System.out.print(i+"\t");//输出其中的元素
        }
    }
}

#1.4:一维数组的排序

一维数组排序就是将数组中原本无序的数据进行处理后,使数组中的数据从小到大(升序)排列,或者使数组中的数据从大到小(降序)排列。

Arrays类位于java.util包中,主要提供操作数组的各种方法,如排序,查询等。Arrays类的sort()方法可以对数组进行升序排列,语法如下:

Arrays.sort(数组名);

@1:升序 

例如:对数组“9,4,5,2,0,1”进行升序排列代码如下:

import java.util.Arrays;
public class arr{
    public static void main(String[]args){
        int[]num={9,4,5,2,0,1};
        Arrays.sort(num);
        for (int i:num) {
            System.out.print(i+"\t");
        }
    }
}

@2:降序

 降序有两种方法。第一种是我们首先使用Arrays.sort()对数组进行升序排列,然后再通过交换数组元素的方式将其变为降序排列,第二种则是可以使用Java 8中引入的流式操作和Comparator来实现。

!1:第一种
import java.util.Arrays;
public class arr {
    public static void main(String[] args) {
        int[] arr = {5, 3, 9, 1, 7};
        Arrays.sort(arr);
        for (int i = 0; i < arr.length / 2; i++) {
            //arr.length / 2是因为我们在交换数组元素时,只需要对数组的前半部分进行操作,
            // 交换后半部分的元素会自动被交换到正确的位置。因此,我们只需要遍历数组的前半部分,
            // 并且对应的交换元素的位置是arr.length - 1 - i,其中i是当前遍历的索引。
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];// 将数组前半部分的元素与对应的后半部分元素交换
            arr[arr.length - 1 - i] = temp;// 将数组后半部分的元素与对应的前半部分元素交换
        }
        System.out.println(Arrays.toString(arr)); // 输出:[9, 7, 5, 3, 1]
    }
}

!2:第二种

在使用Collections 类访问的 reverseOrder()时我们需要进行导包即import java.util.Collections; 

import java.util.Arrays;
import java.util.Collections;
public class arr {
    public static void main(String[] args) {
        Integer[] arr = {5, 3, 9, 1, 7};
        Arrays.sort(arr, Collections.reverseOrder());
        System.out.println(Arrays.toString(arr)); // 输出:[9, 7, 5, 3, 1]
    }
}

注意:

  • 将数组元素的类型从int改为Integer是为了使用Arrays.sort()方法和Collections.reverseOrder()来实现数组的降序排列。在Java中,基本类型(如int)不具备实现Comparator接口的能力,而Integer是一个类,可以通过实现Comparator接口来定义自定义的比较规则。通过将数组元素的类型改为Integer,我们可以使用Collections.reverseOrder()来获得一个降序排列的Comparator,然后将其传递给Arrays.sort()方法,从而实现数组的降序排列。
  • 如果数组元素的类型为int,我们无法直接使用Collections.reverseOrder(),因为它要求传入一个Comparator类型的参数。因此,我们需要将数组元素的类型改为Integer,以便使用Collections.reverseOrder()来实现降序排列。

#1.5:一维数组元素的查找与比较

 一维数组的查找与比较就是在一个数组中查找与某个元素是否存在。

例如:现有一个数组里存储了十个整数,需要查找8是否在数组中。只需要for循环对数组进行遍历,用数组元素和8进行比较,如果相等就退出循环,对应代码如下:

public class arr {
    public static void main(String[]args){
        int[]num={1,4,6,7,8,9,32,23,15};
        boolean flag=false;
        for (int i = 0; i < num.length; i++) {
            if(num[i]==8){
                flag=true;
                break;
            }
        }
        if(flag){
            System.out.println("该数组中存在8这个数");
        }
        else{
            System.out.println("该数组中不存在8这个数");
        }
    }
}

 数组的查找与比较也可以用于求一个数组的最大值和最小值。下面介绍求数组的最小值

例如:从键盘输入6个数,求最小值 

import java.util.Scanner;
public class arr {
    public static void main(String[]args){
        int []num=new int[6];
        int min=0;//记录最小值
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入6个数:");
        for (int i = 0; i < num.length; i++) {
            num[i]=sc.nextInt();
        }
        //计算最小值
        min=num[0];//假设0索引下的数是最小值
        for (int i = 0; i < num.length; i++) {
            if(num[i]<min){
                min=num[i];
            }
        }
        System.out.println("最小值为:"+min);
    }
}

2:二维数组

@2.1:数组的声明

二维数组是由多个一维数组组成的数组。它可以被看作是一个表格或者矩阵,其中每个元素都有两个索引,一个用于指定行,另一个用于指定列。在编程语言中,二维数组可以通过在声明时指定两个维度的大小来创建。

在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。声明二维数组的语法如下:

type array[][];
type[][] array;

其中,type 表示二维数组的类型,array 表示数组名称,第一个中括号表示行,第二个中括号表示列。 

@2.2:数组的赋值

  数组的动态初始化:

数据类型 数组名称[ ][ ]=new 数据类型[行个数][列个数];

数组的静态初始化:

数据类型 数组名称[ ][ ]=new 数据类型[行个数][列个数]{值,值,......}{值,值,......}{值,值,......}{......};

@2.3:数组的遍历

二维数组要通过两个下标来获取,由于数组的下标起始值为 0,因此行和列的下标需要减 1。

获取单个元素例如:

public class arr{
    public static void main(String[] args)
    {
        double[][] num={{10.0,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
        System.out.println("第二行第二列元素的值:"+num[1][1]);
        System.out.println("第四行第一列元素的值:"+num[3][0]);
    }
}

获取全部元素例如:

public class arr{
    public static void main(String[] args)
    {
        int[][] num={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
        //如果在进行输出的时候一定要使用双重循环
        //外部的循环控制输出的行数,而内部的循环控制输出的列数
        for (int i = 0; i < num.length; i++) {
            for (int j = 0; j < num[i].length; j++) {
                System.out.println("num["+i+"]["+j+"]="+num[i][j]);
            }
        }
    }
}

3:多维数组

在Java中,多维数组的声明可以通过在数组类型后面添加多个方括号来实现。在Java中,多维数组是指包含一个或多个数组的数组。

// 三维数组的声明和初始化
int[][][] num = new int[3][4][5];

                                                                                                                                                                                                                                                                                                                          

  • 36
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值