前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java学习历程之----基础篇(八)

Java学习历程之----基础篇(八)

作者头像
用户5410712
发布2022-06-01 16:02:45
发布2022-06-01 16:02:45
28500
代码可运行
举报
文章被收录于专栏:居士说AI居士说AI
运行总次数:0
代码可运行

一步一步,虽然走得慢,但我们还是在前进,这一周我们主要学习Java的数组,相信只要是工科类的同学,都应该听说过数组!当你想输入多个变量且变量之间还存在某种内在联系,但你又懒,不想一个一个用单独的变量来命名它们时,数组就出现了,所以懒才是促使人类不断进步的根源~,通过使用数组,可以在很大程度上缩短和简化程序代码,从而提高应用程序的效率。

一、Java数组介绍

数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。数组的下标是从0开始,如果数组有 n 个元素,那么数组的下标是从0 到(n-1)。在计算机语言中数组是非常重要的集合类型,大部分计算机语言中数组具有如下三个基本特性:

①一致性:数组只能保存相同数据类型元素,元素的数据类型可以 是任何相同的数据类型。

②有序性:数组中的元素是有序的,通过下标访问。

③不可变性:数组一旦初始化,则长度(数组中元素的个数)不可变。

1.1、一维数组

数组中每个元素都只带有一个下标,是数组中最简单的一种数组。声明如下:

type arrayName[ ]或type[ ] arrayName

type可以为Java中任意的数据类型,数组名arrayName为一个合法的标识符,[ ]指明该变量是一个数组类型变量。如插char s[ ];即数组s里的每一个元素都是char类型的。另外,学过C或C++的同学有没有发现什么不同呢?C或C++中定义数组的时候必须指定数组长度,而在Java中,数组定义的时候并不为数组分配内存,所以不用指出数组中元素的个数。Java 中初始化数组分为静态(直接指定)和动态(使用new运算符)两种,共有以下3 种方式:

①使用 new 指定数组大小后进行初始化;

②使用 new 指定数组元素的值;

③直接指定数组元素的值。

静态初始化如:int s[ ] = {1,2,3,4};

动态初始化是使用运算符new为数组分配空间,

其创建格式如下:

arrayName[ ] = new type[arraySize];

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

如: int s[ ];

s=new int[4];

//即此时给数组分配4个应用空间,初始化每个引用值为空

注意:单独的int s[4];这种写法是错误的,数组的内存都是通过new动态分配的。

1.2、二维数组

与一维数组类似,二维数组的声明也有两种方式:

type[ ][ ] arrayName;

// 数据类型[ ][ ] 数组名;或

type arrayName[ ][ ];

// 数据类型 数组名[ ][ ];

其中第一个中括号表示行,第二个中括号表示列。

也可以通过以下三种方式初始化:

(1)type[][] arrayName = new type[][]{值 1,值 2,值 3,…, 值 n};

// 在定义时初始化

(2)type[][] arrayName = new type[size1][size2];

// 指定空间,在赋值

(3)type[][] arrayName = new type[size][];

// 数组第二维长度为空,可变化

二、数组的基本操作

2.1 数组查找

从数组中查询指定位置的元素,或者查询某元素在指定数组中 的位置,语法格式如下:

binarySearch(Object[] a,Object key);

a:表示要搜索的数组,key 表示要搜索的值。

2.2、数组复制arraycopy()

System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length)

其中srcArray表示原数组,srcIndex 表示原数组中的起始索引,destArray 表示目标数组,destIndex 表示目标数组中的起始索引,length 表示要复制的数组长度。

2.3、求最值

将变量min与max初值设成数组的第1个元素后,再逐一与数组中的各元素相比。比min小,就将该元索的值指定给min存放,使min的内容保持最小。同样,当该元素比max大时,就将该元素的值指定给max存放,使max的内容保持最大。for循环执行完,也就表示数组中所有的元素都已经比较完毕,此时,变量min与max的内容就是最小值与最大值,此过程如下图所示:

三、数组的简单排序

数组的排序主要是升序或降序,Java语言使用Arrays类提供的 sort()方法来对数组进行排序。使用java.util.Arrays类中的sort()方法对数组进行升序分为以下两步:

①导入java.util.Arrays包。

②使用Arrays.sort(数组名)语法对数组进行排序,排序规则是从小到大,即升序。

降序主要是利用Collections.reverseOrder()方法。具体我们看代码吧~

四、实战

1、

2、

3、

4、

源码

1、

代码语言:javascript
代码运行次数:0
复制
package array;
public class yiwei {
    public static void main(String[] args){
        //使用 new 指定数组大小后进行初始化
     int[] number = new int[3];
        number[0] = 5;
        number[1] = 3;
        number[2] = 1;
        int[] age = new int[] { 3, 4, 5,6,7 };
        // 使用 new 指定数组元素的值
        int[] high = { 4, 5, 6, 7, 8 };
        // 直接指定数组元素的值
        System.out.println("number的"+
    "第一个元素为:" + number[0]);
         //获取单个元素
        System.out.printf("number数组为:" );
        for (int i = 0; i < number.length; i++) 
    {
            System.out.print(number[i]+" ");
            //获取数组全部元素
        }
        System.out.println();
      //输出换行
        System.out.printf("age数组为:" );
        for (int i = 0; i < age.length; i++) {
            System.out.print(age[i]+" ");
         //获取数组全部元素
         }
        System.out.println();
        //输出换行
        System.out.printf("high数组为:" );
        for (int i = 0; i < high.length; i++) {
            System.out.print(high[i]+" ");
       //获取数组全部元素
        }
    }
}

2、

代码语言:javascript
代码运行次数:0
复制
package array;
public class erwei {
    public static void main(String[] args) {
        double[][] number = {{100, 99, 99},
                          {100, 98, 97},
                          {100, 100, 99.5},
                          {99.5, 99, 98.5}};
        System.out.println("number"+
            "二维数组为:" );
        for (int i = 0;i < number.length; i++)
    {
       // 遍历行
          for (int j = 0;j < number[i].length;j++)
     {
        //遍历列
            System.out.print(number[i][j]+"\t");
     }
            System.out.println( );
        }
    }
}

3、

代码语言:javascript
代码运行次数:0
复制
package array;
import java.util.Arrays; //导入Arrays包
public class find {
    public static void main(String[] args) {
        double[] score = {99.5,90,98,97.5,
              100,95,85.5,99};
        Arrays.sort(score);
    //先将数组升序排序
        int index1 =
         Arrays.binarySearch(score,100)+1;
    //索引从0开始,所以在第几位应该+1
        int index2 =
         Arrays.binarySearch(score,93)+1;
    //未找到则返回<=0的数,
        System.out.println("查找到 100"+
    " 的位置是第"+index1+"个");
        System.out.println("查找到 60"+
    " 的位置是第"+ index2+"个");
    }
}

4、

代码语言:javascript
代码运行次数:0
复制
package array;
import java.util.Scanner;
public class min {
      public static void main(String[] args)
   {
            System.out.println("请输入"+
        "几个数并用逗号隔开:");
            Scanner sc =
         new Scanner(System.in);
            String str = sc.next().toString();
            String[] arr  = str.split(",");
            int[] b = new int[arr.length];
            System.out.printf("原数组为:");
            for(int j = 0; j<b.length;j++) {
                b[j] = Integer.parseInt(arr[j]);
                System.out.print(b[j]+" ");
            }
            System.out.println();
            int min = 0;
      // 定义变量保存到最小值
            min = b[0];
      // 把第1个元素的内容赋值min
            for (int x = 0; x < b.length; x++){
       // 循环求岀最小值
                if (b[x] < min) {
          // 依次判断后续的元素是否比min小
                    min = b[x];
           // 如果小,则修改min内容
                }
            }
            System.out.println("b数组的"+
        "最小值为:" + min);
        // 输出最小值
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档