int[] array = new int[10]; // Length is fixed when the array is created.
创建数组时建立数组的长度。创建后,它的长度是固定的。
为什么必须如此?
答案 0 :(得分:6)
正如其他答案所指出的那样,固定大小是定义的一部分,你必须与原作者交谈才能找到真相。
但是作为一般性观点,实现可变长度容器要复杂得多,并且有许多策略可以实现它(链表,内存重新分配...)。 p>
如果作者在20世纪90年代早期将数组定义为可变长度,那么会产生一些不必要的后果:
a.length
变得可变; java.util.Vector
在当天回复,现在是Java Collections,Guava等)。总而言之,人们普遍认为Java诞生的C语言系列中的数组是构建更高级别结构的简单工具 - 那时候,固定大小限制没有出乎意料。我们现在可以选择这种结构的实现(LinkedList
,ArrayList
等),它们提供了一系列运行时行为,大多数开发人员都使用这些抽象。
答案 1 :(得分:1)
这是Java TcpClient remoteClient = new TcpClient(request.GetRemoteHost(), 80);
byte[] remoteRequest = Encoding.UTF8.GetBytes(requestStr);
NetworkStream remoteStream = remoteClient.GetStream();
remoteStream.Write(remoteRequest, 0, remoteRequest.Length);
remoteStream.Flush();
int j;
string remoteStr = "";
byte[] remoteBuffer = new byte[App.BufferSize];
recvRequest = true;
while (recvRequest && (j = remoteStream.Read(remoteBuffer, 0, remoteBuffer.Length)) != 0) {
string receivedData = Encoding.ASCII.GetString(remoteBuffer, 0, j);
if (receivedData.IndexOf(Eol) < 0) {
remoteStr += receivedData;
} else {
remoteStr += receivedData.Substring(0, receivedData.IndexOf(Eol + Eol));
recvRequest = false;
}
}
MessageBox.Show(remoteStr);
的定义:
数组是一个容器对象,它包含固定数量的单一类型的值
(见here)。
使用array
进行可变大小的数组实现。