第11天学习Java的笔记(数组注意事项)

39天

Java的内存划分

主要分为以下5个部分:

1.栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。

​ 局部变量:方法的参数,或者是方法{}内部的变量。

​ 作用域:一旦超出作用域,立刻从栈内存当中消失。

2.堆(Heap):凡是new出来的东西,都在堆当中。

​ 堆内存里面的东西都有一个地址值:16进制

​ 堆内存里面的数据u,都有默认值,规则:

​ 如果是整数 默认为0

​ 如果是浮点数 默认为0.0

​ 如果是字符 默认为‘\u0000’

​ 如果是浮点数 默认为false

​ 如果是浮点数 默认为null

3.方法区(Method Area):存储.class相关信息,包含方法的信息。

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

5.寄存器(pc Register):与CPU相关。

一个数组的内存图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5dqYdK1O-1607311649531)(F:\Java\Learn\day11\day11.assets\image-20201207093427628.png)]
在这里插入图片描述

两个数组的内存图

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWEQVfJc-1607311649535)(F:\Java\Learn\day11\day11.assets\image-20201207100123717.png)]

两个数组共同指向一个内存空间

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0u8uAZ3-1607311649536)(F:\Java\Learn\day11\day11.assets\image-20201207102211520.png)]

数组索引越界异常

package day1101;

/*
* 数组得索引编号从0开始,一直到“数组得长度-1”为止
*
* 如果访问数组元素得时候,索引编号并不存在,那么将会发生
* 数组索引越界异常
* ArrayIndexOutOfBoundsExceptions
* 原因:索引编号写错了
* 解决:修改成为存在得正确索引编号* */

public class Demo01ArrayIndex {
    public static void main(String[] args) {
        int[] array = { 15, 25, 35 };
        System.out.println(array[0]);//15
        System.out.println(array[1]);//25
        System.out.println(array[2]);//35
        //System.out.println(array[3]);//报错超出索引范围
    }
}

空指针异常

package day1101;

/*所有的引用类型变量,都可以赋值为一个null值,但是代表其中什么都没有
*
* 数组必须进行new初始化才能使用其中的元素。
* 如果只是赋值了一个null,没有进行new创建,
* 那么将会发生;
* 空指针异常NullPointerException
*
* 原因:忘了new
* 解决:补上new
* */

public class Demo01ArrayNull {
    public static void main(String[] args) {
        //int[] array;
        //array  = new int[3];
        //System.out.println(array[0]);//没有new的话Variable 'array' might not have been initialized

        int[] array = null;
        array = new int[3];
        System.out.println(array[0]);//空指针异常    0
    }
}

获取数组的长度

package day1101;
/*
* 获取数组长度的格式:
* 数组名称.length
* 这将会得到一个int数字,代表数组的长度
*
* 数组一旦创建,程序运行期间,长度不可改变
* */
public class Demo03ArrayLength {
    public static void main(String[] args) {
        int[] arrayA = new int[3];
        int[] arrayB = { 10, 20, 30, 40};
        System.out.println(arrayA.length);//3
        System.out.println(arrayB.length);//4

        int[] arrayC = new int[5];
        System.out.println(arrayC.length);//5
        arrayC = new int[7];
        System.out.println(arrayC.length);//7
    }
}

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crYJYVje-1607311649540)(F:\Java\Learn\day11\day11.assets\image-20201207111226752.png)]

数组长度的不可变说的是,只要在堆里面创建了new了新的数组,就是新的不可以改变,但是左边的数组的引用是可以改变的。

遍历数组

package day1101;

/*
 * 遍历数组,说的就是对数组当中的每一个元素进行逐一,挨个儿处理,默认的处理方式就是打印输出。
 * */
public class Demo04Array {
    public static void main(String[] args) {
        int[] array = {10, 20, 30, 40};
        for (int i = 0; i < array.length; i++) {
            System.out.println("第" + i + "个元素为:" + array[i]);
        }
        //可以通过输入array.fori来出现上述for循环
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值