这个问题基本上是不言自明的.我无法找到数组的API(除了这个数组,但这只是定义了一堆用于处理实际数组的静态辅助函数).如果没有它的类,这似乎表明一个数组不能是一个Object.
但是,一个数组具有公共字段length和它可以调用的方法这样的事实,.equals()并且.clone()似乎(非常强烈地)建议完全相反.
对于原始数组的奇怪表示和行为有什么解释?
作为一个注释,我试着在.clone()刚才的数组方法上使用"Open Implementation"Eclipse特性,希望我能够看看这个方法的定义位置和方法(因为它说int []覆盖了它对象),但它实际上导致我的整个Eclipse冻结并崩溃......
我在哪里可以找到java数组的源代码?
例:
double[] arr=new double[20];
Run Code Online (Sandbox Code Playgroud)
所有数组都带有任何维度实现Cloneable和Serializable`接口.我搜索了源代码但找不到相应的代码.
可能的重复:
数组如何用Java实现?
为什么没有java.lang.Array类?如果Java数组是一个Object,它不应该扩展Object吗?
我最近在考虑Java数组,我想知道它们到底是什么?
他们是对象吗?
Object a = new int[5];但是,它们真的是对象吗?
new int[5]... 创建了一个新数组,就像我从未见过的构造函数。一个人会以为是new Array<Integer>(5)某种东西array
类...您会发现,Array但这并不是一个真正的数组以及它的可迭代属性
iterator我找不到任何数组方法我认为数组只是直接内置在Java语言中的一些特殊异常;但是,这也带来了一个问题:为什么对数组进行特殊处理?(为什么没有Array API?为什么有不同类型的构造函数?)
关于阵列的真实性质的任何澄清将不胜感激。
PS:我有几年Java经验,所以我知道如何使用数组以及它们的作用,我只是想问问它们的实现方式以及原因?
我在Java中有一个带字节数组的类.当我序列化和反序列化类的对象时,字节数组的值正在改变.
我该如何解决这个问题?
请参阅示例代码:
public class Test implements Serializable{
private static final long serialVersionUID = 3455892176538865707L;
public byte[] datakey;
public static void main(String[] args) {
byte[] key=new byte[16];
Random rn = new Random(); //Trying to randomize the byte array to use as a cryptographic key
rn.nextBytes(key);
Test test = new Test();
test.datakey=key;
System.out.println("Byte Array Before serialization : "+test.datakey);
test.serializeTest(test);
Test loadedtest=test.deserializeTest();
System.out.println("Byte Array After deserialization : "+loadedtest.datakey);
}
public void serializeTest(Test test)
{
FileOutputStream fos;
try {
fos = new FileOutputStream("test.out"); …Run Code Online (Sandbox Code Playgroud) 在SO上有几个与此类似的问题,但它们并没有完全回答代码实现的内容.我看了看
为什么没有java.lang.Array类?如果java数组是一个Object,它不应该扩展Object吗?
和
他们没有回答具体实施的内容.
我已经从OpenJDK下载了java源码,我真的找不到我想要的东西.(也许这部分代码是专有的?)
my_arr[500]实现的算法来获取索引500处的值?提前致谢!