Java中的数组是对象吗?
跳到导航
跳到搜索
Java中的数组是对象?
是!
package com.eijux;
public class Test {
public static void main(String[] args) {
// 数组是对象吗?
System.out.println("-----------基本数据类型数组的类型-------------");
System.out.println(new int[2].getClass().getName());
System.out.println(new short[2].getClass().getName());
System.out.println(new long[2].getClass().getName());
System.out.println(new byte[2].getClass().getName());
System.out.println(new float[2].getClass().getName());
System.out.println(new double[2].getClass().getName());
System.out.println(new char[2].getClass().getName());
System.out.println(new boolean[2].getClass().getName());
System.out.println("-----------基本数据类型包装类数组的类型-------------");
System.out.println(new Integer[3].getClass().getName());
System.out.println(new Short[3].getClass().getName());
System.out.println(new Long[3].getClass().getName());
System.out.println(new Byte[3].getClass().getName());
System.out.println(new Float[3].getClass().getName());
System.out.println(new Double[3].getClass().getName());
System.out.println(new Character[3].getClass().getName());
System.out.println(new Boolean[3].getClass().getName());
System.out.println("-----------对象数组的类型-------------");
System.out.println(new Object[4].getClass().getName());
System.out.println(new String[4].getClass().getName());
System.out.println(new Student[4].getClass().getName());
System.out.println("-----------二维数组的类型-------------");
System.out.println(new int[5][6].getClass().getName());
System.out.println(new Integer[5][6].getClass().getName());
System.out.println(new String[5][6].getClass().getName());
System.out.println(new Student[5][6].getClass().getName());
}
}
其输出内容为:
-----------基本数据类型数组的类型-------------
[I
[S
[J
[B
[F
[D
[C
[Z
-----------基本数据类型包装类数组的类型-------------
[Ljava.lang.Integer;
[Ljava.lang.Short;
[Ljava.lang.Long;
[Ljava.lang.Byte;
[Ljava.lang.Float;
[Ljava.lang.Double;
[Ljava.lang.Character;
[Ljava.lang.Boolean;
-----------对象数组的类型-------------
[Ljava.lang.Object;
[Ljava.lang.String;
[Lcom.eijux.Student;
-----------二维数组的类型-------------
[[I
[[Ljava.lang.Integer;
[[Ljava.lang.String;
[[Lcom.eijux.Student;
可以看出,数组也是有类型的。只是这个类型显得比较奇怪,既不是Java标准库中的类,也不是自定义的类,
而是虚拟机自动创建了数组类型,这种类型的命名规则是这样的:
- 每一维度用一个“[”表示;(开头两个“[”,就代表是二维数组)
- “[”后面是数组中元素的类型(包括基本数据类型和引用数据类型)
- 基本类型:Integer(I)、Short(S)、Long(J)、Byte(B)、Float(F)、Double(D)、Character(C)、Boolean(Z)
- 对象:“L类名;”