Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c == (a + b));
System.out.println(c.equals(a + b));
System.out.println(g == (a + b));
System.out.println(g.equals(a + b));
输出是:
true
false
true
true
true
false没搞懂,为啥?
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c == (a + b));
System.out.println(c.equals(a + b));
System.out.println(g == (a + b));
System.out.println(g.equals(a + b));
输出是:
true
false
true
true
true
false没搞懂,为啥?
解决方案 »
- 关于 netflow V5的流量统计
- osgi和maven的问题
- 急!!Mysql查询问题
- Hibernate 处理 clob报错
- jtable问题,来大牛解决了啊【急求】分不是问题
- 急用,怎样在bat文件中添加环境变量?
- 请教jboss-IDE的安装设置问题,3X
- Log4j在Tomcat下的初始化问题?
- 请问有用jdk1.4 和 jdbc 连接sqlserver成功的吗.
- tomcat上面项目运行正常,weblogic下面出现•There is no Action mapped for namespace [/] and acti
- jsp登陆过滤器
- springdm 通过jee:remote-slsb 请求EJB报RMI class loader disabled
Integer f = 321;System.out.println(e == f);最有争议的应该是这个正如1楼所说当值是 -128 ~ 127 的时候 Integer判断是直接用的int原始数据类型 所以为 == 为true 当超出这个范围的时候 则是new了一个对象 == 就为false了
也就是说 当 值是 -128 ~ 127 时是用 Integer i = 100;
等效于
Integer i = Integer.valuseOf(100);当不是以上范围的时候 使用的是 Integer i = 200;
等效于
Integer i = new Integer(200);