package classjichu;public class TestQuestion {
void test1() {
int a[] = new int[] { 1, 2, 3 };
// 创建数组并初始化:栈中存放a的声明部分和后面
//堆中产生的对象的首地址,设为100
int b[] = a;
//声明b数组并将a中对象的首地址值赋给b,
// 此时b中存放的为a的首地址100
//b与a指向堆栈中同一区域
b[0] = 12;// 修改b所指向的第一个元素,也即修改了a
//所指向的第一个元素的值
System.out.println(a[0]);//打印12
} void test2() {
int a[] = new int[] { 1, 2, 3 };
// 创建数组并初始化:栈中存放a的声明部分和后面
//堆中产生的对象的首地址,设为200
int b[] = a;
//声明b数组并将a中对象的首地址值赋给b,
// 此时b中存放的为a的首地址200
//b与a指向堆栈中同一区域
b = new int[3];
//堆中产生一个新的对象,开辟一个新区域,设其首地址为250
//栈b中存的也就是地址值250
b[0] = 4;
//改变的只是首地址为250处的值,a所指向的没有变化
System.out.println(a[0]);// a[0]值为1;
}
///////////////////不明白???????????
void test3() {
int aa[][] = new int[2][4];
System.out.println(aa);//[[I@182f0db
System.out.println(aa[0]);//[I@192d342
System.out.println(aa[1]);//[I@6b97fd
aa[0][0] = 10;
aa[0][1] = 15;
int bb[][] = aa;
System.out.println(bb);//[[I@182f0db 即aa存放的地址值相同
bb[0] = new int[2];
System.out.println(bb[0]);//[I@1c78e57
bb[0][0] = 20;//aa数组第一个元素的值即20
bb[0][1]=30;
System.out.println(bb[0][0]);
System.out.println(aa[0][0]);
System.out.println(aa[0][1]);
} // void test4(){ // }
public static void main(String[] args) {
TestQuestion tq = new TestQuestion();
tq.test1();
tq.test2();
tq.test3(); }}