DAY15 数组元素访问,内存分配,静态初始化

一. 数组元素访问:
1.什么是索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。
这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。


2.访问数组元素格式

数组名[索引];

 

3.示例代码

package com.itheima.array;
public class Demo3ArrayIndex {
/*
数组动态初始化:
初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值.
数组的元素访问格式:
数组名[索引]
索引: 数组中数据的编号方式, 编号从0开始
作用: 访问数组容器中的空间位置
注意:
数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值.
*/
  public static void main(String[] args) {
    int[] arr = new int[3]; // 0 1 2
    System.out.println(arr); // 数组变量名记录的是数组在堆中的内存地址,数组的内存地址 [I@10f87f48
  // 数组名[索引] 访问数组容器中的空间位置
    System.out.println(arr[0]); // 0 系统自动分配的默认初始化值
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    System.out.println("--------------");
    // 数组名[索引]
    arr[0] = 11;
    arr[1] = 22;
    arr[2] = 33;
    System.out.println(arr[0]);
    System.out.println(arr[1]);
    System.out.println(arr[2]);
  }
}

 

二.内存分配:
1.内存概述:
内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。
必须放进内存中才能运行,运行完毕后会清空内存。
Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

2.java中的内存分配:
目前我们只需要记住两个内存,分别是:栈内存和堆内存

区域名称 作用
寄存器 :给CPU使用,和我们开发无关。
本地方法栈: JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区: 存储可以运行的class文件。
堆内存: 存储对象或者数组,new来创建的,都存储在堆内存。
方法栈: 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

 

 

                                                                                                            通过数组变量名记录的地址在堆内存中找到内存空间,通过索引找到具体的值

 两个数组内存图

 

 

 多个数组指向相同内存图

 

 

 

 

 

三. 数组的静态初始化:
1. 什么是静态初始化
在创建数组时,直接将元素确定


2. 静态初始化格式;
完整版格式:

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};

 简化版格式

数据类型[] 数组名 = {元素1,元素2,...};这只是简化了new及后面的部分语句,对于编译器而言,会自动给你补上new及后面的部分语句,所以也会在堆中创建一片内存空间,产生内存地址

 

3.两种初始化的区别:

动态初始化:手动指定数组的长度,由系统自动产生默认初始化值

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度

使用场景:

动态初始化:只明确元素个数,不明确具体数值,推荐使用动态初始化

例:使用数组容器来记录键盘录入的5个整数

静态初始化:

需求当中已经明确了要操作的具体数据,直接静态初始化即可

例:将一班学生的成绩存入数组当中 85 86 87

posted @ 2021-08-06 20:11  北冥有鱼要继续奋斗  阅读(64)  评论(0编辑  收藏  举报