23、数组及其内存管理
来源:互联网 发布:淘宝刷访客软件 编辑:程序博客网 时间:2024/06/09 19:51
1、数组初始化
Java语言的数组变量是引用类型的变量,Java语言是典型的静态语言,当数组被初始化后,该数组所占的内存空间、数组长度都是不可变以的。Java程序中数组必须经过初始化才可使用。数组初始化有两种方式,分别为:静态初始化和动态初始化。两种方式不能同时使用。
(1) 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
String[] str = new String[]{"data0","data1","data2",};
(2) 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。String[] str = new String[3];
系统为数组元素分配初始值时,规则如下:(a) 数组元素的类型是基本类型中的整数类型(byte、short、int和long),则数组元素的值是0。
(b) 数组元素的类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0。
(c) 数组元素的类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'。
(d) 数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false。
(e) 数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null。
Java程序中的引用变量并不需要经过所谓的初始化操作,需要进行初始化的是引用变量所引用(指向)的对象,引用变量在声明的时候就已经在栈内存中创建,而引用变量所引用的对象是在初始化(new)时在堆内存中创建的。对数组执行初始化,其实并不是对数组变量执行初始化,而是在堆内存中创建数组对象,也就是为该数组对象分配一块连续的内存空间,这块连续的内存空间的长度就是数组的长度。
Java的局部变量必须由程序员赋初始值,当定义了局部变量的数组变量,程序必须对局部的数据变量进行赋值,即使将它赋为null也行。
所有局部变量都是放在栈内存里保存的,不管其是基本类型的变量,还是引用类型的变量。都是存储在各自的方法栈内存中;但引用类型的变量所引用(指向)的对象(包括数组、普通的Java对象)则总是存储在堆内存中。
引用变量本质上只是一个指针,只要程序通过引用变量访问属性,或者通过引用变量来调用方法,该引用变量就会由它所引用的对象代替。
2、数组应用
Java语言不允许直接访问堆内存中的数据,因此无法直接访问堆内存中的数据对象,只能通过数组引用变量来访问数组。多维数组:从某种意义上来讲,没有多维数组。
可以把N维数组当成数组元素是N-1维数组的一维数组。
Java允许将多维数组当成一维数组处理。初始化多维数组时可以先只初始化最左边的维数,此时该数组的每个元素都相当于一个数组引用变量,这些数组元素还需要进一步初始化。
- 23、数组及其内存管理
- 数组及其内存管理
- Java 数组及其内存管理
- java数组及其内存管理
- 数组及其内存管理——数组初始化
- 数组及其内存管理——使用数组
- Java中数组、对象及其内存管理、回收
- 对象及其内存管理
- Linux内存管理及其基本概念
- 24、对象及其内存管理
- Java对象及其内存管理
- Java数组及其内存分配
- Java数组及其内存分配
- Java数组及其内存分配
- l1 数组及其内存控制
- Java数组及其内存分配
- Java数组及其内存分配
- Java数组及其内存分配
- 序段前缀的字段含义
- 对于java线程的一些理解
- hpp文件介绍(摘自百度百科)
- Android中Paint字体属性的设置
- ASP.NET上传大文件的构想
- 23、数组及其内存管理
- 编辑文章 - 博客频道 - CSDN.NET
- iOS 获取应用程序缓存大小
- iOS应用的crash日志的分析基础
- MyEclipse+MySQL+Tomcat实现jsp登录 (struts)【Server 入门】
- C++第8周(春)项目1 实现复数类中的运算符重载 .(一)
- 约你在春里,谈一场花絮情缘
- SOA开源技术——Mule ESB介绍简介(ZT)
- 标准C++中的string类的用法总结