第三课数组

发布于:2022-11-09 ⋅ 阅读:(514) ⋅ 点赞:(0)

目录

数组的基本概念与作用

数组的声明与创建

数组声明的两种方式:

数组创建的三种方式:

数组的长度:

数组的访问与迭代

数组元素的访问:

索引(index)特点:

数组迭代的两种方式:

数组排序


数组的基本概念与作用

数组是存储相同类型数据的集合;

数组是引用类型(对象),可以存储多个值;数组既可以存储基本数据类型,也可以存储引用数据类型;

数组的声明与创建

数组声明的两种方式:

1.数据类型    [  ]   数组名字;例如:int    [  ] a;

2.数据类型   数组名字   [  ]; 例如:int   a [  ] ;

注:推荐使用第一种,第二种方式有歧义,例如:int   a ,b[  ] ;

数组创建的三种方式:

1.声明数组的同时,根据指定的长度分配内存,但数组中元素值默认为初始化值;

                                        int  [  ]  ary0 = new int [10];

2.声明数组并分配内存,同时将其初始化;

                                         int  [  ]  ary1 = new int [ ]{1,2,3,4,5};

3.与前一种方式相同,仅仅是语法相对简略;

                                          int  [  ]  ary2 = {1,2,3,4,5};

从另一个角度出发,数组可分为动态和静态两种:

1.动态创建数组(没有为元素赋值,可以结合for循环进行赋值)

                                    char [ ] chAry = new char[10];

2.静态创建数组,在创建的时候,即为每个元素赋除值;

                                     int  [  ]  ary1 = new int [ ]{1,2,3,4,5};

注:创建数组时,必须明确数组容量,一旦确定,不能更改;

Arrays.toString-------->把数组以字符串的形式输出,方便调用;

import java.util.Arrays;
import java.util.Scanner;

public class Demo3 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        //数组的创建,必须明确数组容量,一旦创建,不能更改
        int[]a=new int[5];//推挤,int[]a,b(a,b都为数组)
        int b[]=new int[10];//不推荐,int a,b[](有歧义)
        int []c=new int[5];
        double []d=new double[5];
        char []ch=new char[5];
        int []f=new int[]{1,2,3,4,5};//为数组赋值时,容量由值的个数决定,不用再注明容量;
        String [] str =new String[5];
        System.out.println(Arrays.toString(a));//Arrays.toString把数组以字符串的形式输出,便于调用;
        System.out.println(Arrays.toString(b));
        System.out.println(Arrays.toString(c));//int型默认0
        System.out.println(Arrays.toString(d));//double型默认0.0
        System.out.println(Arrays.toString(ch));//char型默认空格
        System.out.println(Arrays.toString(str));//String型默认为null

    }
}

数组的长度:

length 属性;

int  [  ]  b1 = new int [ ]{1,2,3,4,5,6,7};

System.out.println(b1.length);

注:数组长度有限制,最大也就时int的最大值;

数组的访问与迭代

数组元素的访问:

数组名[索引]   例如:a[0]  a[1];

索引(index)特点:

1.从0开始;

2.数据类型是整形;

3.索引最大值和数组长度始终相差1;

import java.util.Scanner;
import java.util.Arrays;

public class Demo4 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int []a=new int [10];
        for(int i=0;i<a.length;i++){//a.length获取数组的长度
            a[i]=sc.nextInt();//a[-1]索引越界;索引特点:整数、索引=数组长度-1;
        }
        System.out.println(Arrays.toString(a));//使用Arrays.toString()时需加上方法调用;
    }
}

数组迭代的两种方式:

int  [ ]b1 = new int [ ]{1,2,3,4,5};

1.for循环

 for(int i=0;i<b1.length;i++){//第一种,for循环
     System.out.println(a[i]);

}

2.增强for循环

 for(数组元素类型    临时变量名  :数组名){
        System.out.println(临时变量名);
 }

例如:

 for(int t:a){//第二种,增强for循环;
        System.out.println(t);
 }

import java.util.Scanner;

public class Demo5 {
    public static void main(String[] args){
        Scanner sc = new Scanner (System.in);
        int []a=new int [5];
        a[0] = 1;
        a[1] = 2;
        a[2] = 3;
        a[3] = 4;
        a[4] = 5;
        int max=a[0];
        //两种遍历方法;各有利弊!
//        for(int i=0;i<a.length;i++){//第一种,for循环
//            System.out.println(a[i]);
//        }
//        for(int t:a){//第二种,增强for循环;
//            System.out.println(t);
//        }
        //输出数组中最大的数;
        for(int j=0;j<a.length-1;j++){
            if(max<=a[j+1]){
                max=a[j+1];
            }
        }
        System.out.println(max);
    }
}

数组排序

冒泡排序

import java.util.Arrays;
public class Demo6 {
    public static void main(String[] args){
        //冒泡排序法;
        int []a=new int[]{5,4,3,2,1};
                        //4 5 3 2 1
                        //4 3 5 2 1
                           //....
                        //4 3 2 1 5
                        //3 2 1 4 5
                        //2 1 3 4 5
                        //1 2 3 4 5
        int temp;
        for(int i=0;i<a.length-1;i++){
            for(int j=0;j<a.length-1-i;j++){
                if(a[j]>a[j+1]){
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

选择排序

import java.util.Arrays;
public class Demo6 {
    public static void main(String[] args){
        int []a=new int[]{5,4,3,2,1};
        int temp;
        //选择排序法;
        //5  4  3  2  1
        //4  5  3  2  1
        //3  5  4  2  1
        //2  5  4  3  1
        //1  5  4  3  2
        //......
        for(int i=0;i<a.length-1;i++){
            for(int j=i+1;j<a.length;j++){
                if(a[i]>a[j]){
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到