`
咖啡猪猪
  • 浏览: 16455 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Integer对象 == 的真相

阅读更多

今天偶然看到一篇帖子,竞猜

 

Integer a=10;
Integer b=10;
Integer c=new Integer(10);
Integer d=new Integer(10);
        
System.out.println(a==b);
System.out.println(c==d);
        
System.out.println(a.equals(b));
System.out.println(c.equals(d));
        
System.out.println(a.equals(c));
 

 

结果为

 

true
false
true
true
true
 

 

关于equals() 方法就不提了,这里主要说一下 ==

 

再看一个例子

 

Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a == b);
System.out.println(c == d);
 

 

结果为

 

true
false
 

 

答案解析:

1.== 比较的是对象的引用

当且仅当比较的两个引用指向同一对象才返回true

 

2.Integer i = XXX

看看Integer 的源代码就知道了,其实就是Integer-127-128 之间的每个值都建立了一个对应的Integer 对象,类似一个缓存。由于Integer 是不可变类,因此这些缓存的Integer 对象可以安全的重复使用。

   Integer i = XXX ,就是Integer i = Interger.valueOf(XXX), 首先判断XXX 是否在-127-127 之间,如果是直接return 已经存在的对象,否则就只能new 一个了。

分享到:
评论
1 楼 jinyuhanxue 2009-11-24  
李组长的文章总是那么的言简意赅,顶下~

相关推荐

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    动态创建菜单、树

    integer width = 1381 integer height = 620 boolean titlebar = true string title = "Untitled" boolean controlmenu = true windowtype windowtype = response! long backcolor = 67108864 string icon = "App...

    用VHDL语言编写的VGA显示彩条

    constant h_data: integer:=640; constant h_front: integer:=16; constant h_back: integer:=48; constant h_sync: integer:=96; constant h_period: integer:= h_sync + h_data + h_front + h_back; -- ...

    用st控件来做spliter分割条

    Integer ii_barwidth = -1 // Default to negative value. long il_barcolor=78682240 long il_barmovecolor=8421504 integer ii_minobjectsize = 20 boolean ib_performredraw=True //-- Internal ...

    VHDL语言写的电子钟程序

    实验目的: 实现时钟显示,1——12——1——11——0——1循环,时钟调时,闹铃,闹铃定时等功能。 程序和注释: ...signal beep_m1,beep_m2,beep_h1,beep_h2:integer:=1; signal AM_PM:std_logic:='0';

    经典面试题:Integer c=100,d=100,c==d 一定是false吗?.zip

    计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料 计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料 计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料 计算机技术、IT咨询、人工智能AI理论介绍,...

    Integer创建对象

    可以作为初学者的参考,让你更加了解java基础的一些必须掌握的知识。

    VB经典的程序设计题.doc

    累加求和1到100 Private Sub Command1_Click() Dim i As Integer, sum As Integer sum = 0 For i = 1 To 100 sum = sum + i Next Text1.Text = sum End Sub Private Sub Command2_Click() End End Sub 1到100的奇数...

    Integer类的缓存机制

    存在下述例子,判断其输出结果。 public class Main{ public static void main(String[] agrs){ Integer a = 110;...我们知道,在Java中存在基本数据类型和引用数据类型,而Integer作为int的封装类,Integer

    Add Digits

    一个给定的正整数,循环的将每一位相加,只要得到的结果是大于10的数,就继续循环相加

    基于cyclone2 FPGA设计的VGA显示Quartus工程VHDL源码+文档说明.rar

    基于cyclone2 FPGA设计的VGA显示飞机小游戏Quartus工程源码+文档说明 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;...-- life_enemy:in integer

    面试中很多人走过的坑,看完让你知道Integer和Int

    Integer i=new Integer(1); Integer j=new Integer(1);  System.out.println(i==j);//false Integer m=1; Integer n=1; System.out.println(m==n);//true Integer x=128; Integer y=128; System.out.println(x==y);...

    NDI_Dec.zip

    VID_ADDR_WIDTH : integer := 32; VID_BURST_WIDTH : integer := 8; VID_BURST_LENGTH : integer := 8; NDI_ADDR_WIDTH : integer := 32; NDI_BURST_WIDTH : integer := 8; NDI_BURST_LENGTH : integer := 8 ...

    Java int与integer的区别

     int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象  1.Java 中的数据类型分为基本数据类型和复杂数据类型  int 是前者而integer 是后者(也是一个类);因此在类进行初始化时int类的变量...

    义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。编程:

    义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。编程: (1) 判断两个inergerSet类对象S1和S2是否相等。提示:集合相等的前提是所有元素相等。 (2)...

    DMA.rar_dma_dma controller_out

    ADDR_WIDTH : integer := 16 -- default value DATA_WIDTH : integer := 16 -- default value ) port ( RESET_L : in std_logic CLK : in std_logic DRQ_L : in std_logic DMAACK_L : in std_logic ...

    考勤机接口调用(POs收费机)汇多

    /此公用文件主要是对考勤机操作, 如果对收费机操作则可参考此文件定义结构即可. unit uPublic; interface Uses Windows , SysUtils , QForms , StdCtrls ,... function GetSizeOfData(pCommand: Pointer): Integer...

    VB Socket 异步通信框架代码.rar

     Public Const SFJ_Pro_SegmentLength As Integer = 1024  '数据包的数据长度部分占字节位数  Public Const SFJ_Pro_Packet_DataLen_Byte_Num As Integer = 8  '数据包的数据类型部分占字节位数  Public ...

    【Java学习】Integer.ValueOf()引发的血案

    在这里拿出Integer a = 59,Integer b = 59,这种又会出现什么状况呢,如果按照装箱和拆箱来看就是true,如果按照对象来看,就是false,在你举棋不定得时候你就应该看看源码了。 /** * Cache to support the ...

Global site tag (gtag.js) - Google Analytics