Java的两种数据类型,primitive,referance到底值什么样的。什么样的是referance型的?
还有"=="和"equals"各比较什么类型的,老分不清楚,能分类说明一下吗?
谢谢各位了!

解决方案 »

  1.   

    primitive是指基础型别,reference是指对象的引用:)
    ----------------------------------------------------------------------------
     比较方式 |     基础型别     |                    对象                     |
    ----------------------------------------------------------------------------
        ==    |  比较值是否相等  |       比较两个引用是否指向同一实例(堆)      |
    ----------------------------------------------------------------------------
      equals  |     不能比较     | 比较两个对象的实例中忧关相等性的属性是否相等|
    ----------------------------------------------------------------------------
    对象之间的比较涉及到很多内容,比如equals的实现等,推荐新手去看《Practical Java》,一定会给你带来很大的帮助:)
      

  2.   

    楼上的说的真清楚!
    对于对象的话== 就是说你定义的变量的值是不是相同(这个变量的值其实是指向实例化于堆中的
    对象的)比如说Character char1 = new Character('c');这个char1中存的是new Character('c')
    这个对象的地址,如果 Character char2 = new Character('c') ,那么char2.equals(char1)的结果
    将是true而char2==char1的结果是fales. 但是Character char3 =char1;的话,char3==char1就是
    true.因为他们指向的是同一个对象(地址相同).equlas只管对象的内容.内容相同就为TRUR.
    这个是楼上的唐僧版.:)
      

  3.   

    1,除了byte,boolean,short,int,long,double,float 其他都是reference的
    2,==是比较对象是否是同一个。比如你老爸叫你儿子,你老板叫你小星,呵呵,==就是比较这个儿子是不是小星。明白了
     equals是可以被覆盖重写的,要根据具体情况来说,一般是比较是否含有相同的状态。
      

  4.   

    楼上的说的很清楚了,我再补充一下:==和!=操作符比较的是对象的引用(基本类型除外), equals()比较的是对象的内容。不过这里要注意:
    equals()的缺省行为也是拿refrences来比较。所以你自己新建立的类,要覆写equals()。Java标准库中的大多数class都覆写了equals()。