关闭

Java数组及其内存分配

标签: Java数组Java数组内存分配Java数组理解Java数组初始化
2126人阅读 评论(0) 收藏 举报
分类:

几乎所有的程序设计语言都支持数组。Java也不例外。当我们需要多个类型相同的变量的时候,就考虑定义一个数组。在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静态的,所以想要使用就必须先初始化为数组对象的元素分配空间)。

1.数组的初始化方式及其内存分配

对于Java数组的初始化,有以下两种方式,这也是面试中经常考到的经典题目:

  1. 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如:
    1 //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为4
    2 String[] computers = {"Dell", "Lenovo", "Apple", "Acer"};  //①
    3 //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为3
    4 String[] names = new String[]{"多啦A梦", "大雄", "静香"};  //②
  2. 动态初始化:初始化时由程序员显示的指定数组的长度,由系统为数据每个元素分配初始值,如:
    1 //只是指定了数组的长度,并没有显示的为数组指定初始值,但是系统会默认给数组数组元素分配初始值为null
    2 String[] cars = new String[4];  //③

     

前面提到,因为Java数组变量是引用类型的变量,所以上述几行初始化语句执行后,三个数组在内存中的分配情况如下图所示:

Java数组及其内存分配

由上图可知,静态初始化方式,程序员虽然没有指定数组长度,但是系统已经自动帮我们给分配了,而动态初始化方式,程序员虽然没有显示的指定初始化值,但是因为Java数组是引用类型的变量,所以系统也为每个元素分配了初始化值null,当然不同类型的初始化值也是不一样的,假设是基本类型int类型,那么为系统分配的初始化值也是对应的默认值0。

对于多维数组,假设有这么一段代码:

1 int[][] nums = new int[2][2];2 nums[0][1] = 2;

那么他在内存中的分配情况如下:

Java数组及其内存分配

由上图可知,并没有真正的多维数组,它的本质其实是一维数组。




2
0
查看评论

java数组详解

1 数组 概念 同一种类型数据的集合。其实数组就是一个容器。 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素。 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度...
  • oguro
  • oguro
  • 2016-10-30 12:15
  • 19414

Java创建数组的几种方式

1、一维数组的声明方式: type[] arrayName; 或 type arrayName[];  附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不是type类型。建议不要使用第二种方式 下面是典型的声明数组的方式: ...
  • u014199097
  • u014199097
  • 2016-01-20 23:59
  • 83804

java数组定义及使用

java数组定义及使用 3.1数组 数组是一组相关数据的集合,数组按照使用可以分为一维数组、二维数组、多维数组 有点: 不使用数组定义100个整形变量:int1,int2,int3;;;;;; 使用数组定义 int i[100] 数组定义:int i[100],只是一个伪...
  • e421083458
  • e421083458
  • 2012-11-04 17:41
  • 18243

java中数组的三种定义方式

java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 /** * 数组的三种定义方法 * * 1.数组类型[] 数组名=new 数组类型[数组长度]; * 2.数组类型[] 数组名={数组0,数组1,数组2,数组3,....}; * 3.数组类...
  • Hadenhoo
  • Hadenhoo
  • 2016-08-08 22:02
  • 7836

java数组输出

java数组输出 输出一个数组中的元素,我们通常用for循环来做,比如: package test; public class Test { public static void main(String args[]){ int arr[]={1,2,3}; System.out....
  • cqnuztq
  • cqnuztq
  • 2013-12-24 19:30
  • 18554

Java创建数组的三种方式(及元素个数问题)

在网页编程里 length代表数组实际的长度 而不是定义时的长度。 在JAVA里数组的length只是数组定义时的长度, 而要获取数组中实际已赋值元素个数,要循环判断,没有现成的方法。
  • zengxiantao1994
  • zengxiantao1994
  • 2016-09-10 15:46
  • 2357

重新认识java(十一)---- java中的数组

面向对象的一些知识暂时告一段落,从本文开始,进入java语法的重学阶段~
  • qq_31655965
  • qq_31655965
  • 2017-03-08 21:14
  • 3127

java定义数组的三种类型

三种定义数组的格式如下: int[] arr1=new int[10]; int[] arr2={1,2,3,6}; int[] arr3=new int[]{1,2,3,4,5,6,7,22}; package 第四天; public class 数组 { public void s...
  • u012110719
  • u012110719
  • 2015-01-15 20:10
  • 86675

Java 数组的总结

Java数组 一.   概述 1.      定义: 数组是一种数据结构,用来存储同一类型值的集合。 2.      数组是存在下标索引的,通过下标可以获取指定位置的元素,数组小...
  • hua631150873
  • hua631150873
  • 2013-09-14 21:39
  • 2065

CoreJava总结

。 CoreJava总结: 1、 java语言概述 java语言特性——它是一种简单、面向对象、分布式、解释型、稳定、安全、结构中立、易移植、高性能、多线程的动态语言 jdk、jre、jvm GC 编码(.java)——编译(.class)——运行 代码安全 常见包:la...
  • mixiuali
  • mixiuali
  • 2012-11-10 19:31
  • 2342
    老铁们,支付宝扫一扫,领红包啦!
    扫一扫,红包是你的!对,你没看错,天天都有效,可以直接保存,天天扫,天天拿。不信?搞一哈,就造啦!!!
    个人资料
    • 访问:2632787次
    • 积分:22048
    • 等级:
    • 排名:第394名
    • 原创:332篇
    • 转载:82篇
    • 译文:4篇
    • 评论:1575条
    大 师 兄 说
    • 交流群:321964905(新建)
    • 我扣扣:1181415316
    • 我邮箱:cmshome@163.com
    • 我格言:"习惯就好"坑了多少人
    • 暂时在:帝都
    • 曾工作:成都
    • 我爱好:海贼王
    • 我爱好:英雄杀
    • 我家乡:济源市
    • 我爱好:写bug
    • 求求求:有问题就留言吧
    • 为啥呢:大师兄是一直在维护的
      你觉得本博文对你有用吗 有用,那就请点赞留言。 暂时没用,也请不要踩。
    博客专栏