JavaSE基础语法--数组(1)

本文详细介绍了Java中的数组,包括基本概念、创建、初始化、遍历和排序。数组是一种有序的元素序列,用于存储相同类型的数据。创建数组可以通过声明和分配内存,动态或静态初始化。遍历数组通常使用for循环或增强for循环。文中还演示了冒泡排序和选择排序两种经典的排序算法,帮助读者理解数组操作和排序原理。
摘要由CSDN通过智能技术生成

目录

1.数组的基本概念及作用

2.数组的创建

3.数组的初始化

4.数组的遍历

5.数组的排序


1.数组的基本概念及作用

        数组是有序的元素序列。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。        

        基本特点

        1.数组是用于储存多个相同类型数据的集合。   

        2.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。     

        3.下标可以是常量,变量,或表达式,但其值必须是整数(如果是小数将四舍五入为整数)。

        4.数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。

2.数组的创建

        数组的声明:

        1.)数据类型 [ ] 数组名

public class Test {
    public static void main(String[] args) {
        int [] a;
    }
}

        2.)数组类型 数组名 [ ]

public class Test {
    public static void main(String[] args) {
        int a [];
    }
}

        数组的创建

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

         e.g:int [ ] a = new int [10];    

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

        e.g:int [ ] b = new int [ ]{1,2,3};

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

        e.g:int [ ] c ={1,2,3,4};     

3.数组的初始化

        数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。

1.动态初始化                  

public class Test {
    public static void main(String[] args) {
        int a [] = new int [10];// 不给数组中各元素赋值,结合for循环等进行赋值 
        for(int i=0;i<10;i++){
            a[i]=i;
        }    
    }
}

 当数组采用动态初始化开辟空间之后,数组之中的每个元素都是该数据类型的默认值。

        

2.静态初始化          

public class Test {
    public static void main(String[] args) {
        int a [] = new int []{1,2,3,4,5};//在创建之初,就为每个元素赋值       
    }
}

       1.)通过数组下标索取来取得元素,下标默认从0开始。数组下标超出数组长度,就会运行异常。

        2.)数组的最大缺陷:长度固定(存在越界问题)。

4.数组的遍历

        数组的访问

   e.g:a[0] , a[3]     数组名[索引] 

         注意:

  • 数组的索引是从0开始的
  • 索引的数据是整形
  • 索引最大值和数组长度始终差一----(索引最大值=数组长度-1)

        数组的遍历

       数组的遍历有两种方法:

        for循环

public class Test {
    public static void main(String[] args) {
        int a [] = new int [10];
        for(int i=0;i<10;i++){//运用for循环给a数组赋值
            a[i]=i;
        }
        for(int j=0;j<a.length;j++){//运用for循环遍历a数组
            System.out.println(a[j]);//数组名称.length:取得数组长度
                                     //(数组长度可以由属性length获得)
        }
    }
}

        增强for循环

public class Test {
    public static void main(String[] args) {
        int a [] = new int [10];
        for(int i=0;i<10;i++){//运用for循环给a数组赋值
            a[i]=i;
        }
        for(int j:a){             //集合或数组a : 数组名称a
            System.out.println(j);//运用增强for循环遍历数组a
        }
    }
}

        相对于普通for循环(;;)而言 增强for循环有两个好处:

        1.写起来简单容易

        2.遍历集合、数组比较简单

        增强for循环和普通for循环的区别

        普通for循环可以没有遍历的目标,而增强for循环一定要有遍历的目标。

5.数组的排序

        1.冒泡排序

        思路:

        两两元素相比,前一个比后一个大就交换,直到将最大的元素交换到末尾位置。这是第一趟一共进行n-1趟这样的交换将可以把所有的元素排好。

        动画分析:

         代码:

public static void main(String[] args) {
    int max=0;
    int[] a={8,5,6,4,65,3};
    for(int m=0;m<a.length-1;m++){
        for(int n=0;n<a.length-1-m;n++){
            if(a[n]>a[n+1]){
            int stmp=a[n];
            a[n]=a[n+1];
            a[n+1]=stmp;
            }
        }
    }
    System.out.println(Arrays.toString(a));
}

        2.选择排序

        思路:

        第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始(末尾)位置,然后选出次小(或次大)的一个元素,存放在最大(最小)元素的下一个位置,重复这样的步骤直到全部待排序的数据元素排完 。

        动画:

         代码:

    public static void main(String[] args) {
        int[] num ={29,10,14,37,14,2,8,1,7,6,5};
        for (int i = 0; i < num.length; i++) {
            //注意min的取值
            int min = i;
            //j=i;意味着i之前的数都是有序的
            for (int j = i; j < num.length; j++) {
                if (num[j]<num[min]){
                    min = j;
                }
            }
            //交换,每一次循环的i都是未排序数据的第一个
            int temp = num[i];
            num[i] = num[min];
            num[min] = temp;
        }
        System.out.println(Arrays.toString(num));
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值