六、JAVA中的数组与内存划分(一)

六、JAVA中的数组

6.1 数组的概念与定义

数组,是一种容器,可以存放多个数据值。
数组的特点:

  1. 数组是一种引用数据类型。
  2. 数组当中的多个数据,类型必须统一。
  3. 数组的长度在程序运行期间不可改变。

数组的初始化:

  1. 动态初始化(指定长度)
  2. 静态初始化(指定内容)

动态初始化数组的格式:
数据类型[] 数组名称 = new 数据类型[数据长度]

解析含义:
左侧数据类型,也就是数组中保存的数据,全都是统一的类型;
左侧的中括号,代表创建的是一个数组;
左侧数组名称,数组的名字;
右侧的new,代表创建数组的动作;
右侧数据类型,必须与左侧数据类型一致;
右侧中括号的长度,指这个数组中可以装得下多少个数据,为int型。

静态初始化数组的基本格式:
数据类型[] 数组名称 = new 数据类型[]{元素1, 元素2, …};

注意事项:

  1. 虽然静态创建数组的时候没有直接指定长度,但是可以根据大括号中内容推长度。

静态初始化数组的省略格式:
数据类型[] 数组名称 = {元素1, 元素2, 元素3, … };

注意事项:

  1. 虽然静态创建数组的时候没有直接指定长度,但是可以根据大括号中内容推长度。
  2. 静态创建数组标准格式可以分为两个步骤。
  3. 动态创建数组标准格式可以分为两个步骤。
  4. 静态创建数组省略格式不可以分为两个步骤。

使用建议:

  1. 如果不确定数组当中的具体内容,使用动态初始化;否则,当已经确定了具体的内容,使用静态初始化。
package Code_20191026.Demo03;

public class Demo01Array{
    public static void main(String[] args) {
        //  动态初始化数组的格式
        // 创建一个数组,存放300个Int型的数据
        // 数据类型[] 数组名称 = new 数据类型[数据长度]
        int[] arrayA = new int[300];
        
        // 创建一个数组,存放10个double型的数据
        double[] arrayB = new double[10];

        // 创建一个数组,存放5个字符串
        String[] arrayC = new String[5];

        // 静态初始化数组的标准格式
        // 数据类型[] 数组名称 = new 数据类型[]{元素1, 元素2, ...};
        // 直接创建数组,值为1,2,3
        int[] arrayD = new int[] {1, 2, 3};

        // 创建数组,装入字符串:'Hello','world','java'
        String[] arrayE = new String[]{"Hello","world","java"};
        
        // 静态初始化数组的省略格式:
        // 数据类型[] 数组名称 = {元素1, 元素2, 元素3, ... };
        int[] arrayF = {1, 2, 3};

        // 静态初始化数组的标准格式,分成两个步骤:
        int[] arrayH;
        arrayF = new int[] {1, 2, 3};

        // 动态初始化数组的标准格式,分成两个步骤:
        int[] arrayI;
        arrayF = new int[3];
    }
}

emmm,在记笔记的时候,我发现这个软件的颜值是真的高,看起来是真的舒服。
在这里插入图片描述

6.2 数组取值

访问静态创建的数组元素:

  1. 直接打印数字名称:得到的是数组对应的,内存地址哈希值,即数组首地址。
    [I@470e2030 :[:代表为数组类型,I:代表内容为int型,@+后面的:为一个十六进制,是数组的首地址。

  2. 输出数组单个元素

  3. 将数组中元素赋值给变量

索引值,就是一个int数字,代表数组当中元素的编号。
注意:编号从0开始,到“数组长度-1”结束。

访问动态创建的数组元素:

  1. 动态初始化数组的时候,其中的元素将会被设为默认值,默认值规则如下:
    整数类型,默认为0;
    浮点类型,默认为0.0;
    字符类型,默认为‘\u0000’,打印时看不见;
    布尔类型,默认为false;
    引用类型,默认为null。
  2. 访问方式:数组名称[编号];
  3. 赋值方式:数组名称[编号] = 数字;

注意事项:

  1. 静态初始化也有默认值,但是会被覆盖为设定值。
package Code_20191026.Demo03;

public class Demo02ArrayUse{
    public static void main(String[] args) {
        // 静态创建数组
        int[] arrayA = {10, 20, 30};

        // 直接打印数字名称,得到的是数组对应的,内存地址哈希值。
        System.out.println(arrayA);  

        // 输出数组单个元素
        System.out.println(arrayA[0]);  

        // 将数组中元素赋值给变量
        int num = arrayA[1];
        System.out.println(num);  

        /*---------------------------*/
        // 静态创建数组
        int[] arrayB = new int[3];
        arrayB[1] = 123;
        System.out.println(arrayB[0]);  
        System.out.println(arrayB[1]);  
    }
}
[I@470e2030
10
20
0
123

6.3 JAVA中的内存划分

JAVA中的内存划分:
内存来源:内存条
JAVA申请的内存被划分为五个部分:

  1. 栈(Stack):存放的都是方法中的局部变量
    局部变量:方法的参数,或方法{ }内部的变量;
    作用域:一旦超出作用域,立刻从栈内存中消失。

  2. 堆(Heap):凡是new出来的东西,都在堆中
    堆内存里的东西都有一个十六进制的地址值;
    堆内存里的数据,都有默认值。

    整数    0
    浮点数  0.0
    字符    ‘\u0000’
    布尔    false
    引用    null
    
  3. 方法区(Method Area):储存 .class 相关信息,包含方法的信息。

  4. 本地方法栈(Native Method Stack):与操作系统相关。

  5. 储存器(pc Register):与PC相关。

本节内容就这些了, 欢迎关注我的微信公众号与我联系。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值