用C++的语法理解Java的数组操作

public class mainClass
{
	public static void main(String[] args)
	{
		int a[] = new int[100];	//动态初始化创建一个数组a,new的方式,a实际上就是个指针数组,指针在栈中,指针所指的数据在堆中
		int b[] = {2,3,4};		//简化的静态初始化创建了一个数组b,实际与a情况一样,区别在于动态初始化分配数组大小系统设置初始值,静态初始化分配元素系统根据元素数量设置大小
//		int b[] = new int[] {2,3,4};   //这里是非简化的静态初始化
		System.out.println("初始数组a的内存:" + a.hashCode());
		System.out.println("初始数组b的内存:" + b.hashCode());
		a = new int[] {4,5,6};	//new了一个匿名数组,将该匿名数组内存首位置的指针传递给a(单独使用数组首位即表指针),原a数组的内存进入垃圾回收,取而代之匿名数组的地址
		b = new int[] {4,5,6};	//new了一个匿名数组,将该匿名数组内存首位置的指针传递给b(单独使用数组首位即表指针),原b数组的内存进入垃圾回收,取而代之匿名数组的地址
		System.out.println("new int后a的内存:" + a.hashCode());
		System.out.println("new int后b的内存:" + b.hashCode());
		a = b;					//b的指针值赋值给了a,所以a与b将共享同一内存地址
		System.out.println("b值传递给a后a的内存:" + a.hashCode());
		System.out.println("b值传递给a后b的内存:" + b.hashCode());
		a = Arrays.copyOf(a, a.length);		//CopyOf相当于重新new了一个新的数组,所以a的地址会变成新的
		System.out.println("a在CopyOf自身后a的内存:" + a.hashCode());
		System.out.println("a在CopyOf自身后b的内存:" + b.hashCode());
	}
}
执行结果

初始数组a的内存:925858445
初始数组b的内存:798154996
new int后a的内存:681842940
new int后b的内存:1392838282
b值传递给a后a的内存:1392838282
b值传递给a后b的内存:1392838282
a在CopyOf自身后a的内存:523429237
a在CopyOf自身后b的内存:1392838282
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸间沧海桑田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值