我的问题是: java调用方法中的变量可以像这样的例子:
private void test(Rabbit rabbit, byte[] key, byte[] iv, byte[] data) {
byte[] crypt = rabbit.crypt(data.clone());}
据我所知,data是一个变量,它调用clone()方法。 数据是否可变或没有。
答案 0 :(得分:1)
在这个例子中,数据可以调用方法clone,因为data是由JVM创建的byte []类的对象,因为它是一个可以调用clone方法的对象。
答案 1 :(得分:0)
这里真正的问题似乎是Java数组对象是否支持.clone()
方法。
答案是肯定的。所有Java数组都实现Cloneable
,因此.clone()
方法将正常工作。请参阅Why clone method is allowed on Array?。
请注意,这将是一个“浅层”克隆。这对于原语来说无关紧要,但对于对象来说,它意味着克隆将包含对与原始对象相同的对象的引用,而不是对这些对象的克隆。
答案 2 :(得分:0)
这里data
变量的数据类型是一个数组。在Java中,Array被视为Object的类型。因此,您可以使用data.length
和data.clone()
作为有效声明。
length
是 int
对象中的变量(类型为Array
), clone()
是方法 Object
类(这是Java中所有类的超类)
答案 3 :(得分:0)
嗯......你看错了符号。简短的回答是,“这取决于。”
在Java中,有两种类型的东西:
char
的情况下,通常能够打印出来), data
实际上是byte[]
,数组类型的特殊之处在于它们are an Object
,而不是类的实例。也就是说,它有一些东西 - clone()
,自arrays implement Cloneable
以及Object
上找到的所有方法,它都是从它继承的。
实质上,您只能在对象上调用方法,而不能在基元上调用方法。