l**b 发帖数: 457 | 1 今天复习leetcode的Min Window Substring,发现266个大test只能过265个,最后一个
怎么都过不了,感觉logic都是正确的,最后弄了半天。发现是一个很久以前就知道的
问题。但是还是被忽悠了。发帖铭记:
@Test
public void testInteger() throws Exception {
Integer a = 10;
Integer b = 10;
assertTrue(a == b);
Integer c = 1024;
Integer d = 1024;
assertFalse(c == d);
} |
T******7 发帖数: 1419 | |
f*****7 发帖数: 92 | 3 一定范围内的constant是放在pool中,可以被reuse的
跟string pool一样 |
r****m 发帖数: 70 | 4 多谢分享
The JVM is caching Integer values. == only works for numbers between -128
and 127 http://www.owasp.org/index.php/Java_gotchas#Immutable_Objects_.2F_Wrapper_Class_Caching |
c********s 发帖数: 817 | |
I*********t 发帖数: 2 | 6 呵呵,犯了一个相同的错误。
也是leetcode的一个large case没有通过,还把那个case的input拷了下来debug,才发
现Integer的这个问题。 |
p*****2 发帖数: 21240 | 7 这个好像我当时也出这个问题了吧。leetcode还以为自己的test case有问题了呢。呵
呵。 |
c********t 发帖数: 5706 | 8 多谢分享!其他primitive wrapper class有同样问题吗?如果有,每个type比较范围
是什么?
我以为所有比较,都要转成primitive type value呢。
【在 l**b 的大作中提到】 : 今天复习leetcode的Min Window Substring,发现266个大test只能过265个,最后一个 : 怎么都过不了,感觉logic都是正确的,最后弄了半天。发现是一个很久以前就知道的 : 问题。但是还是被忽悠了。发帖铭记: : @Test : public void testInteger() throws Exception { : Integer a = 10; : Integer b = 10; : assertTrue(a == b); : Integer c = 1024; : Integer d = 1024;
|
l**b 发帖数: 457 | 9 我觉得完全没必要去找这个了,反正以后永远记得一个,凡是object的比较,都要用
equals,除非你要比是不是同一个object,i。e。是不是相同的java object
【在 c********t 的大作中提到】 : 多谢分享!其他primitive wrapper class有同样问题吗?如果有,每个type比较范围 : 是什么? : 我以为所有比较,都要转成primitive type value呢。
|
d*****y 发帖数: 205 | 10 Object当然要用.equals比较。
【在 l**b 的大作中提到】 : 今天复习leetcode的Min Window Substring,发现266个大test只能过265个,最后一个 : 怎么都过不了,感觉logic都是正确的,最后弄了半天。发现是一个很久以前就知道的 : 问题。但是还是被忽悠了。发帖铭记: : @Test : public void testInteger() throws Exception { : Integer a = 10; : Integer b = 10; : assertTrue(a == b); : Integer c = 1024; : Integer d = 1024;
|
c********t 发帖数: 5706 | 11 牢记
【在 l**b 的大作中提到】 : 我觉得完全没必要去找这个了,反正以后永远记得一个,凡是object的比较,都要用 : equals,除非你要比是不是同一个object,i。e。是不是相同的java object
|