美文网首页
关于数组的思考

关于数组的思考

作者: kill_ec94 | 来源:发表于2019-08-29 12:06 被阅读0次


1.数组在jvm中是如何存放的?

首先数组也是一种对象,那这个对象的引用是放在栈内存中,而真正new出来的对象是存在堆内存中;那么对象中的每个元素,也就是数组中的每个元素,这个值我个人感觉应该是存在堆内存中也有的。

public class Arrays {

   public static void main(String[] args) {

       int[] array = new int[3];

       array[1] = 100;

       array[0] = 50;

       array[2] = 200;

       new Thread(new Runnable() {

           @Override

           public void run() {

               System.out.println(array[0]);

           }

       }).start()

   }

}

以上面这个为例,我看了下它反编译出来的字节码文件:

L0

    LINENUMBER 12 L0

    ICONST_3

    NEWARRAY T_INT

    ASTORE 1

  L1

    LINENUMBER 14 L1

    ALOAD 1

    ICONST_1

    BIPUSH 100

    IASTORE

  L2

    LINENUMBER 15 L2

    ALOAD 1

    ICONST_0

    BIPUSH 50

    IASTORE

  L3

可以看到,这个200是属于操作数栈内存中的变量,但是最终是会存储回这个数组元素当中。另外,在新线程中也可以取出这个数组元素的值,如果只是放在栈内存中的话,线程之间并不共享,新线程也是应该取不到的。

2.关于 arraycopy方法

为什么这个要用个native方法实现呢?在我个人理解来看,就是new一个新数组,然后for循环遍历就可以了。

相关文章

  • 关于数组的思考

    1.数组在jvm中是如何存放的? 首先数组也是一种对象,那这个对象的引用是放在栈内存中,而真正new出来的对象是存...

  • 关于数组安全的思考

    项目上线有一段时间了,从崩溃日志统计来看,问题主要还是集中在数组越界,因为项目是2个人写的,我并没有时间看summ...

  • (8)关于数组反射的基本使用

    在写这一篇文章之前,关于数组的反射的操作有了解多少 思考一下:如何知道一个对象为一个数组,如何获取数组中的单元的类...

  • 关于js数组元素打乱的简单思考

    引子 今天遇到一个需求,js实现时需要打乱数组元素以达到随机效果。php中有专门的shuffle函数实现这个功能,...

  • 浅谈JS数组以及Array构造函数

    一.关于数组 1.什么是数组 ①,数组的数据类型是Object,也就是说数组是对象。 ②,数组...

  • 关于数组

    数组的创建 数组的小方法 常用方法 1、清空一个数组 2、删除数组中的偶数 3、数组去重

  • 关于数组

    数组方法里push、pop、shift、unshift、join、split作用整理。 push与pop可以当成一...

  • 关于数组

    为什么大多数编程语言中,数组要从 0 开始编号,而不是从 1 开始呢? 其实拿到这个问题的时候,我都很惊讶,为啥我...

  • C语言第六部分

    本篇博客的主要知识点是: 68数组的基本用法 68数组的特点01 68数组的特点02 69二维数组 70数组思考练...

  • Python|Numpy数组基础知识

    关于Numpy基本的数组操作有: 数组的属性数组的大小、形状、储存大小、数据类型 数组的索引获取和设置数组各个元素...

网友评论

      本文标题:关于数组的思考

      本文链接:https://www.haomeiwen.com/subject/pbsvectx.html