主要是一点小疑问想弄清楚
在JDK1.4.2如果直接编写
Character a='c';
编译后会提示错误,要求用char。
而JDK1。5后就可以成功编译,现在看的老书都还没介绍Charater的,都是1.42版本的书
看了一些资料说Charater是作为对象而存在的,值不能更改;而char只是原始数据类型。
是不是就和String、StringBuffer的区别是一样的。
比如我用
  Character a='c';
  Character a='b';
  会出现什么情况?是不是对象'c'成为垃圾被回收?
而如果是
  char a='c';
  char a='b';
  相队于上面又如何解释呢?     

解决方案 »

  1.   

    Character是char的封装类,就像Interger之于int一样。之于为什么1.5能让你直接赋值的话,那是编译器的功劳,你用就好了,就和String是一样的。之于对象的回收,还是不要管他了。
    另外你说char是基本类型没错,但是String不是,String是对象,不是基本类型,跟不要说StringBuffer了。
      

  2.   

    看看有关auto-boxing与auto-unboxing的知识就好了
    现在就别看那么老的书了,免得到时候泛型和Annotation你又不懂得是什么
    直接看看Core Java 或Java Tutorial比其他的都好
    一个对象没有被引用的时候就有可能被垃圾回收器回收
    Character是char的Wrapper类,把char打包成对象,提供一些方法(但对于这个对象在哪里就还没有研究了,可能有些复杂吧),与String和StringBuffer的区别没有关系
      

  3.   

    自动装箱和自动解箱。是现在Java的新特性。
      

  4.   

    char是基本类型的数据,Charater是封装成的类;他们的关系就像int和Integer之间的关系.
      

  5.   

    建议看看自动装箱、拆箱的内容,建议看新版本的core java
    String 和StringBuffer都是引用类型,跟char没什么可比性!
      

  6.   

    Character 是一个包装类.  和Integer相对与int一样
    在 jdk 1.5后增加了自动装箱和自动拆箱 应该方便了很多。
      

  7.   

    大家说的不错,1.5中增加了auto-boxing与auto-unboxing,character是char的封装类,他的对象是new 出来的,是放在堆里的,而char a = 'c'这里的c是放在栈里的,而放在堆里的对象当没有引用指向他的时候就会被当成垃圾回收掉
      

  8.   

    大家说的不错,1.5中增加了auto-boxing与auto-unboxing,character是char的封装类,他的对象是new 出来的,是放在堆里的,而char a = 'c'这里的c是放在栈里的,而放在堆里的对象当没有引用指向他的时候就会被当成垃圾回收掉