class Animal {}
class Horse extends Animal {
public static void main(String[] args) {
/*
* Array of Animal can hold Animal and Horse (all subtypes of Animal allowed)
*/
Animal[] a1 = new Animal[10];
a1[0] = new Animal();
a1[1] = new Horse();
/*
* Array of Animal can hold Animal and Horse and all subtype of Horse
*/
Animal[] a2 = new Horse[10];
a2[0] = new Animal();
a2[1] = new Horse();
/*
* Array of Horse can hold only Horse and its subtype (if any) and not
allowed supertype of Horse nor other subtype of Animal.
*/
Horse[] h1 = new Horse[10];
h1[0] = new Animal(); // Not allowed
h1[1] = new Horse();
/*
* This can not be declared.
*/
Horse[] h2 = new Animal[10]; // Not allowed
}
}
Type[] variableName = new Type[capacity];
Type[] variableName = {comma-delimited values};
Type variableName[] = new Type[capacity];
Type variableName[] = {comma-delimited values};
28条答案
按热度按时间yjghlzjz16#
在Java8中,您可以使用这样的东西。
o7jaxewo17#
声明对象引用数组:
hgtggwj018#
在java 9中
使用不同的
IntStream.iterate
以及IntStream.takeWhile
方法:在java 10中
使用局部变量类型推断:
t8e9dugd19#
如果要使用反射创建阵列,可以执行以下操作:
im9ewurl20#
以基元类型为例
int
例如。有几种方法可以声明int
数组:在所有这些地方,你可以使用
int i[]
而不是int[] i
.通过反射,你可以使用
(Type[]) Array.newInstance(Type.class, capacity);
注意,在方法参数中,...
表示variable arguments
. 基本上,任何数量的参数都是好的。用代码更容易解释:在方法内部,
varargs
被视为正常人int[]
.Type...
只能用于方法参数,所以int... i = new int[] {}
不会编译。请注意,当通过
int[]
一种方法(或任何其他方法)Type[]
),您不能使用第三种方式。在声明中int[] i = *{a, b, c, d, etc}*
,编译器假定{...}
是指int[]
. 但那是因为你在声明一个变量。将数组传递给方法时,声明必须new Type[capacity]
或者new Type[] {...}
.多维数组
多维数组更难处理。从本质上讲,二维数组是数组的数组。
int[][]
表示一组int[]
s。关键是如果int[][]
声明为int[x][y]
,最大索引为i[x-1][y-1]
. 基本上,一个矩形int[3][5]
是:f0ofjuux21#
制作数组有两种主要方法:
对于空数组:
对于一个初始化的数组:
也可以创建多维数组,如下所示:
mitkmikd22#
另外,如果你想要更具动态性的东西,还有list接口。这样做的效果不太好,但更灵活:
zmeyuzjn23#
或者,
声明一个名为
arrayName
大小为10(可以使用元素0到9)。mepcadol24#
以下显示了数组的声明,但数组未初始化:
下面显示了数组的声明和初始化:
现在,下面还显示了数组的声明和初始化:
但是第三个显示了匿名数组对象创建的属性,它由一个引用变量“myintarray”指向,因此如果我们只写“newint[]{1,2,3};”这就是匿名数组对象的创建方法。
如果我们只写:
这不是数组的声明,但下面的语句使上述声明完成:
vhmi4jdf25#
我发现如果你理解每一部分,这会很有帮助:
int[] name = {1, 2, 3, 4, 5};
dzjeubhm26#
有多种方法可以在java中声明数组:
您可以在sun教程站点和javadoc中找到更多信息。
w41d8nur27#
也是有效的,但我更喜欢类型后面的括号,因为更容易看出变量的类型实际上是一个数组。
lp0sw83n28#
有两种类型的数组。
一维阵列
默认值的语法:
或(不太喜欢)
给定值的语法(变量/字段初始化):
或(不太喜欢)
注意:为了方便起见,int[]num更可取,因为它清楚地表明您在这里讨论的是数组。否则没有区别。一点也不。
多维数组
声明
或
或
初始化
或
不规则阵列(或非矩形阵列)
所以我们在这里显式地定义列。
另一种方式:
用于访问:
或者:
不规则数组是多维数组。
有关说明,请参见官方java教程中的多维数组详细信息