[英]Why does Arrays.sort take Object[] rather than Comparable[]?
[英]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
。 但是,如果要对它们进行面向对象的处理,则会找到ArrayList
或Integer
。
还要注意的是,参数化类型ArrayList<String>
表示法是Java的相对较新的添加(我认为它出现在Java 1.5中,但我可能会误解)。 在此之前,集合将包含裸Object
,您必须将其强制转换回正确的类。
它知道这是一个数组,只需将方括号[]放进去?
是。
此外,他们为什么要这样做,以免被ArrayList的创建方式实例化?
因为(a)没有,(b)为什么要这么做? 如果您想知道答案,那您来错地方了。 问问吉姆·高斯林。 许多其他语言也以相同的方式完成操作。 您为什么要特别注意Java?
数组不是对象吗?
是。
是什么使它与众不同?
[]
语法是否被特别对待? 数组类型有无数的事实:(每个基本类型一个,每个可能的类一个)乘以(从1到Integer.MAX_INT的任意数量的维)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.