• Java基础-数组(06)


    数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致

    数组概念

    数组是存储同一种数据类型多个元素的容器。
    数组既可以存储基本数据类型,也可以存储引用数据类型。

    数组的定义格式

    格式1:数据类型[] 数组名;    
    格式2:数据类型 数组名[];
    注意:这两种定义做完了,数组中是没有元素值的.

    举例:

    int[] arr; 定义一个int类型的数组,数组名是arr(推荐)
    int arr[];定义了一个int类型的变量,变量名是arr数组

    数组初始化概述:

    Java中的数组必须先初始化,然后才能使用。
    所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。

    数组的初始化方式

    动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
    静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    动态初始化

    数据类型[] 数组名 = new 数据类型[数组长度];
    /*左边:
     *        int:说明数组中的元素类型是int类型
     *        []:说明这是个数组
     *        arr:数组名称
     *右边:
     *        new:为数组申请内存分配,开辟空间
     *        int:说明数组中的元素类型是int类型
     *        []:说明这是一个数组
     *        3:数组的长度,其实就是数组中元素的个数

    访问数组:

    数组名[索引]    //索引从零开始

    静态初始化

    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,......};
    数据类型[] 数组名 = {元素1,元素2,元素3,......};
    例如:
          int[] arr = new int[]{1,2,3};
          int[] arr = {1,2,3};

    Java中的内存分配

    Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

     

    栈 (存储局部变量)
    堆 (存储new出来的东西)
    方法区 
    本地方法区 (和系统相关)
    寄存器 (给CPU使用)

        栈:存储的是局部变量.局部变量就是定义在方法中的变量.使用完毕,立即回收.

        堆:存储的是new出来的东西,实体,对象.

          A.每一个对象都有地址值

          B.每一个对象的数据都有默认值

            byte,short,int,long   0

            float,double   0.0

            char 'u0000'

            boolean flase

            引用类型 null

          C.使用完毕后,会在垃圾回收器空闲的时候被回收

    int[] arr = new int[3];
    int[] arr2 = arr;
    arr2[0]=100;
    arr2[1]=200;
    arr2[2]=300;

     二维数组

    定义格式
    数据类型[][] 数组名;
    数据类型 数组名[][]; 不推荐
    数据类型[] 数组名[]; 不推荐
    初始化方式
    数据类型[][] 变量名 = new 数据类型[m][n];
    数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
    简化版格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};

    二维数组配合索引可以获取到每一个一维数组。

    每一个一维数组配合索引名可以获取到数组中的元素。

    假如二维数组名:arr
    获取一维数组:arr[索引]
    获取二维素组中的元素: arr[索引][索引]
  • 相关阅读:
    第二周课程进度
    Codeforces Round #479 (Div. 3) F. Consecutive Subsequence (简单dp)
    Codeforces Round #538 (Div. 2) C. Trailing Loves (or L'oeufs?) (分解质因数)
    Codeforces Round #162 (Div. 1) B. Good Sequences (dp+分解素数)
    Codeforces Round #552 (Div. 3) F. Shovels Shop (前缀和预处理+贪心+dp)
    桂林电子科技大学第三届ACM程序设计竞赛 G 路径
    Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)
    Codeforces Round #324 (Div. 2) (哥德巴赫猜想)
    Codeforces Round #244 (Div. 2) C. Checkposts (tarjan 强连通分量)
    Codeforces Round #207 (Div. 1) A. Knight Tournament (线段树离线)
  • 原文地址:https://www.cnblogs.com/aeolian/p/7726985.html
Copyright © 2020-2023  润新知