Java数组(基本+内存分析)
一、数组概念
数组即为多个相同数据类型数据的数据按一定顺序排列的集合。
二、数组的特点
1、数组有数组名、索引、元素、素组长度;
2、数组的元素可以是基本数据类型也可以是引用数据类型;
3、数组的长度一旦确定便不可更改;
4、数组的在内存中表现为连续的存储单元,数组名引用的是首地址;
三、数组分类
按照维度分可以分为一维数组和多维数组;按照元素类型分可以分为基本类型元素数组和引用数据类型元素数组。
四、初始化默认值

五、一维数组
初始化
1、动态初始化:动态初始化便是数组声明和赋值分别进行。例如:
int array[] = new int[3]; array[0] = 1; array[1] = 2; array[2] = 3;
2、静态初始化:动态初始化便是数组声明和赋值同时进行。例如:
int []array = {1,2,3,4,5};
内存分析
内存结构简图:

用以下代码分析内存:
int []id = new int[3]; id[1] = 12; id[2] = 56; id[3] = 45;
定义数组后:

数组赋值以后:

从上不难看出:当创建一个数组是(即new一个数组),首先在栈空间出现数组名,在堆空间开辟出连续的存储空间,并且数组名指向连续存储空间的首地址,存储空间的存储值均为默认值。
六、二维数组
概述
上文中提到,数组的元素数据类型可以为基本数据类型和引用数据类型,一维数组中元素就是基本数据类型数据,例如int、double等;而二维数组实际上就是将一维数组的元素由基本数据类型变为了引用数据类型,在一维数组中在存入数组,所以从根本来看,不存在二维数组。
初始化
1.1、动态初始化格式一:
int [][]array = new int[3][2];
实际上即使有一个一维数组(也可以理解为三个一维数组),数组有三个元素,这三个元素均为数组,且数组均存了两个元素;图示如图:

1.1、动态初始化格式二:
int [][]array = new int[3][];
这里与方式一不同,方式一是一维数组的三个元素均为数组,而这里三个元素均为null,可以对每个一维数组进行初始化:
array[0] = new int[3]; array[1] = new int[6]; array[2] = new int[8];
内存分析
二维数组的内存实则和一维数组没有本质区别。只是将一维数组存的数据改为了另一个数组的首地址。
Java数组(基本+内存分析)的更多相关文章
- 【Java线程与内存分析工具】VisualVM与MAT简明教程
目录 前言 VisualVM 安装与配置 本地使用 远程监控 MAT 使用场景 安装与配置 获得堆转储文件 分析堆转储文件 窥探对象内存值 堆转储文件对比分析 总结 前言 本文将简要介绍Java线程与 ...
- Java数组以及内存分配
Java数组以及内存分配 什么数组(简) 数组初始化 动态初始化 静态初始化 内存分配问题(重) 数组操作的两个常见小问题 什么是数组: 定义格式: 数组类型 [] 数组名 ; 如:常用格式,其他方式 ...
- Java数组的内存管理
Java数组的内存管理 Java语言是典型的静态语言,因此Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java程序中的数组必须经初始化才能使用.所谓初始化,就是当数组对象的元 ...
- Java数组和内存控制
1.数组初始化 1.1 Java数组是静态的 Java语言是典型的静态语言,因此Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java程序中的数组必须经初始化才可使用.所谓初始 ...
- Java数组及其内存分配
几乎所有的程序设计语言都支持数组.Java也不例外.当我们需要多个类型相同的变量的时候,就考虑定义一个数组.在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静 ...
- java数组与内存控制
1.1数组的初始化 数组是大多数编程语言都提供一种的复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.java语言的数组变量时引用类型的变量,因此具有java独有的特性. java数 ...
- java执行程序的内存分析系列专栏
近段时间研究了java的程序执行过程中的内存分配,收获颇多,解决了我最近时间学习java的很多困惑点.写java内存分析系列的目的主要有两个,一来是希望给像我一样的java初学者一定的启发,希望也能解 ...
- java执行程序的内存分析系列专栏二之static变量和方法内存分析
昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能 ...
- Java内置内存分析
Java内存分析 package com.chao.reflection; public class Test05 { public static void main(String[] args) { ...
- Java数组分配内存空间
分配内存空间 数组名=new 数据类型[数组长度]: new关键字用来实现为数组或对象分配内存 数组具有固定的长度.获取数组的长度: 数组名.length 定义数组+分配内存空间 数据类型[]数组名= ...
随机推荐
- git常用命令(部分)
git常用命令 1.git init 初始化一个新本地仓库,它在工作目录下生成一个名为.git的隐藏文件夹. 安装好git的,新建一个文件夹,在空文件夹中鼠标右击点击Git Bash Here 2.g ...
- AcWing 走廊泼水节 题解
这道题大致题意就是让一棵树任意两点有连边(也就是完全图),但是补完后最小生成树是一开始的那棵树,问最小加的边权之和是多少. 了解题意后,我们可以想到用Kruskal(废话),当每两个集合合并的时候,除 ...
- tkinter的控件
包含如下控件: Button 按钮控件 Canvas 画布控件,显示图形元素如线程或文本 Checkbutton 多选框控件,用于在程序中提供多项选择框 Entry 单行输入控件,用于显示简单的文本 ...
- python数据类型的72变
输入数据的类型 input函数接收的数据默认为字符串类型 转换函数 通过转换函数实现接收其他类型的数据 1.接收整数:字符串→整型数据: int("整数格式的字符串") 2.接收小 ...
- 如何利用.NETCore向Azure EventHubs准实时批量发送数据?
最近在做一个基于Azure云的物联网分析项目: .netcore采集程序向Azure事件中心(EventHubs)发送数据,通过Azure EventHubs Capture转储到Azure Blog ...
- 在执行 pip install 时遇到错误:python setup.py egg_info ...
最近重新安装win10 64位专业版, 正好遇到python3.8发布,试了一下.结果jupyter都安装不了...心碎. ERROR: Command errored out with exit s ...
- 通过原生js对DOM事件的绑定的几种方式总汇
在网页开发中经常会有交互操作,比如点击一个dom元素,需要让js对该操作做出相应的响应,这就需要对Dom元素进行事件绑定来进行处理,js通常有三种常用的方法进行事件绑定:在DOM元素中直接绑定:在Ja ...
- 创建虚拟机和安装centos7 & install oracle
win7 x64位+VMware12+centos7 x64位+oracle 11g R2安装详解(一) 一.虚拟机安装oracle11g R2的安装环境: 1.win7 x64位 ...
- NameNode是如何存储元数据的?
1.NN的作用 保存HDFS上所有文件的元数据! 接受客户端的请求! 接受DN上报的信息,给DN分配任务(维护副本数)! 2.元数据的存储 元数据存储在fsiamge文件+edits文件中! fsim ...
- 北航2018级算法期末上机实录随笔1st
简单记录下题目类型和做题情况,理性复习同时也希望提供一些参考 题目描述 共计八个题目,按照助教的划分,题目分类如下 一个签到(二分查找),两个板子(活动选择.KMP(洛谷kmp模板题)),一个板子变形 ...