final修饰的变量到底能变不能?
不能变是肯定的,但是有能不能变这个问题肯定是有表象看似能变的,
当这个变量是基本数据类型的时候就是怎么都不能变的
当这个变量是引用类型的话,实际上这个变量只是一个地址,
这个地址也是肯定不能变的,但是这个地址指向地方内的东西是可以改变的,
例如
final StringBuilder sb = new StringBuilder("abc");
sb= new StringBuilder("def");//错误的一行
上面一行是错误的,sb这个变量指向的地址值是不可以变的,但是如果上面一行是下面这句
sb.append("d");//对的一行
如果现在打印sb的值,就会输出abcd
可见在sb内部的值已经发生了改变,但是sb的地址值是没有变化的。
希望上面的废话能帮助你,谢谢观看!