java 中数组是以对象存在的 请问它是以什么类为摸板建立的对象!

来源:百度知道 编辑:UC知道 时间:2024/06/26 06:27:49
刚学JAVA 知道数组是以对象形式存在的 但是不知道是它属于什么类;
是Arrays 类么 但是我看书上的操作怎么都是直接用类名Arrays调用类的成员函数, 而参数全是对象名,如:Arrays.fill(arr1,5)/Arrays.sort(arr1); 刚从 c/c++转想学java 有些思维转不过来 ,c++中都是用对象名引用成员函数, 就算要用类名也是要用::符号引用吧!谁能教我下!谢谢!

是java.unil.Arrays,自带的一些函数.前面可以省略.

再java中数组是类,定义一个数组之后,那个变量是引用类型的变量。

int []a =new int[10];

这里的a就是一个引用类型的变量,它是一个一维的整型数组类型,我们知道再java中的每一个对象都有一个toString方法,这个方法是默认输出对象的类型+@符号+它的哈希码。同样,既然a是数组类型我们可以用下面的语句:

System.out.println(a);

对于上面的语句输出的结果是:

[I@ca0b6

前面的方括号表示一个数组有几个方括号说明数组是几维的这里有一个说明是一个一维的数组,后面的I表示是一个整型的数组,@是一个分隔符号,后面的是它的哈希代码。

再java中我们好像不能用上面类名来定义数组对象,应该说是没有类名的,数组是一个比较特殊的东西,它不像类,但是再java中又把它当作对象来处理的,它有没有类名。你如果知道java的反射机制,也可以用反射机制来得到一个变量的类型,它得到的结果和上面是一致的。我们可以看出它是什么类型,但是我们不能把它当作一个类的名字。就好像上面的我们通过输出的结果 [I@ca0b6 看出a是一个一维的整型的数组,但是我们不能把 [I 当作是一个一维整型的数组的类的名字,而用它来定义变量,比如类似下面的语句:

[I a=new [I(10);

事实上上面的语句是非常荒唐的,也是非常滑稽的。编译当然是通不过的了。

其实我们还可以从另外的一个方面来看这件事情:你可以试想以下如果再java里面允许这样的类名存在的话,将会出现什么样的情况呢?

我要定义一个一维的整型数组:

[I a=new [I(10);

如果是二维的呢?按照上面的意思可能是这样:

[[I a=new [[I(10); //10的意思可能是数组又10个元素

三维的呢?可能是这样:

[[[I a=new [[[I(10);