本帖最后由 何仕映 于 2013-3-15 09:28 编辑
根据比老师讲的建立一个数组 int[] a = {1,3,5};其中a是一个引用型变量存在于栈内存中,其中装得值是该数组在堆内存中的首地址。如果打印a这个引用型变量,那么输出的就是该数组在堆内存中的地址值。如果是这样,那么所有的数组应该都是这种思想。但是为什么会出现下面程序中的这种结果呢?打印字符数组的引用型变量,如果前面用+连接一个字符串打印的是地址值,如果打印语句中只有这个引用型变量,那么打印的就是该数组中的内容。请问为什么会这样啊?- class Arr1Test
- {
- public static void main(String[] args)
- {
- char[] a = {'a','b','c'}; //定义两个字符数组,一个赋有初值。另一个至开辟空间,采用默认值。
- char[] b = new char[3];
- int[] c = new int[3]; //定义两个整型数组,一个赋有初值。另一个至开辟空间,采用默认值。
- int[] d = {1,2,3,4,5};
- System.out.println("a = "+a); //打印引用型变量。
- System.out.println("b = "+b);
- System.out.println("c = "+c);
- System.out.println("d = "+d+"\n"+"\n"+"\n");
- System.out.println(a);
- System.out.println(b);
- System.out.println(c);
- System.out.println(d);
- }
- }
- /*
- 运行结果
- =======================================
- a = [C@de6ced
- b = [C@c17164
- c = [I@1fb8ee3
- d = [I@61de33
- abc
- [I@1fb8ee3
- [I@61de33
- =======================================
- */
复制代码 |