`

Double Integer

 
阅读更多
                   
                    Double d=2.0;
		  Double d1=2.0;
 Double d2=3.0;
 Double d3=1111.0;
		  System.out.println(d==d1);//false
		  
		  Integer i=1;
		  Integer i1=1;
		  Integer i2=new Integer(1111);//
		  System.out.println(i==i1);//true
		  
		 


要搞清为什么这么输出,得看字节码

//    0    0:ldc2w           #2   <Double 2D>
    //    1    3:invokestatic    #4   <Method Double Double.valueOf(double)>
    //    2    6:astore_1        
    //    3    7:ldc2w           #2   <Double 2D>//从常量池中得到Double
    //    4   10:invokestatic    #4   <Method Double Double.valueOf(double)>
//通过Double.valueOf得到了Double对象!所以虽然树值一样!但不是一个对象!
    //    5   13:astore_2        
    //    6   14:ldc2w           #5   <Double 3D>
    //    7   17:invokestatic    #4   <Method Double Double.valueOf(double)>
    //    8   20:astore_3        
    //    9   21:ldc2w           #7   <Double 1111D>
    //   10   24:invokestatic    #4   <Method Double Double.valueOf(double)>
    //   11   27:astore          4
    //   12   29:getstatic       #9   <Field PrintStream System.out>
    //   13   32:aload_1         
    //   14   33:aload_2         
    //   15   34:if_acmpne       41
    //   16   37:iconst_1        
    //   17   38:goto            42
    //   18   41:iconst_0        
    //   19   42:invokevirtual   #10  <Method void PrintStream.println(boolean)>
    //   20   45:iconst_1        
    //   21   46:invokestatic    #11  <Method Integer Integer.valueOf(int)>
    //   22   49:astore          5
    //   23   51:iconst_1        
    //   24   52:invokestatic    #11  <Method Integer Integer.valueOf(int)>
    //   25   55:astore          6
    //   26   57:new             #12  <Class Integer>
    //   27   60:dup             
    //   28   61:sipush          1111
    //   29   64:invokespecial   #13  <Method void Integer(int)>
    //   30   67:astore          7
    //   31   69:getstatic       #9   <Field PrintStream System.out>
    //   32   72:aload           5
    //   33   74:aload           6
    //   34   76:if_acmpne       83
    //   35   79:iconst_1        
    //   36   80:goto            84
    //   37   83:iconst_0        
    //   38   84:invokevirtual   #10  <Method void PrintStream.println(boolean)>
    //   39   87:getstatic       #9   <Field PrintStream System.out>
    //   40   90:aload           7
    //   41   92:aload           6
    //   42   94:if_acmpne       101
    //   43   97:iconst_1        
    //   44   98:goto            102
    //   45  101:iconst_0        
    //   46  102:invokevirtual   #10  <Method void PrintStream.println(boolean)>
    //   47  105:return    

double d4=3.0;

如果class文件中只有这一句
看字节码
//    0    0:ldc2w           #2   <Double 5D>
    //    1    3:dstore_1        
    //    2    4:return        

而Integer对象-127-128是在常量池中!
Integer i=1;
字节码是
  //Integer integer = Integer.valueOf(1);
 //    2    4:iconst_1        
    //    3    5:invokestatic    #4   <Method Integer Integer.valueOf(int)>



当Integer i=200
则会打印出false;
分享到:
评论

相关推荐

    基于C++的求积分方法(辛普生法)代码

    double integer (double (*func)(double),double a,double b) { //辛普生法求积分 double result,delta_x; delta_x=(b-a)/100; double p=0,q=0; for(int i=1;i;i+=2) p+=func((a+delta_x*i)); for(int j=2;j;...

    STl语句指令表

    - **ITD (INTEGER TO DOUBLE INTEGER)**:将16位整型转换为32位长整型。 - **DTB (DOUBLE INTEGER TO BCD)**:将32位长整型转换为BCD码。 - **DTR (DOUBLE INTEGER TO REAL)**:将32位长整型转换为32位浮点数(IEEE...

    C++将数字字符串转化为单个数字

    double integerPart = 0, decimalPart = 0; bool isDecimal = false; for (char c : str) { if (isdigit(c)) { if (isDecimal) { decimalPart = decimalPart * 10 + (c - '0'); } else { integerPart = ...

    完美解决gson将Integer默认转换成Double的问题

    完美解决Gson将Integer默认转换成Double的问题 Gson是Google开发的一款JSON解析库,广泛应用于Android和Java开发中。然而,在使用Gson时,经常会遇到一个问题,即Gson会将Integer类型的值默认转换成Double类型。这...

    S7-300的数据类型

    6. 32位整数(DINT,Double Integer):32位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。 7. 浮点数(R,Real):浮点数为32位,可以用来表示小数。...

    [MMS_041233]Convert DINT to INT in Logix controllers.rar

    "MMS_041233 Convert DINT to INT in Logix controllers"这个标题揭示了我们讨论的主题:在Logix控制器中将DINT(Double Integer)数据类型转换为INT(Integer)数据类型。这通常是编程过程中的一个常见操作,因为...

    [MMS_046361]Reversing Bit Order in a INT-DINT.rar

    INT和DINT是AB PLC中的数据类型,它们分别代表整型(Integer)和双整型(Double Integer)。INT占用16位,可以表示-32768到32767之间的整数,而DINT则占用32位,能够表示-2^31到2^31-1的整数范围。 二进制位顺序...

    [MMS_040318]DINT data type to String data type conversion.rar

    DINT,即Double Integer,是PLC中的一种整型数据类型,它占用32位,可以存储-2^31至2^31-1之间的整数值。而String数据类型则用于存储文本信息,它可以包含任意长度的字符序列。 转换过程通常涉及编程指令的使用。在...

    [MMS_053014]Divide LINT by DINT.rar

    本资料“[MMS_053014]Divide LINT by DINT.rar”显然是一个关于AB PLC编程的教程或示例程序,重点在于讲解如何在LINT(Long Integer,长整型)数据类型和DINT(Double Integer,双整型)数据类型之间进行除法运算。...

    [MMS_049408]Convert DINT SIG to UNSIG.rar

    本资料 "[MMS_049408]Convert DINT SIG to UNSIG.rar" 提供了一个关于AB PLC编程的示例,主要涉及到数据类型转换的问题,特别是如何将DINT(Double Integer)类型的信号转换为UNSIG(Unsigned,无符号)类型。...

    第7章PLC 的功能指令 .ppt

    - **完全整数乘法指令** (Multiply Integer to Double Integer): - 输入端:IN1 和 IN2 分别表示两个16位有符号整数。 - 输出端:OUT 指定存储结果的位置。 - 该指令将两个16位整数相乘,产生一个32位双整数乘积...

    FORTRAN+库函数及其调用

    integer(C_INT), intent(in) :: a real(C_DOUBLE), intent(in) :: b real(C_DOUBLE), intent(out) :: result end subroutine c_func end interface call c_func(3, 2.5, res) ``` - Fortran创建库函数供其他...

    java-16位内存数据转化为double型

    int v = Integer.parseInt(hex.substring(index, index + 2), 16); bytes[i] = (byte) v; } ByteBuffer bb = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN); return bb.getDouble(); } } ``` 这段Java...

    java\String类型转换成整数double

    除了`parseXxx`系列方法,Java还提供了另一种方式来实现字符串到数值的转换,即通过`Double.valueOf`和`Integer.valueOf`方法。 #### `Double.valueOf(String s)` `Double.valueOf`方法同样接收一个字符串参数,并...

    Integer类的使用方法

    - **获取值的方法**:如`intValue()`, `longValue()`, `floatValue()`, `doubleValue()`用于获取`Integer`对象的不同数值类型表示。 - **其他方法**:如`hashCode()`, `equals(Object obj)`用于判断对象的相等性。 ...

    西门子SIMATIC S7-200软件技术问题.zip

    西门子SIMATIC S7-200软件技术问题zip,西门子SIMATIC S7-200软件技术问题:如何在 STEP 7 Micro/WIN 中将双整数 (DOUBLE INTEGER) 转换为 BCD 码 (或者反之) ?

    Integer创建对象

    Java提供了八种基本类型的包装类,包括`Boolean`, `Byte`, `Character`, `Short`, `Integer`, `Long`, `Float`, 和 `Double`。这些类允许我们将基本类型与面向对象的特性结合使用。 在Java中,当我们用如下方式创建...

    将 BigDecimal 类型转换为 Integer 类型.pdf

    除了 `intValue()` 和 `toBigInteger().intValueExact()`,BigDecimal 还提供了其他转换方法,如 `longValue()`、`doubleValue()` 等,以适应不同的需求。但是,同样需要注意这些方法可能引发的溢出或精度损失问题...

    Java中int和Integer的区别.doc.doc

    除了 int 和 Integer 之外,Java 还有其他的内建类型,如 float 和 Float、double 和 Double、string 和 String 等。这些类型都有着相似的关系。 ```java float f = 3.14f; Float fO = new Float(f); double d = ...

Global site tag (gtag.js) - Google Analytics