Pet*_*háč 2 java arrays initialization
我正在准备入门级Oracle认证--OCA - Java Programmer I,因为他们要求人们在服用下一个之前采用这个(以前可以直接使用SCJP,这相当于OCP - Java Programmer II)
我在阵列初始化时遇到了这个问题,这让我有些困惑.显然,可以像这样声明和初始化一个数组:
Object[] objects = { new Object[1], new Object[34] };
Run Code Online (Sandbox Code Playgroud)
由于数组是对象,因此可以将对象数组粘贴到对象数组中.你可以很容易地得到在一个或另一个对象数组做objects[0]或objects[1],但你会在哪里从那里去?你如何从存储在下面的对象数组中访问第16个对象objects[1]?
基本上,我的问题可以简化为:
Object o = new Object[100];
Run Code Online (Sandbox Code Playgroud)
以上编译.但是,如何访问Object数组中的单个对象o?
Ted*_*opp 10
一个Object[]也是一个Object,这就是为什么你的声明
Object o = new Object[100];
Run Code Online (Sandbox Code Playgroud)
作品.*但是,要访问元素,您需要将其强制转换为Object[].例如:
Object elt = ((Object[]) o)[3];
Run Code Online (Sandbox Code Playgroud)
对于您的原始声明:
Object[] objects = { new Object[1], new Object[34] };
Run Code Online (Sandbox Code Playgroud)
你将不得不做类似的事情来访问第16个元素objects[1]:
Object elt = ((Object[]) (objects[1]))[15];
Run Code Online (Sandbox Code Playgroud)
当然,您可以通过声明来避免所有这些演员:
Object[][] objects = { new Object[1], new Object[34] };
Run Code Online (Sandbox Code Playgroud)
首先.然后就可以了objects[1][15].
*请注意,这只是真实的Object,它具有特殊状态作为Java中对象层次结构的根.一个Integer[]不能被分配给一个Integer变量.
你必须把它归还给Object[]:
Object o = new Object[] {new String("abc"), null, new Integer(1)};
Object[] arr = (Object[]) o;
Object elem = arr[0];
System.out.println(elem);
Run Code Online (Sandbox Code Playgroud)
这打印abc.
这很有效,因为System.out.println()很乐意接受Object.如果它需要a String,你需要另一个垂头丧气.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |