java中数组问题,Java中 数组的问题分析

*/

public class ArrayTest01 {

public static void main(String[] args) {

//采用静态初始化方式初始化第一个数组

String[] books=new String[]{

"疯狂Java讲义",

"Java从入门到精通",

"java项目实战",

"java程序员必看书"

};

//采用静态初始化的简化形式初始化第二个数组

String[] names={

"孙悟空",

"猪八戒",

"白骨精"

};

//采用动态初始化的语法初始化第三个数组

String[] strArr=new String[5];

//访问三个数组的长度

System.out.println("第一个数组的长度为:"+books.length);

System.out.println("第二个数组的长度为:"+names.length);

System.out.println("第三个数组的长度为:"+strArr.length);

/*

* main栈区:strArr、names、books

* 堆内存:strArr(null,null,null,null,null)

* names(孙悟空、猪八戒、白骨精)

* books(疯狂Java讲义、Java从入门到精通、java项目实战、java程序员必看书);

* */

//让books数组变量,strArr数组变量指向names所引用的数组

books=names;

strArr=names;

System.out.println("-----------hujiangjun程序运行答案区--------------");

System.out.println("books数组的长度:"+books.length);

System.out.println("strArr数组的长度:"+strArr.length);

//改变books数组所引用的数组的第二个元素值

books[1]="唐僧";

System.out.println("names数组的第二个有元素是:"+books[1]);

System.out.println("-------------------------------------------------");

/*

* 当访问books数组、strArr数组的长度时,输出的结果都是:3。这很容易造成一个假想:books数组从4变到了3.实际上

* 数组本身的长度并没有改变,变的是books数组变量。books数组变量原本指向堆内存下面的数组,当执行了books=names;

* 语句之后,books数组将改为指向堆内存中的数组,而原来books变量所引用的数组长度依然是4;

* 原来books变量所引用的数组长度依然是4,但不再有任何引用变量引用该数组,因此它将会变成垃圾,等着垃圾回收机制

* 来回收,此时,程序使用的books、names和strArr这三个变量时,将会访问同一个数组对象,因此把books数组的第2个元素

* 赋值为"唐僧"时,names数组的第2个元素的值也会随之改变。

* */

}

}

相关截图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值