int[] values = new int[5];
int[] biggerArray = new int[10];
int nextIndex = 0;
...
if (nextIndex > = values.length) {
values = biggerArray;
}
如上,为什么长度小的数组可以指向长度大的数组?
知道的请详细解说,不胜感激
int[] biggerArray = new int[10];
int nextIndex = 0;
...
if (nextIndex > = values.length) {
values = biggerArray;
}
如上,为什么长度小的数组可以指向长度大的数组?
知道的请详细解说,不胜感激
解决方案 »
- Java创建文件出错:Error - java.io.IOException: No such file or directory
- JScrollpane的问题
- SAXParser解析XML时非法字符的问题
- 求教java输入语句
- 求APPLET+SERVLET之间通讯简单DOME
- Java的跨平台是不是说用Java写的程序代码不需要修改就可以在各种操作系统平台下运行?它与C++/C的跨平台有什么不同之处?
- 访问一个JButton数组时,出现 NullPointerException ,请帮忙 (附程序)
- 在JAVA里面要如何才能调用外部命令???
- 为什么我在jFrame里面用到setCursor()没什么问题,在写一个applet时就死也不成功???请看看!
- 有一个项目,客户端需要用APPLET开发,请问如何从远程数据库读出数据,并显示出来
- 紧急!!!关于public String readLine() 的退出循环问题。解决就结贴
- 请问如何在文本区里选定文本内容改变字体或者颜色!类似WORD里的功能!
好比:ABCDE代表5个内存单元,0123456789代表10个内存单元;当然可以让values重新指向biggerArray所代表的内存单元,因为values中的ABCDE分别对应了biggerArray中的相应内存单元(01234),biggerArray多余的内存地址不会被赋给alues,不会出现内存单元中的地址为空的情况。故(小->大)没有问题。
如果要让10个内存单元对应到5个内存单元上的话,就会出现多余的内存单元没有被对应上,而出现空的情况。故(大->小)有问题。
values 是一个对象的引用,他应该指向一个内存的对象。
new int[5] 是一个真正的对象,它占用了内存的5个int大小的地址values = new int[5]; 表示 value 指向了这个对象,比如,还有如下的语句
int[] values2 = values;
此时,并不是 values 和 values 自己相同,而是 values2 和 values 指向了同一个对象而以如果执行
values=null;
此时 values 不再指向任何对象了,而values 依然指向了那个 new int[5] 的对象。总结一下:
java中的变量可以理解为是一种带类型的指针,它可以指向任何一个类型相同的实际内存对象或其子类。
变量不存在什么大到小和小到大的问题,因为它只是一个指向对象的指针而以。至于1楼说的,大到小可能引起的问题,那时程序设计上的逻辑问题,不是java语言的问题。
原来帖子中的values只是一个引用(reference),它可以指向任何大小的int型的数组,它原来指向长度为5的数组,当然后来也可以再次指向长度为10的数组,只不过原来长度为5的数组再也不能引用到而已(JVM好像会处理掉这种东西不会再被引用到的对象实体)
int[] biggerArray = new int[10];
values和biggerArray是变量名,存放的是指向的int数组的地址.
可以相互赋值的