Java从入门到入土|day05-数组

 一、什么是数组?

数组是相同类型数据据的有序集合。每一个数据都是数组的一个元素,每一个数据都可以通过下标来进行访问。
数组的特点: 

二、数组的声明和创建

声明:

     首先必须声明数组变量,才能在程序中使用数组。声明语法:DataType[ ] arrayRefVar or DataType arrayRefVar[ ]。其中,前一种声明方法为首选方法。

创建:

     Java中使用new操作符来创建数组,语法:

data Type[ ] arrayRefVar=new dataType [ arraysize];

*数组的索引是从0开始的。

*下标的合法区间:[0,arraysize-1],越界则程序报错。

Exc:计算一个数组中元素的总和值;

 public static void main(String[] args) {
        int[]nums=new int[4];   //定义和创建数组语句
        nums[0]=2;
        nums[1]=4;
        nums[2]=6;
        nums[3]=8;
        int sum=0;    //通过编号给数组赋值
        for(int i=0;i< nums.length;i++){
            sum+=nums[i];
        }
        System.out.println(sum);
    }

三、初始化及内存分析

内存分析:Java的内存可分为:栈、堆、方法区。各部分作用如下表:

 **当我们声明一个数组时,内存会先在栈中创建一个数组对象,此时的数组只是空有其名;当我们创建数组时,内存才会在堆中分配出相应大小的内存来存储数据。

初始化:对数组的初始化可分为静态初始化和动态初始化。具体区别如下方代码可见。

public static void main(String[] args) {
        //动态初始化
        int[] nums = new int[4];
        nums[0] = 2;
        nums[1] = 4;
        nums[2] = 6;
        nums[3] = 8;
        
        //静态初始化
        int nums1[]={2,4,6,8};
        System.out.println(nums1[0]);

    }

四、数组的使用
普通for循环:如前面程序中求数组总和的方法,即为数组普通for循环的应用。

For-Each循环:只适用于数组元素的输出,不应用数组下标,可节约打印时间。

eg:

public static void main(String[] args) {
        int nums1[]={2,4,6,8};
        for (int array : nums1) {   //确定所打印的数组
            System.out.println(array);   //打印数组中的元素
        }

    }

数组作方法入参:

eg:定义一个输出数组的方法,并输出数组。

public static void main(String[] args) {
        int nums1[] = {1,2,3,4,5};
        printArray(nums1);   //方法的引用

    }
    public static void printArray (int[] arrays){   //定义输出数组的方法
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);
        }

    }

数组作为返回值:

eg:将一个数组中的元素反向输出

public static void main(String[] args) {
        int nums[] = {1,2,3,4,5};
        int result[]= replay(nums);
        printArray(result);


    }
    public static void printArray (int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);
        }

    }

    public static  int[] replay(int[] arrays){
        int[] result=new int[arrays.length];
        for (int i = 0, j= result.length-1;i < arrays.length; i++,j--) {
            result[i]=arrays[j];

        }
        return result;
    }

五、多维数组(以二维数组为例)

多维数组可以理解为是数组的嵌套,即在一维数组的基础上嵌套了一个新的数组。Java中多维数组的应用不多,因此此部分仅了解即可。

定义二维数组:

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

六、冒泡排序

冒泡排序是Java八大排序中最著名的一种排序方式,实质就是对一组数据进行循环的比较,较大的数排在后面,最终排除大小顺序。下面是对数组内数据的排序代码:

public static void main(String[] args) {
        int[] nums = {12, 5, 8, 9, 6, 3, 2};
        int[] sort = PAI(nums);
        System.out.println(Arrays.toString(sort));
    }

    public static int[] PAI(int[] arrays) { 
       // 定义一个排序函数
        int temp = 0;  //定义一个临时变量,用于数据的交换
        for (int i = 0; i < arrays.length - 1; i++) {
            for (int j = 0; j < arrays.length - 1 - i; j++) {
                if (arrays[j + 1] < arrays[j]) {
                    temp = arrays[j];
                    arrays[j] = arrays[j + 1];
                    arrays[j + 1] = temp;  
                    //一定要注意赋值的顺序,是后面的数值赋给前面的,赋值顺序错了,可能导致输出的结果错误
                }

            }

        }
        return arrays;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值