今天在一个java群里,看到有个群友问到如下为什么第一个为true,第二个为false. System.out.println(Integer.valueOf("50")==Integer.valueOf("50")); //true System.out.println(Integer.valueOf("200")==Integer.valueOf("200")); //false 由于一开始他问的第二句,我还想当然的以为是…
示例代码: class BoxIntInteger { public static void main(String[] args) { Integer a = new Integer(10111); int b = 10111; boolean equal1 = a == b; boolean equal2 = a.equals(b); System.out.println(equal1); System.out.println(equal2); } } 反编译字节码: public stat…
如果比较两个数值相等的Integer类型的整数,我们可能会发现,用"=="比较(首先你必须明确"=="比较的是地址),有的时候返回true,而有的时候,返回false.比如: Integer i = 128; Integer j = 128; System.out.println(i == j);//返回false 然而: Integer m = 127; Integer n = 127; System.out.println(m == n);//返回true 为什…
直接看问题吧 for (int i = 0; i < 150; i++) { Integer a = i; Integer b = i; System.out.println(i + " " + (a == b)); }部分结果 结果为: .....124 true 125 true 126 true 127 true 128 false 129 false 130 false 131 false 黑人问号?  为什么到128就不行了? 问题在哪里?  (道行太浅!  为什么就认…
Integer a = 127; Integer b = 127; Integer c = 128; Integer d = 128; a == b 与 c == d 的比较结果是什么? a == b 的结果为true 而 c == d的结果为false: 为什么会出现结果?百度之后发现问题的根源所在,在解决这个问题之前,先说说常量池的概念,百度百科上有 我再复述一遍. Java常量池 常量池在java中用于保存编译期已经确定的,它包括了关于类,方法,接口中的常量,也包括字符串常量.例如Stri…
概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数.正数补码为其本身:负数补码为其绝对值各位取反加1:例如:+21,其二进制表示形式是00010101,则其补码同样为00010101-21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011 步骤:1.byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为0111111…
1 public class Demo3 { public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 128; Integer d = 128; Integer e = 321; Integer f = 321; Long g = 3L; System.out.println(System.identityHashCode(c)); //366712642 System.out.prin…
概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数.正数补码为其本身:负数补码为其绝对值各位取反加1:例如:+21,其二进制表示形式是00010101,则其补码同样为00010101-21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011 步骤:1.byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为0111111…
Integer定义,final不可修改的类 public final class Integer extends Number implements Comparable<Integer> 常量定义 /** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. */ @Native public static final int MIN_VALUE = 0x8…
前言:本博文将涉及的Java的自动装箱和自动拆箱,可以参考 这篇文章 和 官方教程 ,这里不再赘述. 首先,先看一个小程序: public class Main { public static void main(String[] args){ Integer i1 = ); Integer i2 = ); System.out.println(i1 == i2); Integer i3 = ; Integer i4 = ; System.out.println(i3 == i4); Integ…