(一)Java数组与内存控制

本文详细介绍了Java中数组的初始化方式,包括静态初始化和动态初始化。并解释了Java数组的特性,如数组变量作为引用类型存储在栈内存中,而数组对象则存储在堆内存中。此外还展示了不同数据类型数组初始化的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组初始化

数组是绝大多数编程语言都会提供的一种复合结构。如果程序中需要多个相同类型的变量时,可以定义一个数组。

Java语言的数组变量是引用类型的变量。


1、Java数组初始化方式:

这里所说的初始化是指:为数组对象的元素分配内存空间,并为数组元素指定初始值。

java是一种静态语言,因此java数组是静态的。所以当数组被初始化之后,该数组的长度不可变。

Java数组的初始化方式有两种:
  • 静态初始化:显示指定数组元素初始值,由系统决定数组长度。
  • 动态初始化:给出数组长度,由系统为数组元素分配初始值。
进行动态初始化时,系统将为数组元素分配初始值,规则如下:

整型:byte\short\int\long  初始值是0
浮点型:float\double       初始值是0.0
字符类型:char              初始值是'\u0000'
布尔类型:boolean          初始值是false
引用类型:类、接口、数组    初始值是null

示例代码如下:
 
package com.beijng.array;

public class InitArray {

	public static void main(String[] args){
		
		//静态初始化
		String[] a = {"shanghai","beijing","henan"};
		
		//静态初始化
		String[] b = new String[]{"11","22"};
		
		//动态初始化
		String[] c = new String[4];
		
		System.out.println("a数组的长度="+a.length);
		System.out.println("b数组的长度="+b.length);
		System.out.println("c数组的长度="+c.length);
	}
}

--------------------------------------------------------------
结果如下:
a数组的长度=3
b数组的长度=2
c数组的长度=4
 
 
注意:(1)Java的数组变量是引用类型的变量,数组变量并不是数组本身,而是指向堆内存中的数组对象。

可以改变一个数组变量的指向。

(2)关于初始化:对于数组变量,它并不需要进行所谓的初始化,只要把数组变量指向一个有效的数组对象即可使用

数组变量。对于Java中的所有的引用变量,都不需要进行初始化操作,只是该引用变量所引用的对象需要进行初始化操

作。如:对象的引用变量不需要进行初始化,对象本身才需要初始化。

(3)关于数组变量内存:数组变量是引用变量,通常存放在栈内存中,而数组对象是保存在堆内存中的连续内存空

间,初始化数组对象就是为该数组对象分配一块连续的内存空间。

2、基本类型数组的初始化:

过程是程序先为数组分配内存空间,然后将数组元素的值存入内存。
 
package com.beijng.array;

public class InitArray2 {

	public static void main(String[] args) {
		
		//定义int[]类型的数组变量,此时该变量并未指向任何有效内存
		int[] intArray;
		
		//静态初始化数组,上述变量指向该数组对象的内存
		intArray = new int[]{1,2,3,4,5};
	}

}

注意:(1)所有局部变量都是放在栈内存中保存的,不管是基本类型的变量还是引用类型的变量,都是存储在各自的

方法栈中。

(2)但是引用类型变量所引用的对象,如数组,Java对象等则总是存储在堆内存中。堆内存中的对象通常不允许直接

访问,只能通过引用变量访问。

(3)容易迷惑的是:引用类型变量什么时候是栈内存中变量本身,什么时候又是其所引用的实际的堆内存中的对象

呢?如上述程序:intArray本质上只是main方法栈区中的引用变量,但是当遇到intArray.length或

者intArray[3]时,系统就会自动变为访问堆内存中的数组对象。

其实容易区分:引用变量类似于C语言的指针,虽然说Java是没有指针的,但我觉得Java语言却是"处处都是指针"。

只要程序通过引用变量访问属性或者调用方法,该引用变量就会被它所引用的对象代替。

3、引用类型数组的初始化:

引用类型数组,其数组元素是引用类型的变量,它指向另外一块内存。

只要在已有数据类型之后增加方括号,就会产生一个新的数组类型,数组元素都可以看做是变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值