一个关于封装类的问题
比如 Integer 和int
Integer a=2// Integer a=Integer.valueof(2);a=a+1;a++因为封装类是不可变的 finnal 那我是不是可以理解 a=a+1 // a等于3 实际上是a指向内存的新的空间,空间内是值3 原来的a的值并没有变是这样理解嘛?谢谢了

解决方案 »

  1.   

    虽然封装了没加finnal 还是可以改
      

  2.   

    没明白,什么意思?我的理解是不是对的?
    你的意思是 Integer a 的value改变了?
      

  3.   

    楼主的理解应该是正确的,Integer.valueof(2)应该说明了一切
    封装类是final的说明此类不可被继承 , final class 与 final field是有区别的。
      

  4.   

    楼主理解正确的吧,和string一样,a=a+1;a++都是新建了对象,原来的对象并没有改变,只是引用改变了
      

  5.   

    lz是对的对于基本类型的包装类和String类等都是不可变类,即没有提供改变这些对象的状态的方法(内部属性)。所以对它们的操作返回的都是一个新的对象。a=a+1和a++都产生了新的对象,原对象不变。但是不可变类与final是没有必然关系的,final知识不运行它被继承。