我在Groovy中声明了字节数组:
def array1 = [-1,5,3] as byte []
def array2 = [-5,2,9] as byte []
如何根据数组的每个元素是否相同来比较两个数组以返回true / false。
我在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)
...
答案 0 :(得分: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