比较Java中的整数数组。 为什么不= =工作?
我正在学习Java并且刚刚提出了关于该语言的这个微妙的事实:如果我声明两个具有相同元素的整数数组并使用==
进行比较,则结果为false
。 为什么会这样? 比较评估不应该是true
吗?
public class Why { public static void main(String[] args) { int[] a = {1, 2, 3}; int[] b = {1, 2, 3}; System.out.println(a == b); } }
提前致谢!
使用Arrays.equals(arr1,arr2 )方法。 ==
运算符只检查两个引用是否指向同一个对象。
测试:
int[] a = {1, 2, 3}; int[] b = a; System.out.println(a == b); //returns true as b and a refer to the same array int[] a = {1, 2, 3}; int[] b = {1, 2, 3}; System.out.println(Arrays.equals(a, b)); //returns true as a and b are meaningfully equal
编号==
比较数值(或布尔)值或引用。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.21
您可能正在寻找Arrays.equals (a,b)
方法
如果对Object使用==运算符,则检查两个引用是否指向同一对象。 如果你使用带有原始类型的==运算符(int,long,boolean …),那么如果它们具有相同的值,那么你就是在嚼。
int[] a = {1, 2, 3}; int[] b = {1, 2, 3}; System.out.println(a == b); //return false; System.out.println(a[0] == b[0]); //return true; String[] a1 = {"Cat", "Dog", "Mouse"}; String[] b2 = {"Cat", "Dog", "Mouse"}; System.out.println(a1 == b1); //return false; System.out.println(a1[0] == b1[0]); //return false; Because String are Object
- 为什么我的模式(“yyyyMM”)无法使用DateTimeFormatter进行解析(java 8)
- Hibernate – 有没有办法将2列与1连接?
- 为什么java 8 lambdas允许访问非final类变量?
- 尽管使用了@Primary,但两个具有相同名称的bean会导致ConflictingBeanDefinitionException
- Java是否有获取各种字节顺序标记的方法?
- 如何使用Selenium / TestNG java文件中的IntelliJ制作可执行jar文件?
- 如何在java中比较两个日期和时间
- 使用PDFBox合并Pdf文件
- 运行javafx程序时发生InvocationTargetException