Tag: 比较

比较与equals一致意味着什么? 如果我的class级不遵循这个原则,可能会发生什么?

从TreeMap的JavaDoc: 请注意,如果此有序映射要正确实现Map接口,则由有序映射维护的排序(无论是否提供显式比较器)必须与equals一致。 (请参阅Comparable或Comparator以获得与equals一致的精确定义。)这是因为Map接口是根据equals操作定义的,但是map使用compareTo(或compare)方法执行所有键比较,因此两个键从排序地图的角度来看,通过这种方法被视为相等的是相等的。 即使排序与equals不一致,也可以很好地定义有序映射的行为。 它只是没有遵守Map接口的一般合同。 有人可以给出一个具体的例子来说明如果排序与equals不一致可能会出现的问题吗? 举例来说,用户定义的类具有自然顺序,即它实现了Comparable。 JDK中的所有内部类都保持这个不变量吗?

在java中比较double和int是否有效?

Utilities.getDistance(uni, enemyuni) <= uni.getAttackRange() Utilities.getDistance返回double,getAttackRange返回int。 上面的代码是if语句的一部分,它必须是true。 那么比较有效吗? 谢谢

比较Java中的两个基元数组?

我知道Arrays.deepEquals(Object [],Object [])但这对原始类型不起作用(由于数组和自动装箱的限制,请参阅此相关文章 )。 考虑到这一点,这是最有效的方法吗? boolean byteArrayEquals(byte[] a, byte[] b) { if (a == null && b == null) return true; if (a == null || b == null) return false; if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { if (a[i] != b[i]) return false; } return […]

为什么Java没有看到整数是平等的?

我有应该是相等的整数(我通过输出validation它)。 但在我的if条件下,Java没有看到这些变量具有相同的值。 我有以下代码: if (pay[0]==point[0] && pay[1]==point[1]) { game.log.fine(“>>>>>> the same”); } else { game.log.fine(“>>>>>> different”); } game.log.fine(“Compare:” + pay[0] + “,” + pay[1] + ” -> ” + point[0] + “,” + point[1]); 它产生以下输出: FINE: >>>>>> different FINE: Compare:: 60,145 -> 60,145 可能我必须补充point就是这样定义: Integer[] point = new Integer[2]; 并从循环构造函数中获取: for (Integer[] pay : payoffs2exchanges.keySet()) […]

比较Java中的数字

在Java中,所有数字类型都从java.lang.Number扩展。 拥有如下方法是一个好主意: public boolean areEqual(Number first, Number second) { if (first != null && second != null) { return first.equals(second); } } 我担心双重2.00000不等于int 2的情况。这些是由内置等于处理吗? 如果没有,有没有办法在java中编写一个简单的数字比较函数? (apache commons等外部库都可以)

在Java中提取两个字符串之间的差异

嗨我有两个字符串: String hear = “Hi My name is Deepak” + “\n” + “How are you ?” + “\n” + “\n” + “How is everyone”; String dear = “Hi My name is Deepak” + “\n” + “How are you ?” + “\n” + “Hey there \n” + “How is everyone”; 我想得到听到的字符串中没有的内容“Hey There \ n”。 我找到了一个方法,但在这种情况下它失败了: static […]

比较加框的长值127和128

我想使用if条件比较两个Long对象值。 当这些值小于128时 , if条件正常工作,但当它们大于或等于128时 ,比较失败。 例: Long num1 = 127; Long num2 = 127; if (num1 == num2) { // Works ok } 上面的代码比较正常,但在下面的代码中失败: Long num1 = 128; Long num2 = 128; if (num1 == num2) { // Does NOT work } 为什么比较Long变量和大于127的值存在问题? 如果变量数据类型更改为长基元 ,则比较适用于所有情况。

Java:If vs. Switch

我有一段代码与a)我用b)代替纯粹为了易读性… 一个) if ( WORD[ INDEX ] == ‘A’ ) branch = BRANCH.A; /* B through to Y */ if ( WORD[ INDEX ] == ‘Z’ ) branch = BRANCH.Z; b) switch ( WORD[ INDEX ] ) { case ‘A’ : branch = BRANCH.A; break; /* B through to Y */ case ‘Z’ : branch […]

整数包装类和==运算符 – 指定的行为在哪里?

Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1 == integer2);//true integer1 = 128; integer2 = 128; System.out.println(integer1 == integer2);//false 我发现它返回==(如果是)在-128 – 127的范围内,为什么有这样的规范?

在比较Java中的整数包装器时,为什么128 == 128 false但127 == 127为真?

class D { public static void main(String args[]) { Integer b2=128; Integer b3=128; System.out.println(b2==b3); } } 输出: false class D { public static void main(String args[]) { Integer b2=127; Integer b3=127; System.out.println(b2==b3); } } 输出: true 注意:-128到127之间的数字为真。