打印 基本变量所在栈中的地址和一个堆中的对象的地址 对编程有什么重要的意义吗?java不需要地址。

解决方案 »

  1.   

    同意jgo(航海家) 
    在Java中,内存地址确实没有什么意义--它没有为你提供对内存进行操作的接口。
    JDK的实现中,经常偷懒(猜测:))把toString()方法写作打印对象的内存地址,反倒不如JGL中自然:
    // Copyright(c) 1996,1997 ObjectSpace, Inc.
    import com.objectspace.jgl.*;
    import com.objectspace.jgl.algorithms.*;public class Overview4
      {
      public static void main( String[] args )
        {
        Array array = new Array();
        array.add( new Integer( 3 ) );
        array.add( new Integer( -1 ) );
        array.add( new Integer( 2 ) );
        System.out.println( "Unsorted Array = " + array );
        Sorting.sort( array );
        System.out.println( "Sorted = " + array );
        }
      }Output
    Unsorted Array = Array( 3, -1, 2 )
    Sorted = Array( -1, 2, 3 )
      

  2.   

    正如JAXP或JDOM的设计中,Node对象的toString()方法就没起到以下的作用:
    // Xml文件中实际存放
    <Node>Value</Node>
    客户程序员要求的node.toString(),不是毫无意义的打印内存地址或是告知类的名称,我想,大部分人还是需要这样的结果
    node.toString() = "<Node>Value</Node>";
    --这是我前几天在Java版上看到一位朋友的问题时有感而发的,一点私人意见。
    延伸到软件工程,我认为:我们永远不能臆断客户的需求,客户想要的,才是我们该做的。
    鄙薄之见,请多指教!
      

  3.   

    对象的equals()方法不可以吗?
      

  4.   

    equals和instanceof应该可以满足对象的判断。
    基本变量的地址java中无法得到。
      

  5.   

    对于一般的对象,如果是指向的是同一个对象(句柄相同),用==就可以比较如果你没有重载equals(),他与==含义一样,不过常常重载为比较内容相等。String a,b,c;
    a=new String("aa");
    b=a;
    c=new String("aa");a==b 是true;
    a==c 是false;a.equals(c) 是true;
      

  6.   

    System.out.println自动调用toString 方法,如何不然它调用?