JavaNote-数组

java中的数组是静态的,一旦数组初始化完成,数组元素的内存空间分配即结束,程序只能改变数组元素的值,而无法改变其长度。

java中的数组变量是一种引用类型的变量,数组变量并不是数组本身,它只是指向堆内存的数组对象,因此,可以改变一个数组变量所引用的数组,这样就可以造成数组长度可变的假象。

 1   @Test
 2     public void test1() {
 3         System.out.println("数组strs2的长度为" + strs2.length);//3
 4         // 将strs2 指向 strs1所引用的数组
 5         strs2 = strs1;
 6         System.out.println("数组strs2的长度为" + strs2.length);//4
 7         // 修改数组元素的值
 8         strs2[1] = "e";
 9         System.out.println("数组strs1的第2个元素:" + strs1[1]);//e
10     }

 

所有局部变量都是放在栈内存里保存,不管是基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈区中;但是引用类型变量所引用的对象(包括数组,普通java对象)则总是在堆内存中。

对于java语言而言,堆内存中的对象通常是不允许直接访问,而只能通过引用变量。

很容易混淆的是:引用类型变量何时只是栈内存中的变量本身,何时又变为引用实际的java对象。其实,引用变量本质上只是一个指针,只要程序通过引用变量访问属性,或者通过引用变量来调用方法,该引用变量将会由它所引用的对象代替。

示例如下:

 1   @Test
 2     public void test2() {
 3         // 定义一个int[]类型的数组变量
 4         int[] iArr = null;
 5         // 只要不访问iArr的属性和方法,程序完全可以使用该数组变量
 6         System.out.println(iArr);
 7         // 初始化数组
 8         iArr = new int[5];
 9         // 只有当iArr指向有效的数组对象后,才可以访问iArr的属性
10         System.out.println(iArr.length);
11     }

 

摘自------------------李刚:突破程序员基本功的16堂课

转载于:https://www.cnblogs.com/iyichen/p/3969325.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值