1.对于引用自同一个数组的不同数组对象,如果其中一个改变了它的元素,则另外一个引用的对象和被引用的数组本身也相应地跟着改变. 如下例:
package jie.com;
public class AdvanceArray {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={1,2,3,4,5};
int[] tmp1=arr;
int[] tmp2=arr;
for(int i=0;i<tmp1.length;i++)
{
System.out.print(tmp1[i]+" ");
}
System.out.println();
for(int i=0;i<tmp2.length;i++)
{
System.out.print(tmp2[i]+" ");
}
System.out.println();
tmp1[3]=9;
for(int i=0;i<tmp2.length;i++)
{
System.out.print(tmp2[i]+" ");
}
System.out.println();
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
}
}
2.不可以用==来比较两个数组的元素值是否相等. 使用==比较对象时,是用来 测试比对两个对象名称是否引用自同一个对象,也就是
测试两个对象名称是否绑定至同一个对象. 如下例:
package jie.com;
public class TestArrayValue {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr1={1,2,3,4,5};
int[] arr2={1,2,3,4,5};
int[] tmp=arr1;
System.out.println(arr1==tmp);
System.out.println(arr2==tmp);
}
}
3.foreach 与数组
package jie.com;
public class TestArrayValue {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr1={1,2,3,4,5};
int[][][] arr2={{{1,2,3,4,5},{6,7,8,9,10}},{{11,12,13,14,15},{16,17,18,19,20}}};
//int[] tmp=arr1;
//System.out.println(arr1==tmp);
//System.out.println(arr2==tmp);
for(int element:arr1)
{
System.out.print(element);
}
System.out.println();
for(int[][] row:arr2)
for(int[] vol:row)
for(int element:vol) //从这里可以看出二维数组应该怎样存取的! 所谓的触类旁通嘛!
{
System.out.println(element);
}
}
}
4.对象数组
int[] arr=new int[3]:产生几个对象? 答:产生一个对象,因为数组是一个对象而已,只不过里面包含了三个整数.
int[][] arr=new int[2][3]:产生几个对象? 答:产生三个对象: int[][]算一个,还有就是其中包含的两个int[],总共三个.
Integer[] arr=new Integer[3]:产生几个对象? 答:产生一个对象:这和基本数据类型是一样的解释.
Integer[][] arr=new Integer[2][3]:产生几个对象? 答:也是产生三个对象:Integer[][],Integer[],Integer[].