主要是一点小疑问想弄清楚
在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';
相队于上面又如何解释呢?
------解决方案--------------------------------------------------------
Character是char的封装类,就像Interger之于int一样。
之于为什么1.5能让你直接赋值的话,那是编译器的功劳,你用就好了,就和String是一样的。
之于对象的回收,还是不要管他了。
另外你说char是基本类型没错,但是String不是,String是对象,不是基本类型,跟不要说StringBuffer了。
------解决方案--------------------------------------------------------
看看有关auto-boxing与auto-unboxing的知识就好了
现在就别看那么老的书了,免得到时候泛型和Annotation你又不懂得是什么
直接看看Core Java 或Java Tutorial比其他的都好
一个对象没有被引用的时候就有可能被垃圾回收器回收
Character是char的Wrapper类,把char打包成对象,提供一些方法(但对于这个对象在哪里就还没有研究了,可能有些复杂吧),与String和StringBuffer的区别没有关系
------解决方案--------------------------------------------------------
大家说的不错,1.5中增加了auto-boxing与auto-unboxing,character是char的封装类,他的对象是new 出来的,是放在堆里的,而char a = 'c'这里的c是放在栈里的,而放在堆里的对象当没有引用指向他的时候就会被当成垃圾回收掉