当前位置:  技术问答>java开发知识 iis7站长之家

"Integer对象是不可变的"-----关于final和封装器的问题,望高手指点!

    来源: 互联网  发布时间:2015-11-16

    本文导语:  比如,封装器Integer是final的,我们不能从它派生自己的类. 书上又说不能利用封装器来改变一个数字参数,因为"Integer对象是不可变"的. 这里的不可变是因为Integer类是final的原因吗???? | 1.不可变,...

比如,封装器Integer是final的,我们不能从它派生自己的类.
书上又说不能利用封装器来改变一个数字参数,因为"Integer对象是不可变"的.
这里的不可变是因为Integer类是final的原因吗????

|
1.不可变,也即英文的immutable性是指一个对象一旦生成后,以后该对象的状态不能被改变。其实不可变性只是类没有定义改变属性的方法而已。如果类定义了可以改变属性的方法,那么给类就是可变的。
2.final,final是一个修饰符,表明该类为最终类,不能被别人继承。这跟不可变性没有任何挂钩。也就是说一个final类,可以不是immutable的,只要定义了相应的方法。
3.Wrapper类,全部是final类、同时也是immutable的

|
不可变,英文叫做:immutable.
Java并没有immutable keyword.immutable是由代码来保证的。
比如:
class Int{
   private final int i;
   Int(int i){this.i=i;}
   int getValue(){return i;}
   Int add(int j){return new Int(i+j);}
}
这里,Int就是immutable的。一旦你生成了一个Int对象,它的状态永不改变。


对类的final声明只是保证它不能被继承。
之所以Integer类要被声明为"final", 是因为它要保证任何一个Integer的对象的状态都不会变化,害怕子类会不遵循这个immutable的规定。

|
你说对了,Integer等引用类都是final的

|
被申明为final的类是不能被继承的

|
fianl关键字是表示此类不可被继承,与"Integer对象是不可改变的"没有直接关系。
"Integer对象是不可改变的"指的是任何对一个Integer类的实例的操作都会产生一个新的对象!
一定要弄清。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang类integer的类成员方法: integer定义及介绍
  • Integer test(Integer i)=Int test(Int i) ??
  • java命名空间java.lang类integer的类成员方法: compareto定义及介绍
  • 新手的问题,想请教下,integer.parseInt(s)和(Integer)s.initValue()有什么不同吗
  • java命名空间javax.management.openmbean类simpletype<t>的类成员方法: integer定义及介绍
  • 如何把包含Vector的一个Vector转换成Integer[][]??
  • java命名空间java.sql类types的类成员方法: integer定义及介绍
  • 为什么Integer与int不一样??
  • java命名空间java.text类numberformat.field的类成员方法: integer定义及介绍
  • 怎样改变对象Integer的值?
  • java命名空间java.lang类integer的类成员方法: valueof定义及介绍
  • Integer.parseInt出錯,爲什麽?
  • java命名空间java.lang类integer的类成员方法: size定义及介绍
  • Integer类型不能进行算术运算?
  • java命名空间java.lang类integer的类成员方法: type定义及介绍
  • 请问:不做循环能直接把Integer[]转为int[]吗?
  • java命名空间java.text类numberformat的类成员方法: integer_field定义及介绍
  • Integer类的问题????????
  • java命名空间javax.imageio.metadata接口iiometadataformat的类成员方法: datatype_integer定义及介绍
  • int 与 Integer 的区别?
  • java命名空间java.lang类integer的类成员方法: hashcode定义及介绍
  • 类型转换的问题Integer.parseInt


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3