数组名引用的问题

pkitjy0516 2009-08-25 09:34:45
public class ArrayOne
{
public static void main(String args[])
{
int[] Array1 = { 1,2,3,};
int[] Array2 = { 10 ,11};
System.out.println("数组Array1的引用是:" + Array1);
System.out.println("数组Array2的引用是:" + Array2);
System.out.printf("Array2[0]=%-3dArray2[1]=%-3d\n",Array2[0],Array2[1]);

Array2 = Array1;
System.out.println("数组Array1的引用是:" + Array1);
System.out.println("数组Array2的引用是:" + Array2);

Array1[1] = 888;
Array2[2] = 999;

System.out.printf("Array1[0]=%-5dArray1[1]=%-5dArray1[2]=%-5d\n",Array1[0],Array1[1],Array1[2]);
System.out.printf("Array2[0]=%-5dArray2[1]=%-5dArray2[2]=%-5d\n",Array2[0],Array2[1],Array2[2]);

}
}
运行结果:
C:\Users\Red Dragonfly>d:

D:\>cd Java

D:\Java>javac ArrayOne.java

D:\Java>java ArrayOne
数组Array1的引用是:[I@de6ced
数组Array2的引用是:[I@c17164
Array2[0]=10 Array2[1]=11
数组Array1的引用是:[I@de6ced
数组Array2的引用是:[I@de6ced
Array1[0]=1 Array1[1]=888 Array1[2]=999
Array2[0]=1 Array2[1]=888 Array2[2]=999


其中这个“数组Array1的引用是:[I@de6ced
数组Array2的引用是:[I@c17164” 撒意思呀 "[I@"

...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
南南北北 2009-08-25
  • 打赏
  • 举报
回复
数组Array1的引用是:[I@de6ced

[I表示一个 一维的int型数组, [ 表示一维数组,I 表示int型.
de6ced是该对象的hashCode值.
qiubojuncode 2009-08-25
  • 打赏
  • 举报
回复
以为什么问题呢?太简单了,打印出的是地址,如果想一下子把数组内容打印出来,可以这么解决
import java.util.*;
System.out.println(Arrays.toString(Array1));
搞定
loveofmylife 2009-08-25
  • 打赏
  • 举报
回复
Object的toString()方法
返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())
kakagui 2009-08-25
  • 打赏
  • 举报
回复
数组直接打印,输出的是引用的地址,若要打印 可选择下面的方法:

//第一种
for(int i:num){
System.out.print(i+" ");
}
//第二种
System.out.println(Arrays.toString(num));
knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
getName
public String getName()

以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
如果此类对象表示的是非数组类型的引用类型,则返回该类的二进制名称,Java Language Specification, Second Edition 对此作了详细说明。

如果此类对象表示一个基本类型或 void,则返回的名字是一个与该基本类型或 void 所对应的 Java 语言关键字相同的 String。

如果此类对象表示一个数组类,则名字的内部形式为:表示该数组嵌套深度的一个或多个 '[' 字符加元素类型名。元素类型名的编码如下:

Element Type Encoding
boolean Z
byte B
char C
class or interface Lclassname;
double D
float F
int I
long J
short S

类或接口名 classname 是上面指定类的二进制名称。

示例:

String.class.getName()
returns "java.lang.String"
byte.class.getName()
returns "byte"
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"

返回:
此对象所表示的类或接口名。
knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
数组是从Object 那里继承的toString 方法[JLS 10.7],规范中描述到:“返回一
个字符串,它包含了该对象所属类的名字,'@'符号,以及表示对象散列码的一
个无符号十六进制整数”[Java-API]。
ruisheng_412 2009-08-25
  • 打赏
  • 举报
回复
好像是 hash code 吧

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧