欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时26:数组引用传递分析

程序员文章站 2024-02-26 18:45:22
...

通过数组的基本定义可以发现,在数组使用的过程之中依然需要关键字new进行内存空间的开辟,同理,那么这里面也一定存在有内存的关系匹配。
范例:定义一个简单代码

public class ArrayDemo {
	public static void main (String args []) {
		// 使用数组的静态初始化
		int data [] = new int [3] ;
		data [0] = 10 ; // 为数组设置内容
		data [1] = 20 ; // 为数组设置内容
		data [2] = 30 ; // 为数组设置内容
		for (int x = 0; x < data.length; x ++){
			System.out.println(data[x]) ;
		}
	}
}

以上面的程序为例下面要进行一次内存的简单分析。
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时26:数组引用传递分析
但是数组本身毕竟是属于引用数据类型,那么既然是引用数据类型,就一定会发生引用传递,引用应该还是按照传统的方式那样:一个堆内存可以被多个栈内存所指向。
范例:观察数组引用

public class ArrayDemo {
	public static void main (String args []) {
		int data [] = new int [] {10,20,30} ; // 静态初始化
		int temp [] = data ; // 引用传递
		temp [0] = 99 ;
		for (int x = 0; x < data.length; x ++){
			System.out.println(data[x]) ;
		}
	}
}

下面通过此程序进行内存分析。
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时26:数组引用传递分析
由于数组属于引用类型,所以一定要为其开辟内存空间之后才可以使用,如果现在使用了未开辟堆内存空间的数组则一定会出现“NullPointerException”异常。

public class ArrayDemo {
	public static void main (String args []) {
		int data [] = null ;
		System.out.println(data[0]) ;
	}
}

必须提供有实例化对象才可以使用数组的操作形式进行数组的操作。