Java基础知识篇(第二篇:关于数组)

Java基础知识篇(第二篇:关于数组),第1张

Java基础知识篇(第二篇:关于数组) 数组:

数组就是一个变量,,用于将相同类型的数据存储在内存中,数组的每一个数据类型都属于同一个数据类型,例如:全班30个学生都是整型,就可以存储在一个整型数组中。

数组的基本要素:

标识符:和变量一样数组也需要标识符,用于区分不同数组。

数组元素:

有标识符后,要向数组中存放数据,这些数据就称为数组元素。

数组下标

在数组中,为了正确地得到数组元素,需要对它们进行编号,这样计算机才能根据编号取存取,而这个编号称为数组下标。

元素类型:

存储在数组中的数组元素为同一数据类型。

注意:

每个数组只有一个名称即只有一个标识符;数组元素在数组里顺序排列编号,该编号即为数组下标,它标明了元素在数组中的位置,第一个元素的编号规定为0,后面的数组的下标依次为1,2,3,4等。

数组的大小是数组可容纳元素的最大数量,定义一个数组的同时也定义了它的大小,如果一个数组已满,但是还继续向数组中存储数据的话,程序就会出错,这称为数组越界。例如:数组下标最大为3,如果数组的下标超过此大小,程序就会因为错误而终止。

数组的使用步骤:

1.声明数组:

语法格式:数据类型[]数组名;或者 数据类型 数组名[]

例如:

int[]score;

int score[];

这两种方式都可声明数组,数组名可以是任意的合法字符。

2.分配空间:

声明数组后,但并不会为数组元素分配空间,此时还不能使用数组,为数组分配内存空间,这样数组的每一个元素才能对应一个存储单元。

语法格式:

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

例如:

score=new int[86];

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

例如:

int []=score=new int[5];

3.赋值:

分配空间后就可以在数组里面放置数据了

语法格式:

数组名[下标值];

例如:score[0]=98;

score[1]=56;

score[2]=78;

可以利用循环来为数组赋值

例如:

Scanner input=new Scanner(System.in);
​
for(int i=0;i<30;i++){
​
score[i]=input.nextInt();//从控制台接受键盘输入进行循环赋值
​
}

数组和循环往往结合在一起使用,可以极大效率的简化代码,提高程序效率,通常使用for循环遍历数组或者给数组元素赋值。

Java中的另一种创建数组的方式如下:

数组类型[]数组名={值1,值2,值3,.....,值n};

例如:

int[] scores={60,61,78,98,25};等价于int[]scores=new int[]{60,61,78,98,25};

注意的是:直接创建并赋值的方式一般在数组元素比较少的情况下使用,它必须一并完成,如:int[]score;

score={60,20,56,45};这就是错误的创建方式

案例如下:

//使用数组计算平均分
int[]scores=new int[5];//定义成绩数组
int sum=0;//定义成绩总和
Scanner input=new Scanner(System.in);
System.out.println("请输入5位同学的成绩:");
for(int i=0;i 

数组使用注意事项:

1.数组已经创建,其长度是不可变的,如果越界访问(即数组下标超过0至数组长度-1的范围),程序会报错,因此当使用数组长度时我们使用如下格式:

数组名.length;

例如:上面的例子中循环变量i小于数组长度,我们可写成下面的格式

i

2.数组下标从0开始,而非1,如果访问数组元素时指定下标小于0,或者大于等于数组长度,都将出现下标越界异常。

3.如果定义的数组是基本数据类型的数组,即int,double,char,boolean,在定义数组之后没有指定初始值,则依据数据类型的不同,会给数组元素赋一个默认值如:int 初始值=0

double初始值=0.0

char初始值='u0000'

boolean初始值=False

数组应用:

排序:

语法格式:Array.sort(数组名);

Arrays是Java中的一个类,而sort()是该类的一个方法。该方法执行后,数组中的元素会按照升序排列。

案例如下:对5位同学的成绩按升序排列

//5位同学的成绩如下:98,65,70,85,77
    import java.util.Arrays;//引入Arrays类
    import java.util.Scanner;//引入Scanner类
        public class 类名{
        public static void main(String[]args){
        int[]scores=new int[5];//定义成绩数组
        Scanner input=new Scanner(System.in);
        System.out.println("请输入5位同学的成绩:");
        for(int i=0;i 

求最大值:

关于最大值的求法:我们可以用传统的擂台赛为例,进行分析。

A,B,C,D四人,进行擂台赛,假定A为擂台擂主,接下来就是B与其对战,若B赢了,则B为新的擂主,否则A仍为擂主并继续和C对战,若C赢了,则C成为新的擂主,否则A仍为擂主并继续和D战斗,若D赢了,则D为擂主也是冠军,否则A仍为擂主且同时成为冠军。

由上方案例可写出如下代码:

max=scores[0];

if(scores[1]>max)

max=scores[1];

if(scores[2]>max)

max=scores[2];

if(scores[3]>max)

max=scores[3];

if(scores[4]>max)

max=scores[4];

这样最后的变量max就是本次擂台赛的最终胜利者。但是这样的代码是繁琐的,我们需要对代码进行简化,利用循环使变量max与数组中的元素进行比较,如果max的值小于比较的数,则进行置换,否则不执行任何 *** 作。代码如下:

import java.util.Scanner
    public class MaxScore{
        //求数组最大值
       public static void main(String[]args){
         Scanner input=new Scanner(System.in);//实例化Scanner类
         int[]scores1=new int[5];//定义数组
         int max=0;//定义变量,用于保存最大值
         System.out.println("请输入5位同学的成绩:");
         for(int i=0;imax){
                 max=scores1[j];
             }
         }
         System.out.println("考试成绩最高分为:"+max);
     }
    }

插入元素:

将一组学生成绩{99,85,82,63,60},将它们按降序排列,保存在一个数组中,现在需要增加一个成绩,将它插入数组,并保持成绩升序排列。

分析:

首先将5个学生的成绩保存在长度为6的数组整型数组中,然后,要找到新增成绩插入位置。为了保持数组中的成绩有序,需要从数组的第一个元素开始与新增成绩比较,直到找到要插入的位置,可以使用循环进行比较,找到插入位置后,将该位置后的元素后移一个位置,最后将新增成绩信息插入该位置即可。

import java.util.Scanner;
public class Insert{
    public static void main(String[]args){
    int[] list=new int[6];
        list[0]=99;
        list[1]=85;
        list[2]=82;
        list[3]=63;
        list[4]=60;
        int index=list.length;//保存新增成绩插入位置
        System.out.println("请输入新增成绩:");
        Scanner input=new Scanner(System.in);
        int num=input.nextInt();//输入要插入的数据
        //找到新元素的插入位置
        for(int i=0;ilist[i]) {
                index=i;
                break;
            }
        }
        //元素后移
        for(int j=list.length-1;j>index;j--) {
            list[j]=list[j-1];//index下标开始的元素后移一个位置。
        }
        list[index]=num;//插入数据
        System.out.println("插入成绩下标为:"+index);
        System.out.println("插入后的成绩信息是:");
        //循环输出目前数组中的数据
        for(int k=0;k 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4828189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-10
下一篇 2022-11-10

发表评论

登录后才能评论

评论列表(0条)

保存