`

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;...

    S7-300的数据类型

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

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

    下面小编就为大家带来一篇完美解决gson将Integer默认转换成Double的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

    Java中int和Integer的区别.doc

    * double 和 Double * string 和 String 这些外覆类提供了许多有用的方法,可以方便地将内建类型转换为对象类型。 5. 使用场景 在实际开发中,我们经常需要将内建类型转换为对象类型,以便于将它们添加到集合中,...

    Fibonacci_double

    Fibonacci double PrintWriter BufferedWriter FileWriter Integer.parseInt BufferedReader InputStreamReader System.in readLine

    java 举例分析 equals hashcode 基本类型与基本对象的比较 shot与Short int与Integer long与Long

    举例分析 equals 和 hashcode 方法,hashcode应该怎么样生成 8个基本类型与基本对象的比较:byte与Byte shot与Short int与Integer long与Long float与Float double与Double char与Character

    精确计算工具类

    public static double div(double v1, double v2, int scale) { if (scale ) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal...

    Java数据类型及其转换详解

    ⑴ Java简单类型与封装类 我们知道,Java语言是...当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于是,Java中就有了诸如int和Integer(float和Float、double和Double……)的不同的数据类型。

    Mysql支持的数据类型(总结)

     Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。  扩展后增加了TINYINT,...

    JSP学习之数据库开发小结

    本文总结了JSP学习之数据库开发方法。...1&gt;数字类型 INTEGER SMALLINT REAL NUMERIC DECIMAL FLOAT DOUBLE… 2&gt;日期和时间类型 TIMESTAMP DATE TIME… 3&gt;字符和字符串类型 CHARACTER CHAR VARCHAR… 聚合函数:AVG()

    Java试题-6:JavaBean的应用

    1.boolean/Boolean 2.int/Integer 3.String 4.double/Double 属性名未知, 现在要给这些属性设置默认值, 以下是要求的默认值:String类型的默认值为字符串 www.itheima.com , int/Integer类型的默认值为100, boolean...

    DFT的matlab源代码-fft_three_ways:FFT为“double”,“float”和定点整数

    DFT的matlab源代码fft_three_ways FFT为“ double”,“ float”和定点整数。 这样我就可以评估相对性能和相对误差 它生成带符号的24位随机复数值,然后对其进行FFT。...Integer FFT 0.001339300 secs

    Java 2实用教程(第三版)实验指导与习题解答

    Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 ... yourGuess=Integer.parseInt(str); while(yourGuess!=realNumber) //循环条件 ...

    VB经典的程序设计题.doc

    累加求和1到100 Private Sub Command1_Click() Dim i As Integer, sum ... Private Sub Command1_Click() Dim fact As Double, n As Integer, i As Integer n = Val(Text1.Text) fact = 1 For i = 1 To n fact = fact *

    java常用类的使用方法.pdf

    Java语言中提供了多种常用类,例如Integer类、Float类、Double类、Character类、String类、StringTokenizer类、StringBuffer类、Random类等,这些类提供了许多实用的方法,以便开发者更方便地进行编程。本文将详细...

    import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int f = Integer.parseInt(br.re

    import java.io.*; public class FirstPart{ public static void main(String[] ...int f = Integer.parseInt(br.readLine()); double c=5*(f-32); c=c/9; System.out.println("Changing it to Celsius is "+c); } }

    java中String类型转换方法.pdf

    double d = Double.valueOf(str).doubleValue();` 字符串到长整型 将字符串转换为长整型可以使用以下方法: * 使用 `Long.parseLong()` 方法:`String str = "42"; long l = Long.parseLong(str);` * 使用 `Long...

    数据治理-词根整理合并初版数据字典

    100024 个数(数量) Count 词根 21-整数 Cnt Int INTEGER INTEGER 8 100025 币种 Currency 词根 32-代码 Cur String VARCHAR VARCHAR 4 100026 周期值 Cycle 词根 23-浮点数 Cyc Double DECIMAL DEC

Global site tag (gtag.js) - Google Analytics