【第六天 数组的相关学习】 一维数组 二维数组 以及内存图

本文详细介绍了数组的概念,包括一维数组的特点、定义及初始化方式,并深入探讨了二维数组的定义格式及其遍历方法。此外,还提供了数组内存分布的基本知识。

前言

认真理解,反复练习

一、一维数组

   定义:存放同一种数据类型元素的集合,也可以看作是一个容器。

1. 特点

 (1)元素的数据类型一致,可以存放基本数据类型,也可以存放引用数据类型。
 (2)数组的长度是固定的。

2.数组的定义格式

  (1)数据类型[] 数组名; (推荐使用第一种)
  (2)数据类型 数组名[];

3.数组的初始化方式:

  (1)动态初始化:在定义时候只给定数组的长度,值是由系统默认给出的。
       语句定义格式:
       数据类型[] 数组名 = new 数据类型[元素的个数];
       举例:int[] arr = new int[3];
       表示的是定义一个长度为3并且元素是int类型的一维数组。
  (2)静态初始化:在定义的时候,就手动给出元素值。
       语句定义格式:数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2...};
       简化格式:数据类型[] 数组名 = {元素值1,元素值2...};

4.数组的遍历

  (1)获取的长度的属性:length
       使用格式:数组名.length

二、二维数组

1.定义:

 元素是由一维数组组成的数组

2.定义格式:

(1)定义格式一:
    数据类型[][] 数组名 = new 数据类型[m][n];
    m:表示的是有多少个一维数组
    n:表示的一维数组的元素个数
    举例:int[][] arr = new int[3][2];    
    表示的是定义一个有3个长度为2的一维数组组成的二维数组。

(2)定义格式二:
    数据类型[][] 数组名 = new 数据类型[m][];
    m:表示的是有多少个一维数组
    举例:int[][] arr = new int[4][];

(3)定义格式三:
            数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
            举例:int[][] arr = new int[][]{{1,2},{3,4,5},{1,2,34,5}};
    简化版格式:
            数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
            举例:int[][] arr = {{1,2},{3,4,5},{1,2,34,5}};
            表示的是:二维数组arr中有三个一维数组,分别是{1,2},{3,4,5},{1,2,34,5}

3.注意事项

 注意:
     1、以下几种写法也是二维数组
        数据类型[] 数组名[];
        数据类型 数组名[][];
     2、格式3不能与格式1、格式2混合使用。
        错误格式:int[][] arr = new int[2][]{{1,2},{3,1,2}};

需要掌握二维数组的遍历方式,结合着一维数组遍历方式去看

package com.shujia.wxl.day06;

/*
        二维数组遍历
        
        数加科技
            十三期
                小王,小李
            十四期
                小明,小刘,小张
            十五期
                小虎,小宇,小旺,小凯
            十六期
                小火,小杨,小爱,小周
 */
public class Array2Demo4 {
    public static void main(String[] args) {
        //定义一个二维数组表示是一个数加科技
        String[][] shujia = {{"小王", "小李"}, {"小明", "小刘", "小张"}, {"小虎", "小宇", "小旺", "小凯"}, {"小火", "小杨", "小爱", "小周"}};

        for (int i = 0; i < shujia.length; i++) {
//            System.out.println(shujia[i]);
            //外层循环遍历到的是每一个一维数组
            //要想获取每个一维数组中的元素,再进行一次for循环遍历
            System.out.println("第" + (i + 1) + "个数组:");
            for (int j = 0; j < shujia[i].length; j++) {
//                System.out.println(shujia[i][j]);
                if (j == shujia[i].length - 1) {
                    System.out.print(shujia[i][j] + "]");
                } else if (j == 0) {
                    System.out.print("[" + shujia[i][j] + ",");
                } else {
                    System.out.print(shujia[i][j] + ",");
                }
            }
            //每次内循环结束表示打印完一个一维数组,换行
            System.out.println();
        }
    }
}

三、数组内存图

1. JVM将内存划分成的5个部分,
(1)栈:局部变量和方法的调用
(2)堆:new出来的东西都在堆里面
(3)方法区(面向对象的时候讲解)
(4)本地方法区
(5)寄存器

内存图

 2. 数组动态初始化和惊静态初始化

在这里插入图片描述
在这里插入图片描述

3.定义两个数组
(1)定义两个数组并赋值
(2)定义两个数组共用一个地址

(1)在这里插入图片描述
(2)
在这里插入图片描述

  4.二维数组内存图

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值