收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

威尼斯人线上赌博注册 

交流首页 » Java »Integer 创建对象在-128到127的奇怪问题  XML
发表人 内容
jsHelper
[头像]

交流经验:
总积分:110
级别:普通会员
注册时间: 2011-11-08
文章: 5
离线

 

java代码:
import java.util.*;
public class A {
    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));
         System.out.println(System.identityHashCode(d));

//实际上在我们用Integer a = 数字;来赋值的时候Integer这个类是调用的public static Integer valueOf(int i)这个方法。
//public static Integer valueOf(int i) {
//        if(i >= -128 && i <= IntegerCache.high)
//            return IntegerCache.cache[i + 128];
//        else
//            return new Integer(i);
//    }
//我们来看看ValueOf(int i)的代码,可以发现他对传入参数i做了一个if判断。在-128<=i<=127的时候是直接用的int原始数据类型,而超出了这个范围则是new了一个对象。我们//知道"=="符号在比较对象的时候是比较的内存地址,而对于原始数据类型是直接比对的数据值。那么这个问题就解决了。
//至于为什么用int型的时候值会在-128<=i<=127范围呢呢?我们知道八位二进制的表示的范围正好就是-128到127。大概就是因为这吧。

         System.out.println(c == d);//true  -128~127是true
         System.out.println(e == f);//false
         System.out.println(c == (a+b));//true
         System.out.println(c.equals(a+b));//true
         System.out.println(g == (a+b));//true
         System.out.println(g.equals(a+b));//false 类型不一样

    }
}

 

这篇文章被编辑了 1 次. 最近一次更新是在 2011-11-08 15:43:47


推广链接
精品视频课程推荐

Java Web开发理论部分视频教程
系统掌握开发实际的Java Web应用所需的理论知识和技能(Servlet、Jsp、JavaBean、TagLib、EL、JSTL、MVC模式、连接池DataSource、JNDI等知识)。涉及项目:在线投票计数、在线人数统计、登录检查、购物车、商品管理、非法字符替换等多个随堂演示小应用。

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

研磨设计模式——跟着cc学设计系列视频教程
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......

Ajax+JSON基础实战视频教程
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用

Javascript基础视频教程
JavaScript的内置对象--Array、String、Date、Math等,可以通过DOM对象进行对象控制,创建控制菜单及复选框的控制,创建二级联动列表框及列表框选项的移动,JavaScript项目,创建基于JS的商品管理系统。

 
交流首页 » Java
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网

博聚网
博聚网