final修饰局部变量的问题
fianl关键字详情参考
博客名称 | 链接地址 |
---|---|
day09Java-final关键字 | https://blog.csdn.net/qq_40332952/article/details/104709990 |
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
被final修饰的基本类型就不说了太简单
被final修饰的引用类型不能再给对象变量赋值,当然可以修改对象变量中的属性值。
代码演示
class Student {
int age = 10;
}
class FinalTest {
public static void main(String[] args) {
//局部变量是基本数据类型
int x = 10;
x = 100;
System.out.println(x);
final int y = 10;
//无法为最终变量y分配值
//y = 100;
System.out.println(y);
System.out.println("--------------");
//局部变量是引用数据类型
Student s = new Student();
System.out.println(s.age);
s.age = 100;
System.out.println(s.age);
System.out.println("--------------");
final Student ss = new Student();
System.out.println(ss.age);
ss.age = 100;
System.out.println(ss.age);
//重新分配内存空间
//无法为最终变量ss分配值
ss = new Student();
}
}