之间有什么区别
String [] O = {};
和
String[] Ox = new String[3000];
如何将字符串从Ox
复制到O
?
答案 0 :(得分:4)
O
为空数组且Ox
长度为3000,要将Ox
复制到O
,您必须使用copyOf()
的{{1}} api类。
Arrays
O = Arrays.copyOf(Ox, Ox.length);
创建将Arrays.copyOf()
数组长度更改为O
并复制所有内容。
3000
输出:
public static void main(String[] args) {
String [] O = {};
String[] Ox = new String[3000];
O = Arrays.copyOf(Ox, Ox.length);
System.out.println("O array length : "+O.length); // I am just printing length
}
Arrays类的copyOf()api的内部实现。
O array length : 3000
public static char[] copyOf(char[] original, int newLength) {
char[] copy = new char[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
为Array
,因此您无法将immutable
分配给3000 size array
,在实现size 0 array
方法java创建的新数组copyOf()
和使用char[] copy
方法将native
数组的内容复制到original
数组。
因此,在您的代码中,您不能直接将copy
数组内容复制到Ox
数组,因为您必须创建大小为3000的数组或使用Java的O
api。
答案 1 :(得分:3)
在Java数组中,数组不可变,因此无法更改数组的大小。因为你隐式地将O声明为0({}表示它是空的)它无法填充。
您需要声明一个大小为3000的新数组(new String [3000]),然后使用
答案 2 :(得分:1)
O
是一个空数组,因此您无法将任何内容复制到其中。
答案 3 :(得分:0)
使用以下语句声明一个空的表O(size = 0,没有元素)。
String[] o = {};
如果你写了:
String[] o = {"this", "is", "a", "test"};
您已将表O初始化为size = 4并包含四个字符串元素“this”,“is”,“a”和“test”。
最后,如果您按以下方式初始化表格:
String[] o = new String[4];
您已声明您的数组的大小= 4,但所有四个元素都为null。当然,您可以稍后更改数组的值(例如o[3] = "test"
)。
现在,如果要将一个数组的元素复制到另一个数组,可以使用Arrays.copyOf(o, o.length);
方法,但是按照以下方式:
String[] o = {"this", "is", "a", "test"};
String[] copy; // you don't have to (and shouldn't) initialize this variable to {}
copy = Arrays.copyOf(o, o.length);
答案 4 :(得分:0)
这里有一些不同之处:
1)String [] O = {};
这意味着使用String[]
中包含的数据集创建一个名为O
的新{}
已初始化。由于无数据,O是" 为空"。
这意味着O.length = 0
或换句话说,此数组没有与之关联的内存用于存储目的。
由于数组在java中是不可变的,因此您无法对此数组做任何进一步的操作。
你可以做到:
String[] O = {"bob","Cat","ralph"}
O.length // == 3
O[0] // bob
O[1] // Cat
O[2] // ralph
O[1] = "Sting"
O[1] // now set to Sting
O[4] = "Cause an Exception" // causes an index out of bounds exception
2)String[] O = new String[3000];
在这种情况下,您创建了一个新的String[]
,其中包含3000"空格"或"指数"可用。这实际意味着您可以在此数组中维护对3000个String对象的引用。
所以:
O.length; //3000 because that is the length of this array
O[0] // will return null since we have not stored anything here
O[0] = "My String"
O[0] // now equals "My String"
O[3001] // throws an index out of bounds exception
3)你如何在他们之间复制:
总之,在这种情况下你不能。由于数组1(String[] O = {}
)为空且长度为0,因此任何复制到此数组或从该数组复制的尝试都将导致异常。
答案 5 :(得分:0)
感谢所有人 - 为我带来一些新信息 - 但
O = Arrays.copyOf(Ox, Ox.length);
来自atish shimpi
有助于解决问题:))