final修饰的变量到底能变不能?

不能变是肯定的,但是有能不能变这个问题肯定是有表象看似能变的,

当这个变量是基本数据类型的时候就是怎么都不能变的

 

当这个变量是引用类型的话,实际上这个变量只是一个地址,

这个地址也是肯定不能变的,但是这个地址指向地方内的东西是可以改变的,

例如

 

final StringBuilder sb = new StringBuilder("abc");
sb= new StringBuilder("def");//错误的一行
上面一行是错误的,sb这个变量指向的地址值是不可以变的,但是如果上面一行是下面这句
sb.append("d");//对的一行
如果现在打印sb的值,就会输出abcd
可见在sb内部的值已经发生了改变,但是sb的地址值是没有变化的。
希望上面的废话能帮助你,谢谢观看!


 

posted @ 2019-08-18 17:52  吃喵的鱼喵喵喵  阅读(1250)  评论(0编辑  收藏  举报