Java的数组

  • 课程的回顾

  • 数组的定义与作用

  • 创建与使用数组

  • 数组的遍历

  • 数组的案例解析

0、课程的回顾

1.方法与函数的创建方式

有四种:无参无返回值,无参有返回值,有参无返回值,有参有返回值

2.方法与函数调用

格式:方法名(实参1;实参2;实参3....);

比如:findMax(23,56,45);

注意:实参的个数与顺序及类型一定要与方法声明的时候的形参的个数、顺序、类型保持一致

package Shangke;
//.验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和,要求输入一个整数,输出这个
//      数被被分解成哪两个质数的和。
//比如:12->7+5
import java.util.Scanner;
public class day2221 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个大于6的偶数:");
        int even = sc.nextInt();
        fing (even);
        sc.close();
    }
    public static boolean  geDe(int a ){
        boolean flag=true;
        for (int i=2;i<a;i++){
            if (i%2==0){
                break;
            }
        }//此处可以不用
        if (flag){
            flag=true ;
        }
        return flag ;
    }
    //2.将一个偶数分解为两个质数的和
    public static void fing (int even){
        if (even>6&&even%2==0){//8.38-3=5
            for (int i=3;i<=even-3;i++){
                //质数1+质数2=even
                boolean c =  geDe(i);//是质数1
                boolean d =  geDe(even-i);//是质数2
                if (c&&d){//等价于啊&&b==true表达式
                    System.out.println(even+"="+i+"+"+(even-i));
                    // 终止循环
                    break;
                }

            }
        }else{
            System.out.println("判断的数不符合条件");
        }
    }

}

一、数组的定义与作用

数组是一种批量存储数据类型相同的数据的容器,方便存取大量,提高存储效率,大大节省空间,简化代码。

比如:要存取某个学校的所有学生的课程成绩,如果每个学生的成绩都定义一个变量来存取,非常不现实,此时只能使用数组来存取

创建数组的代码:int[] score =new int[3000];

二、创建与使用数组

1.根据数组存储的行列数,可以分为一维数组与多维数组(二维数组)

2.关于一维数组:存储了一行数据的数组

说明:数组是一种比较特殊的变量,他包含有两部分的空间,一个是保存数组地址的栈内存(后进先出)另一个是用于保存数组内容(数据)的堆内存。

2.1一维数组的创建与使用

数组的创建方式有两种:一种是动态方式,另一种是静态

格式一:动态方式:

数组类型[]数组名称=new数据类型[数组的长度/大小];

比如:int[] ages = new int[100];

存取数组中的数据:

//存数据

数组名称[位置号/索引号]=数值;

//取数据

数组类型 变量名=数组名[位置号/索引号];

说明:

(1)数组中存取的每一个数据又称为元素,

(2)每个元素在数组中是按顺序存放的,同时每个元素都有自己的位置号(索引号,下标)方便 找到他们

(3)每个元素的位置号(索引号)从0 开始,最大的索引号是数组的长度减1.

(4)在使用数组元素的时候,通过 数组名[索引号]来存取。

package Shangke;

public class day2222 {
    public static void main(String[] args) {
        //go1();
        go2();
    }
    //1.1一维数组的创建,动态方式
    public static void go1(){
        //1.1创建一个长度为10的整型数组,其中最大的索引号为10-1=9
        //其中的元素依次为ages[0],ages[1],ages[2],...ages[9],
        //所有元素有默认的初始值,此处初始值为0
        int[] ages=new int[10];
        //1.2存取元素的值
        ages[0]=16;
        ages[1]=18;
        ages[8]=20;
        ages[9]=17;
        System.out.println("ages[0]="+ages[0]);
        System.out.println("ages[8]="+ages[8]);
        // ages[10]=17;
        // ages[11]=17;
        int temp=ages[9]+2;
        ages[8]+=3;
        System.out.println("temp="+temp);
    }
}

格式二:静态方式:

数组类型[]数组名称={元素1,元素2,元素3,....}

数组类型[]

数组名称=new 数组类型[]{元素1,元素2,元素3,....}

public class day2222 {
    public static void main(String[] args) {
        //go1();
        go2();
    }
    //1.1一维数组的创建,动态方式
    public static void go1(){
        //1.1创建一个长度为10的整型数组,其中最大的索引号为10-1=9
        //其中的元素依次为ages[0],ages[1],ages[2],...ages[9],
        //所有元素有默认的初始值,此处初始值为0
        int[] ages=new int[10];
        //1.2存取元素的值
        ages[0]=16;
        ages[1]=18;
        ages[8]=20;
        ages[9]=17;
        System.out.println("ages[0]="+ages[0]);
        System.out.println("ages[8]="+ages[8]);
        // ages[10]=17;
        // ages[11]=17;
        int temp=ages[9]+2;
        ages[8]+=3;
        System.out.println("temp="+temp);
        //分步创建数组对象
        int[]ss;//声明数组
        //此数组中的元素new出后都有默认值为0
        ss=new int [8];
        ss[0]=20;
        ss[2]=22;
        ss[7]=25;
        System.out.println("ss[2]="+ss[2]);
        //输出默认值为0
        System.out.println("ss[4]="+ss[4]);
        //创建引用类型的数组,比如:String类型
        //m
        // String默认值为null。java中对象的默认值为null。可以作为对象是否存在有内容。
        String []names=new String [8];
        names [0]="小美";
        names [1]="Tom";
        names [2]="Ben";
        names [7]="小帅";
        System.out.println("names[7]="+names[7]);
        System.out.println("names[3]="+names[3]);
        //1.4创建double类型的数组,元素默认值都为0.0.
        double[]money =new double[5];
        money[0]=89999;
        money[1]=666688;
        money[2]=6757335.33f;
        System.out.println("money[1]="+money[1]);
        System.out.println("money[3]="+money[3]);
        //1.5所有数组的长度都用length属性获取
        System.out.println("数组ages的长度:"+ages.length);
        System.out.println("数租ss的长度:"+ss.length);
        System.out.println("数组names的长度:"+names.length);
        //names.length-1就是names的最大下标,也就是最后一个元素
        System.out.println("names的最后一个元素:"+names[names.length-1]);
    }
    //2.通过静态方式创建一维数组
    public static void go2(){
        //静态方式格式一
        int []level={56,23,90,11,21};
        //静态方式格式二
        int[]score;
        //错误score={56,23,90,11,21};
        score=new int[]{50,23,90,11,21};
        //从新给数组赋值或取值,操作和动态创建一样,都是用数组对象+下标去引用
        level[1]=39;
        level[3]=50;
        //拿到最大的下标区最大的一个元素的值
        level[level.length-1]=88;
        int max= level.length-1;
        level[max]=88;
        System.out.println("level[max]="+level[max]);
        System.out.println("score[max]="+score[score.length-1]);
        System.out.println("level的长度="+ level.length);
    }
}

三、数组的遍历

数组存储了大量的数据,经常会需要拿到所有元素的值,获取所有元素的操作法,成为遍历;

说明:遍历需要获取数组的长度,进而拿到最大下标;

数组长度=数组对象.length

数组最大下标=数组长度-1

遍历数组中需要用到for循环语句,可以从前往后,也可以的从后往前遍历数组元素

package Shangke;

public class day2223 {
    public static void main(String[] args) {
        // fore();
           go();
    }//main

    //1.遍历整型数组
    public static void fore() {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8,};
        //数组元素的所有下标
        // //每三个元素输出一行
        for (int i = 0; i <= arr.length - 1; i++) {
            System.out.print(arr[i] + "");
            //从前往后遍历,i就是数组元素的所有下标
           
            if ((i + 1) % 3 == 0) {
                System.out.println();
            }
        }//fore1
        System.out.println();
        //从后往前遍历
        for (int i = arr.length - 1; i >= 0; i--) {
            System.out.print(arr[i] + "");
        }
    }

    //2.遍历字符串数组
    public static void go() {
        String[] hero = {"青铜", "白银", "王者", "铂金", "钻石"};
        // String str ="abcde";
        //    str.length;
        //正序输出
        for (int i = 0; i <= hero.length - 1; i++) {
            System.out.print(hero[i]);
        }
            System.out.println();
            System.out.println("----------------");
//2.反序输出
        for (int i = hero.length - 1; i >= 0; i--) {
            System.out.print(hero[i] );
            }


public static void go3(){
Scanner sc = new Scanner(System.in);
String[] names=new String[5];
//循环赋值
for(int i=0;i<names.length;i++){
System.out.print("请输姓名:");
names[i]=sc.next();
}
//遍历字符串数组
for(int i=0;i<names.length;i++){
System.out.print(names[i]+" ");
}
//关闭
sc.close();
}
}
    }
}

四、数组的应用与Arrays工具

4.1数组的应用

遍历数组,数组元素的最大最小值得元素,求和,求平均,找某个元素等

package Shangke;

import java.util.Arrays;

public class day2225 {
    public static void main(String[] args) {
               play();
    }
    //遍历数组,数组元素的最大最小值得元素,求和,求平均,找某个元素等
    public static void play(){
        int[] arr={1,2,3,4,5,7,6,8,9,10};
       //找最大最小值
               findmaxmin(arr);
                //  calcSumAvg(arr);//求和
          //排序
            dispArr(arr);
            Arrays.sort(arr);
            dispArr(arr);
    }
    //找到数组中最大最小值并输出他们
    //如果有返回值则void应该改为int
    public static void findmaxmin(int[]arr){//arr是形参,可以和之后实参名相同
       //1,2,3,4,5,6,7,8,9,10
       //那第一个元素,作为计较参考值
        int max=arr[0];
       // int maxIndx=0
        int min =arr[0];
        for(int i =0;i< arr.length;i++){
            if (max<arr[i]){
                max=arr[i];
            }
            if (min>arr[i]){
                min=arr[i];
            }
        }
        System.out.println("最小值是:"+min);
        System.out.println("最大值是:"+max);
    }
    //求元素的和及平均值
    public static void calcSumAvg(int[] arr) {
        int sum=0;
        for(int i =0;i< arr.length;i++){
            //sum=sum+arr[i];
            //求和
            sum=sum+arr[i];
        }//for
        System.out.println("和值:"+sum);
        System.out.println("平均值:"+sum/ arr.length);
    }

    //专门遍历数组
    //传一个数组对象,作为形参
    public static void dispArr(int[]arr){//传一个数组变量参数
        for(int i =0;i< arr.length;i++){
            System.out.print(arr[i]+"");
        }
        System.out.println();
    }

    }

4.2 Arrays工具使用

从大到小排序:代码如下

int[] arr ={12,10,9,14,15};

Arrarys.sort(arr);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值