繁体   English   中英

为什么在Java中使用[]创建数组而不是创建数组对象?

[英]Why are arrays created in Java using [] rather than creating an array object?

我试图了解数组如何在Java中工作。 我查看了源代码,并将构造函数设为私有。 那如果我写这样的话它是如何工作的:

String [] myArray = new String [10];

它知道这是一个数组,只需将方括号[]放进去?

此外,他们为什么要这样做,以免被ArrayList的创建方式实例化?

ArrayList<String> myArray = new ArrayList<String>(10);

数组不是对象吗? 是什么使它与众不同?

它知道这是一个数组,只需将方括号[]放入?

是的,就是这样。 这是用于声明和创建数组(以及访问其元素)的特殊语法。

该语言(和JVM)对数组有特殊的支持(因为它们经常使用)。 除了找到的括号外,还有一个特殊的for-each-loop,创建数组文字的语法,并且数组可用于vararg方法参数。

数组不是对象吗?

Java中的数组是对象(甚至是基本类型的数组)。

是什么使它与众不同?

没有太多没有什么不同...

除了可以将数组分配给Object类型的变量(它们可以为null )之外,它们中没有太多类似于对象的对象。 例如,尽管它们具有equals和toString之类的方法,但它们的实现可能未达到您的期望(有关更多有用的版本,请参见Arrays类)。 您也不能继承使数组起作用的内部“类”。

总而言之,数组是对象,但是特殊对象。 与ArrayList不同,后者与其他任何类一样构建。 您可以使用Java滚动自己的Collection,但是要构建自己的数组,需要构建自己的JVM。

Arrays是固定大小的(需要在对象创建时声明大小),因此在运行时我们不能增加数组的大小。

尽管ArrayList在运行时动态增长,即使我们在创建时声明了Size。

数组是对象,但是数组也可以是基元,但是基元数组仍然是对象。

Furthermore, why did they make it so it isn't instantiated by something like how ArrayList are created?

ArrayList使用泛型来允许扩展类型,而泛型不能用于基元。 更不用说,泛型来自Java 5,而数组一直都在这里。

Java数组(用[] )是一种特殊的对象。 很像int和朋友。 ArrayLists等是功能齐全的类。 有很多区别,您会发现封装了这些类型的类,以便可以像普通类一样操作它们。 最值得注意的是,您不能类归类为array或int 但是,如果要对它们进行面向对象的处理,则会找到ArrayListInteger

还要注意的是,参数化类型ArrayList<String>表示法是Java的相对较新的添加(我认为它出现在Java 1.5中,但我可能会误解)。 在此之前,集合将包含裸Object ,您必须将其强制转换回正确的类。

它知道这是一个数组,只需将方括号[]放进去?

是。

此外,他们为什么要这样做,以免被ArrayList的创建方式实例化?

因为(a)没有,(b)为什么要这么做? 如果您想知道答案,那您来错地方了。 问问吉姆·高斯林。 许多其他语言也以相同的方式完成操作。 您为什么要特别注意Java?

数组不是对象吗?

是。

是什么使它与众不同?

[]语法是否被特别对待? 数组类型有无数的事实:(每个基本类型一个,每个可能的类一个)乘以(从1到Integer.MAX_INT的任意数量的维)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM