首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么1000 == 1000返回为False,而100 == 100会返回为True?

    System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到以下运行结果: false...true 我们知道,如果两个引用指向同一个对象,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的。...因此,结果就会出现false。 这是非常有趣的地方。如果你查看Integer.java类,你会找到IntegerCache.java这个内部私有类,它为-128到127之间的所有整数对象提供缓存。...return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 如果值在 -128 到 127 之间,它就会返回该缓存的实例...这就是为什么这段代码的结果为true了: System.out.println(c == d); 现在你可能会问,为什么会为-128到127之间的所有整数设置缓存?

    3.1K50

    奇怪的Java题:为什么128 == 128返回为false,而127 == 127会返回为true?

    奇怪的Java题:为什么128 == 128返回为false,而127 == 127会返回为true? 在回答这个问题之前,我们先来看看int和Integer的对比,一步步揭开问题的答案。...,其内存地址不同 (2) Integer变量和int变量比较时,只要两个变量的值是相等的,则结果为true。...Integer i = new Integer(100); int j = 100; System.out.print(i == j); //true 因为包装类Integer和基本数据类型int比较时...,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较 (3) 非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。...127 之内的数 Integer i = 127; Integer j = 127; System.out.println( i==j ); //true

    4.2K31

    JavaScript 正则匹配中的 lastIndex 陷阱:为什么 test 和 exec 会交替返回 true 和 false

    用同一个正则对象反复测试不同字符串,明明字符串都匹配,却出现一次true一次false的诡异现象,这是不少人在表单校验、循环过滤或批量替换时踩过的坑。...三个字符串都包含数字,按理都应该返回true。...结果却是true、false、true交替。...而String.prototype.match在高版本规范里如果带g,会一次性返回所有匹配并把lastIndex重置为0,行为跟exec不同。...一个是每个调用点都得记得写,一旦漏掉就复现原问题;另一个是当代码在多处并发或异步执行时,归零和test之间并非原子操作,虽然JS单线程里同步代码没事,但混入异步逻辑之后仍然容易读错状态。

    11210
    领券