0

我在 Groovy 中声明字节数组:

def array1 = [-1,5,3] as byte []

def array2 = [-5,2,9] as byte []

如何根据数组的每个元素是否相同来比较两个数组以返回真/假。

我试过这个,groovysh但它一直出错:

groovy:000> def array1 = [-1,5,3] as byte[]
===> [B@18e501c
groovy:000> def array2 = [-5,2,9] as byte[]
===> [B@5e860ba9
groovy:000> array1.equals array2
ERROR groovy.lang.MissingPropertyException:
No such property: array1 for class: groovysh_evaluate
        at groovysh_evaluate.run (groovysh_evaluate:2)
        ...
4

1 回答 1

3

这里有几个问题。

首先,您似乎正在使用 groovy shell,通过 'groovysh' 使用 groovysh,在声明变量时必须省略 'def' - 这是 shell 的一个怪癖。

您收到此错误是因为执行后def array1 = [-1,5,3] as byte[],array1 未定义。

其次,equals() 方法在这种情况下不会像您期望的那样运行 - 您将需要使用 '==' 运算符来代替。

这是我得到的:

groovy:000> array1 = [-1,5,3] as byte[]
===> [B@1d429498
groovy:000> array2 = [-5,2,9] as byte[]
===> [B@ac1b161
groovy:000> array3 = [-1,5,3] as byte[]
===> [B@5ca3ce3f
groovy:000> array1.equals array2
===> false
groovy:000> array1.equals array3
===> false
groovy:000> array1 == array2
===> false
groovy:000> array1 == array3
===> true
于 2013-01-26T02:11:27.410 回答