第十四篇 java的数组

什么是数组?

数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为:
一维数组
二维数组
多维数组等

数组:

回顾一下变量 : 可以存储单个数据,
学习一下数组 : 可以存储多个数据。

数组在内存中是一段连续的内存空间,
相同类型数据的有序集合。

数组的特点:

1.数组是一个容器,是一个引用数据类型,在堆中;

2.一致性:数组中的所有数据被要求数据类型相同;

3.不可变性:长度一旦确定就不可改变;

4.有序性:根据序号使用(索引|下标)。

5.jdk5 没有下标


数组的声明和创建

变量的类型 变量名 = 变量值
给数组赋值
遍历数组 arrays.length获取数组长度

package com.whs.day06array;

/**
 * @Author: 阿波罗
 * @Date: 2021/11/27 20:44
 * @oath: 不分白天黑夜的征途 淦!
 * @Version: 1.0.0
 */
public class Demo43Array {
    public static void main(String[] args) {
        //变量的类型 变量名 = 变量值
        //数组
       /*
       //一、声明、创建
       int[] numbers;//定义一个数组 或是 声明一个数组
        numbers = new int[10];//创建一个数组*/

        /*
        * 二、声明和创建写一起
        * */
        int[] numbers = new int[10];

        //给数组赋值
        numbers[0] = 1;//数组的元素是通过索引访问 索引从0开始 (也可以这样去理解,数组就是从下标开始的 0就是下标指向的第一个数)
        numbers[1] = 2;
        numbers[2] = 3;
        numbers[3] = 4;
        numbers[4] = 5;
        numbers[5] = 6;
        numbers[6] = 7;
        numbers[7] = 8;
        numbers[8] = 9;
        numbers[9] = 10;

//        System.out.println(numbers[0]);
        int sum = 0;
        //  arrays.length获取数组长度
        for (int i = 0; i < numbers.length; i++) {
            sum = sum + numbers[i];
        }
        System.out.println(sum);
    }
}


静态初始化 创建 + 赋值

动态初始化

数组边界 合法边界[0,length-1] length-1 -->最大长度
int[] c= new int[2];//声明 但未赋值 默认值为0
System.out.println(c[2]);//输出 出错下标越界**

package com.whs.day06array;

/**
 * @Author: 阿波罗
 * @Date: 2021/11/29 12:45
 * @oath: 不分白天黑夜的征途 淦!
 * @Version: 1.0.0
 */
public class Demo44Array {
    public static void main(String[] args) {
        //静态初始化  创建  +  赋值
        int[] a = {1,2,3,4,5,6};
        System.out.println(a[0]);

        //动态初始化
        int[] b = new int[3];
        b[0]=10;
        b[1]=20;
        b[2]=30;
        System.out.println(b[2]);
    }
}

JDK1.5没有下标
反转数组的方法

 public static void main(String[] args) {
        //    JDK1.5没有下标
        int[] arrays = {1, 2, 3, 4, 5};

        //遍历输出  arrays.for 回车
        for (int array : arrays) {//这里是取不到下标的  缺陷取不到下标
            System.out.println(array);
        }

        System.out.println("===============================================================");
        //调用printArrays方法 输出 arrays
        printArrays(arrays);
        System.out.println("===============================================================");
        //反转数组   //调用printArrays方法 输出 reverse
        int[] reverse = reverse(arrays);
       printArrays(reverse);
        System.out.println("===============================================================");

    }

    //反转数组的方法
    public static int[] reverse(int[] arrays) {

        int[] result = new int[arrays.length];

        for (int i = 0, j = result.length - 1; i < arrays.length; i++, j--) {
            result[j] = arrays[i];
        }
        return result;
    }


    //写一个方法  打印数组元素   返回值是void   不需要写  return ? ;  直接返回 传的参
    public static void printArrays(int[] arrays) {
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]+" ");//控制方法中换行与不换行输出
        }
    }

多维数组

package com.whs.day06array;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

/**
 * @Author: 阿波罗
 * @Date: 2021/11/29 21:17
 * @oath: 不分白天黑夜的征途 淦!
 * @Version: 1.0.0
 */
public class Demo48 {
    public static void main(String[] args) {
        int[][] arr = {{1,2},{3,4},{5,6},};

        System.out.println(arr.length);//外面的长度
        System.out.println(arr[1].length);//里面的长度
        System.out.println(arr[2][arr.length-2]);//拿到里面的最后一个值
        System.out.println("====================================================================");
        //多维数组
        int [][] array = {{1,2,3,4,5,6},{11,22,33,44,5,6},{111,222,333,444,555,666},{1111,2222,3333,4444,5555,6666}};

        for (int i=0;i<array.length;i++){
            for (int j=0;j<array.length;j++){
                System.out.println(array[i] [j]);
            }
        }

    }
}

内存分析?



方法区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值